svn commit: r354444 - in stable/12/sys: cddl/contrib/opensolaris/uts/common/fs/zfs sys vm

Konstantin Belousov kib at FreeBSD.org
Thu Nov 7 15:33:01 UTC 2019


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);


More information about the svn-src-all mailing list