Author: kib
Date: Thu Nov  7 15:32:59 2019
New Revision: 354444
URL: https://svnweb.freebsd.org/changeset/base/354444

Log:
  MFC r353892:
  Assert that vnode_pager_setsize() is called with the vnode exclusively locked.

Modified:
  stable/12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  stable/12/sys/sys/mount.h
  stable/12/sys/vm/vnode_pager.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- stable/12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c       
Thu Nov  7 15:00:37 2019        (r354443)
+++ stable/12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c       
Thu Nov  7 15:32:59 2019        (r354444)
@@ -1400,6 +1400,7 @@ zfs_domount(vfs_t *vfsp, char *osname)
        vfsp->mnt_kern_flag |= MNTK_SHARED_WRITES;
        vfsp->mnt_kern_flag |= MNTK_EXTENDED_SHARED;
        vfsp->mnt_kern_flag |= MNTK_NO_IOPF;    /* vn_io_fault can be used */
+       vfsp->mnt_kern_flag |= MNTK_VMSETSIZE_BUG;
 
        /*
         * The fsid is 64 bits, composed of an 8-bit fs type, which

Modified: stable/12/sys/sys/mount.h
==============================================================================
--- stable/12/sys/sys/mount.h   Thu Nov  7 15:00:37 2019        (r354443)
+++ stable/12/sys/sys/mount.h   Thu Nov  7 15:32:59 2019        (r354444)
@@ -396,6 +396,7 @@ void          __mnt_vnode_markerfree_active(struct vno
 #define        MNTK_UNMAPPED_BUFS      0x00002000
 #define        MNTK_USES_BCACHE        0x00004000 /* FS uses the buffer cache. 
*/
 #define        MNTK_TEXT_REFS          0x00008000 /* Keep use ref for text */
+#define        MNTK_VMSETSIZE_BUG      0x00010000
 #define MNTK_NOASYNC   0x00800000      /* disable async */
 #define MNTK_UNMOUNT   0x01000000      /* unmount in progress */
 #define        MNTK_MWAIT      0x02000000      /* waiting for unmount to 
finish */

Modified: stable/12/sys/vm/vnode_pager.c
==============================================================================
--- stable/12/sys/vm/vnode_pager.c      Thu Nov  7 15:00:37 2019        
(r354443)
+++ stable/12/sys/vm/vnode_pager.c      Thu Nov  7 15:32:59 2019        
(r354444)
@@ -433,7 +433,16 @@ vnode_pager_setsize(struct vnode *vp, vm_ooffset_t nsi
 
        if ((object = vp->v_object) == NULL)
                return;
-/*     ASSERT_VOP_ELOCKED(vp, "vnode_pager_setsize and not locked vnode"); */
+#ifdef DEBUG_VFS_LOCKS
+       {
+               struct mount *mp;
+
+               mp = vp->v_mount;
+               if (mp != NULL && (mp->mnt_kern_flag & MNTK_VMSETSIZE_BUG) == 0)
+                       assert_vop_elocked(vp,
+                           "vnode_pager_setsize and not locked vnode");
+       }
+#endif
        VM_OBJECT_WLOCK(object);
        if (object->type == OBJT_DEAD) {
                VM_OBJECT_WUNLOCK(object);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to