Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Jun 2015 12:22:30 +0000
From:      Justin Jesse <t-jjesse@bryanstudents.net>
To:        "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn-src-head Digest, Vol 137, Issue 12
Message-ID:  <F7B584ECE8313E2C.1-5ca8cfb8-69cc-4178-9f2d-9614d294d4aa@mail.outlook.com>
In-Reply-To: <mailman.119.1434110402.74957.svn-src-head@freebsd.org>
References:  <mailman.119.1434110402.74957.svn-src-head@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In English what exactly this all in reference too?

Sent by Outlook<http://taps.io/outlookmobile>; for Android



On Fri, Jun 12, 2015 at 5:00 AM -0700, "svn-src-head-request@freebsd.org" <=
svn-src-head-request@freebsd.org<mailto:svn-src-head-request@freebsd.org>> =
wrote:

Send svn-src-head mailing list submissions to
        svn-src-head@freebsd.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.freebsd.org/mailman/listinfo/svn-src-head
or, via email, send a message with subject or body 'help' to
        svn-src-head-request@freebsd.org

You can reach the person managing the list at
        svn-src-head-owner@freebsd.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of svn-src-head digest..."


Today's Topics:

   1. svn commit: r284309 - head/cddl/contrib/opensolaris/cmd/zfs
      (Andriy Gapon)
   2. svn commit: r284310 - in head/sys: fs/tmpfs kern vm
      (Gleb Smirnoff)


----------------------------------------------------------------------

Message: 1
Date: Fri, 12 Jun 2015 11:21:36 +0000 (UTC)
From: Andriy Gapon <avg@FreeBSD.org>
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
        svn-src-head@freebsd.org
Subject: svn commit: r284309 - head/cddl/contrib/opensolaris/cmd/zfs
Message-ID: <201506121121.t5CBLa7n032611@svn.freebsd.org>
Content-Type: text/plain; charset=3DUTF-8

Author: avg
Date: Fri Jun 12 11:21:35 2015
New Revision: 284309
URL: https://svnweb.freebsd.org/changeset/base/284309

Log:
  zfs clone should not mount the clone if canmount =3D=3D noauto

  Creation of a new filesystem does not imply an intent to mount it.

  Since canmount property is not inherited and its default value is 'on',
  the only scenario where this matters is zfs clone -o canmount=3Dnoauto.
  zfs create -o canmount=3Dnoauto already does not mount the new filesystem=
.

  Also see:
  https://www.illumos.org/issues/5984
  https://reviews.csiden.org/r/228/
  https://github.com/FransUrbo/zfs/commit/dd0e0e69f5b1c83bf2895ac00a0b83af7=
7473175
  https://github.com/zfsonlinux/zfs/issues/2241

  Reviewed by:  mahrens
  MFC after:    8 days
  Sponsored by: ClusterHQ

Modified:
  head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c

Modified: head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c    Fri Jun 12 11:16:43=
 2015        (r284308)
+++ head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c    Fri Jun 12 11:21:35=
 2015        (r284309)
@@ -593,6 +593,17 @@ finish_progress(char *done)
 }

 /*
+ * Check if the dataset is mountable and should be automatically mounted.
+ */
+static boolean_t
+should_auto_mount(zfs_handle_t *zhp)
+{
+       if (!zfs_prop_valid_for_type(ZFS_PROP_CANMOUNT, zfs_get_type(zhp)))
+               return (B_FALSE);
+       return (zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT) =3D=3D ZFS_CANMOUN=
T_ON);
+}
+
+/*
  * zfs clone [-p] [-o prop=3Dvalue] ... <snap> <fs | vol>
  *
  * Given an existing dataset, create a writable copy whose initial content=
s
@@ -677,9 +688,22 @@ zfs_do_clone(int argc, char **argv)

                 clone =3D zfs_open(g_zfs, argv[1], ZFS_TYPE_DATASET);
                 if (clone !=3D NULL) {
-                       if (zfs_get_type(clone) !=3D ZFS_TYPE_VOLUME)
-                               if ((ret =3D zfs_mount(clone, NULL, 0)) =3D=
=3D 0)
-                                       ret =3D zfs_share(clone);
+                       /*
+                        * If the user doesn't want the dataset
+                        * automatically mounted, then skip the mount/share
+                        * step.
+                        */
+                       if (should_auto_mount(clone)) {
+                               if ((ret =3D zfs_mount(clone, NULL, 0)) !=
=3D 0) {
+                                       (void) fprintf(stderr, gettext("clo=
ne "
+                                           "successfully created, "
+                                           "but not mounted\n"));
+                               } else if ((ret =3D zfs_share(clone)) !=3D =
0) {
+                                       (void) fprintf(stderr, gettext("clo=
ne "
+                                           "successfully created, "
+                                           "but not shared\n"));
+                               }
+                       }
                         zfs_close(clone);
                 }
         }
@@ -728,7 +752,6 @@ zfs_do_create(int argc, char **argv)
         int ret =3D 1;
         nvlist_t *props;
         uint64_t intval;
-       int canmount =3D ZFS_CANMOUNT_OFF;

         if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) !=3D 0)
                 nomem();
@@ -868,19 +891,15 @@ zfs_do_create(int argc, char **argv)
                 goto error;

         ret =3D 0;
-       /*
-        * if the user doesn't want the dataset automatically mounted,
-        * then skip the mount/share step
-        */
-       if (zfs_prop_valid_for_type(ZFS_PROP_CANMOUNT, type))
-               canmount =3D zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT);

         /*
          * Mount and/or share the new filesystem as appropriate.  We provi=
de a
          * verbose error message to let the user know that their filesyste=
m was
          * in fact created, even if we failed to mount or share it.
+        * If the user doesn't want the dataset automatically mounted,
+        * then skip the mount/share step altogether.
          */
-       if (!nomount && canmount =3D=3D ZFS_CANMOUNT_ON) {
+       if (!nomount && should_auto_mount(zhp)) {
                 if (zfs_mount(zhp, NULL, 0) !=3D 0) {
                         (void) fprintf(stderr, gettext("filesystem "
                             "successfully created, but not mounted\n"));


------------------------------

Message: 2
Date: Fri, 12 Jun 2015 11:32:21 +0000 (UTC)
From: Gleb Smirnoff <glebius@FreeBSD.org>
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
        svn-src-head@freebsd.org
Subject: svn commit: r284310 - in head/sys: fs/tmpfs kern vm
Message-ID: <201506121132.t5CBWLOX037877@svn.freebsd.org>
Content-Type: text/plain; charset=3DUTF-8

Author: glebius
Date: Fri Jun 12 11:32:20 2015
New Revision: 284310
URL: https://svnweb.freebsd.org/changeset/base/284310

Log:
  Make KPI of vm_pager_get_pages() more strict: if a pager changes a page
  in the requested array, then it is responsible for disposition of previou=
s
  page and is responsible for updating the entry in the requested array.
  Now consumers of KPI do not need to re-lookup the pages after call to
  vm_pager_get_pages().

  Reviewed by:  kib
  Sponsored by: Netflix
  Sponsored by: Nginx, Inc.

Modified:
  head/sys/fs/tmpfs/tmpfs_subr.c
  head/sys/kern/kern_exec.c
  head/sys/kern/uipc_shm.c
  head/sys/kern/uipc_syscalls.c
  head/sys/vm/vm_fault.c
  head/sys/vm/vm_glue.c
  head/sys/vm/vm_object.c

Modified: head/sys/fs/tmpfs/tmpfs_subr.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/sys/fs/tmpfs/tmpfs_subr.c      Fri Jun 12 11:21:35 2015        (r2=
84309)
+++ head/sys/fs/tmpfs/tmpfs_subr.c      Fri Jun 12 11:32:20 2015        (r2=
84310)
@@ -1320,7 +1320,7 @@ tmpfs_reg_resize(struct vnode *vp, off_t
         struct tmpfs_mount *tmp;
         struct tmpfs_node *node;
         vm_object_t uobj;
-       vm_page_t m, ma[1];
+       vm_page_t m;
         vm_pindex_t idx, newpages, oldpages;
         off_t oldsize;
         int base, rv;
@@ -1367,11 +1367,9 @@ retry:
                                         VM_WAIT;
                                         VM_OBJECT_WLOCK(uobj);
                                         goto retry;
-                               } else if (m->valid !=3D VM_PAGE_BITS_ALL) =
{
-                                       ma[0] =3D m;
-                                       rv =3D vm_pager_get_pages(uobj, ma,=
 1, 0);
-                                       m =3D vm_page_lookup(uobj, idx);
-                               } else
+                               } else if (m->valid !=3D VM_PAGE_BITS_ALL)
+                                       rv =3D vm_pager_get_pages(uobj, &m,=
 1, 0);
+                               else
                                         /* A cached page was reactivated. =
*/
                                         rv =3D VM_PAGER_OK;
                                 vm_page_lock(m);

Modified: head/sys/kern/kern_exec.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/sys/kern/kern_exec.c   Fri Jun 12 11:21:35 2015        (r284309)
+++ head/sys/kern/kern_exec.c   Fri Jun 12 11:32:20 2015        (r284310)
@@ -966,13 +966,10 @@ exec_map_first_page(imgp)
                 }
                 initial_pagein =3D i;
                 rv =3D vm_pager_get_pages(object, ma, initial_pagein, 0);
-               ma[0] =3D vm_page_lookup(object, 0);
-               if ((rv !=3D VM_PAGER_OK) || (ma[0] =3D=3D NULL)) {
-                       if (ma[0] !=3D NULL) {
-                               vm_page_lock(ma[0]);
-                               vm_page_free(ma[0]);
-                               vm_page_unlock(ma[0]);
-                       }
+               if (rv !=3D VM_PAGER_OK) {
+                       vm_page_lock(ma[0]);
+                       vm_page_free(ma[0]);
+                       vm_page_unlock(ma[0]);
                         VM_OBJECT_WUNLOCK(object);
                         return (EIO);
                 }

Modified: head/sys/kern/uipc_shm.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/sys/kern/uipc_shm.c    Fri Jun 12 11:21:35 2015        (r284309)
+++ head/sys/kern/uipc_shm.c    Fri Jun 12 11:32:20 2015        (r284310)
@@ -189,14 +189,6 @@ uiomove_object_page(vm_object_t obj, siz
         if (m->valid !=3D VM_PAGE_BITS_ALL) {
                 if (vm_pager_has_page(obj, idx, NULL, NULL)) {
                         rv =3D vm_pager_get_pages(obj, &m, 1, 0);
-                       m =3D vm_page_lookup(obj, idx);
-                       if (m =3D=3D NULL) {
-                               printf(
-                   "uiomove_object: vm_obj %p idx %jd null lookup rv %d\n"=
,
-                                   obj, idx, rv);
-                               VM_OBJECT_WUNLOCK(obj);
-                               return (EIO);
-                       }
                         if (rv !=3D VM_PAGER_OK) {
                                 printf(
             "uiomove_object: vm_obj %p idx %jd valid %x pager error %d\n",
@@ -423,7 +415,7 @@ static int
 shm_dotruncate(struct shmfd *shmfd, off_t length)
 {
         vm_object_t object;
-       vm_page_t m, ma[1];
+       vm_page_t m;
         vm_pindex_t idx, nobjsize;
         vm_ooffset_t delta;
         int base, rv;
@@ -465,12 +457,10 @@ retry:
                                         VM_WAIT;
                                         VM_OBJECT_WLOCK(object);
                                         goto retry;
-                               } else if (m->valid !=3D VM_PAGE_BITS_ALL) =
{
-                                       ma[0] =3D m;
-                                       rv =3D vm_pager_get_pages(object, m=
a, 1,
+                               } else if (m->valid !=3D VM_PAGE_BITS_ALL)
+                                       rv =3D vm_pager_get_pages(object, &=
m, 1,
                                             0);
-                                       m =3D vm_page_lookup(object, idx);
-                               } else
+                               else
                                         /* A cached page was reactivated. =
*/
                                         rv =3D VM_PAGER_OK;
                                 vm_page_lock(m);

Modified: head/sys/kern/uipc_syscalls.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/sys/kern/uipc_syscalls.c       Fri Jun 12 11:21:35 2015        (r2=
84309)
+++ head/sys/kern/uipc_syscalls.c       Fri Jun 12 11:32:20 2015        (r2=
84310)
@@ -2026,10 +2026,7 @@ sendfile_readpage(vm_object_t obj, struc
                 if (vm_pager_has_page(obj, pindex, NULL, NULL)) {
                         rv =3D vm_pager_get_pages(obj, &m, 1, 0);
                         SFSTAT_INC(sf_iocnt);
-                       m =3D vm_page_lookup(obj, pindex);
-                       if (m =3D=3D NULL)
-                               error =3D EIO;
-                       else if (rv !=3D VM_PAGER_OK) {
+                       if (rv !=3D VM_PAGER_OK) {
                                 vm_page_lock(m);
                                 vm_page_free(m);
                                 vm_page_unlock(m);

Modified: head/sys/vm/vm_fault.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/sys/vm/vm_fault.c      Fri Jun 12 11:21:35 2015        (r284309)
+++ head/sys/vm/vm_fault.c      Fri Jun 12 11:32:20 2015        (r284310)
@@ -679,19 +679,12 @@ vnode_locked:
                                 /*
                                  * Found the page. Leave it busy while we =
play
                                  * with it.
-                                */
-
-                               /*
-                                * Relookup in case pager changed page. Pag=
er
+                                *
+                                * Pager could have changed the page.  Page=
r
                                  * is responsible for disposition of old p=
age
                                  * if moved.
                                  */
-                               fs.m =3D vm_page_lookup(fs.object, fs.pinde=
x);
-                               if (!fs.m) {
-                                       unlock_and_deallocate(&fs);
-                                       goto RetryFault;
-                               }
-
+                               fs.m =3D marray[reqpage];
                                 hardfault++;
                                 break; /* break to PAGE HAS BEEN FOUND */
                         }

Modified: head/sys/vm/vm_glue.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/sys/vm/vm_glue.c       Fri Jun 12 11:21:35 2015        (r284309)
+++ head/sys/vm/vm_glue.c       Fri Jun 12 11:32:20 2015        (r284310)
@@ -230,7 +230,7 @@ vsunlock(void *addr, size_t len)
 static vm_page_t
 vm_imgact_hold_page(vm_object_t object, vm_ooffset_t offset)
 {
-       vm_page_t m, ma[1];
+       vm_page_t m;
         vm_pindex_t pindex;
         int rv;

@@ -238,11 +238,7 @@ vm_imgact_hold_page(vm_object_t object,
         pindex =3D OFF_TO_IDX(offset);
         m =3D vm_page_grab(object, pindex, VM_ALLOC_NORMAL);
         if (m->valid !=3D VM_PAGE_BITS_ALL) {
-               ma[0] =3D m;
-               rv =3D vm_pager_get_pages(object, ma, 1, 0);
-               m =3D vm_page_lookup(object, pindex);
-               if (m =3D=3D NULL)
-                       goto out;
+               rv =3D vm_pager_get_pages(object, &m, 1, 0);
                 if (rv !=3D VM_PAGER_OK) {
                         vm_page_lock(m);
                         vm_page_free(m);
@@ -571,7 +567,7 @@ vm_thread_swapin(struct thread *td)
 {
         vm_object_t ksobj;
         vm_page_t ma[KSTACK_MAX_PAGES];
-       int i, j, k, pages, rv;
+       int i, j, pages, rv;

         pages =3D td->td_kstack_pages;
         ksobj =3D td->td_kstack_obj;
@@ -593,9 +589,12 @@ vm_thread_swapin(struct thread *td)
                         if (rv !=3D VM_PAGER_OK)
         panic("vm_thread_swapin: cannot get kstack for proc: %d",
                                     td->td_proc->p_pid);
+                       /*
+                        * All pages in the array are in place, due to the
+                        * pager is always the swap pager, which doesn't
+                        * free or remove wired non-req pages from object.
+                        */
                         vm_object_pip_wakeup(ksobj);
-                       for (k =3D i; k < j; k++)
-                               ma[k] =3D vm_page_lookup(ksobj, k);
                         vm_page_xunbusy(ma[i]);
                 } else if (vm_page_xbusied(ma[i]))
                         vm_page_xunbusy(ma[i]);

Modified: head/sys/vm/vm_object.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- head/sys/vm/vm_object.c     Fri Jun 12 11:21:35 2015        (r284309)
+++ head/sys/vm/vm_object.c     Fri Jun 12 11:32:20 2015        (r284310)
@@ -2046,7 +2046,7 @@ vm_object_page_cache(vm_object_t object,
 boolean_t
 vm_object_populate(vm_object_t object, vm_pindex_t start, vm_pindex_t end)
 {
-       vm_page_t m, ma[1];
+       vm_page_t m;
         vm_pindex_t pindex;
         int rv;

@@ -2054,11 +2054,7 @@ vm_object_populate(vm_object_t object, v
         for (pindex =3D start; pindex < end; pindex++) {
                 m =3D vm_page_grab(object, pindex, VM_ALLOC_NORMAL);
                 if (m->valid !=3D VM_PAGE_BITS_ALL) {
-                       ma[0] =3D m;
-                       rv =3D vm_pager_get_pages(object, ma, 1, 0);
-                       m =3D vm_page_lookup(object, pindex);
-                       if (m =3D=3D NULL)
-                               break;
+                       rv =3D vm_pager_get_pages(object, &m, 1, 0);
                         if (rv !=3D VM_PAGER_OK) {
                                 vm_page_lock(m);
                                 vm_page_free(m);


------------------------------

Subject: Digest Footer

_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org"

------------------------------

End of svn-src-head Digest, Vol 137, Issue 12
*********************************************



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F7B584ECE8313E2C.1-5ca8cfb8-69cc-4178-9f2d-9614d294d4aa>