svn commit: r367162 - in head/sys: contrib/openzfs/module/os/freebsd/zfs fs/tmpfs kern sys ufs/ufs

Mateusz Guzik mjg at FreeBSD.org
Fri Oct 30 10:46:37 UTC 2020


Author: mjg
Date: Fri Oct 30 10:46:35 2020
New Revision: 367162
URL: https://svnweb.freebsd.org/changeset/base/367162

Log:
  cache: add cache_vop_mkdir and rename cache_rename to cache_vop_rename

Modified:
  head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c
  head/sys/fs/tmpfs/tmpfs_vnops.c
  head/sys/kern/vfs_cache.c
  head/sys/sys/param.h
  head/sys/sys/vnode.h
  head/sys/ufs/ufs/ufs_vnops.c

Modified: head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c
==============================================================================
--- head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c	Fri Oct 30 10:44:46 2020	(r367161)
+++ head/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops.c	Fri Oct 30 10:46:35 2020	(r367162)
@@ -2273,6 +2273,16 @@ zfs_mkdir(znode_t *dzp, const char *dirname, vattr_t *
 	return (0);
 }
 
+#if	__FreeBSD_version < 1300124
+static void
+cache_vop_rmdir(struct vnode *dvp, struct vnode *vp)
+{
+
+	cache_purge(dvp);
+	cache_purge(vp);
+}
+#endif
+
 /*
  * Remove a directory subdir entry.  If the current working
  * directory is the same as the subdir to be removed, the
@@ -2342,7 +2352,7 @@ zfs_rmdir_(vnode_t *dvp, vnode_t *vp, const char *name
 
 	dmu_tx_commit(tx);
 
-	cache_purge(vp);
+	cache_vop_rmdir(dvp, vp);
 out:
 	if (zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS)
 		zil_commit(zilog, 0);
@@ -3901,7 +3911,7 @@ zfs_rename_check(znode_t *szp, znode_t *sdzp, znode_t 
 
 #if	__FreeBSD_version < 1300110
 static void
-cache_rename(struct vnode *fdvp, struct vnode *fvp, struct vnode *tdvp,
+cache_vop_rename(struct vnode *fdvp, struct vnode *fvp, struct vnode *tdvp,
     struct vnode *tvp, struct componentname *fcnp, struct componentname *tcnp)
 {
 
@@ -4170,7 +4180,7 @@ zfs_rename_(vnode_t *sdvp, vnode_t **svpp, struct comp
 			}
 		}
 		if (error == 0) {
-			cache_rename(sdvp, *svpp, tdvp, *tvpp, scnp, tcnp);
+			cache_vop_rename(sdvp, *svpp, tdvp, *tvpp, scnp, tcnp);
 		}
 	}
 

Modified: head/sys/fs/tmpfs/tmpfs_vnops.c
==============================================================================
--- head/sys/fs/tmpfs/tmpfs_vnops.c	Fri Oct 30 10:44:46 2020	(r367161)
+++ head/sys/fs/tmpfs/tmpfs_vnops.c	Fri Oct 30 10:46:35 2020	(r367162)
@@ -1210,7 +1210,7 @@ tmpfs_rename(struct vop_rename_args *v)
 	tmpfs_dir_attach(tdvp, de);
 
 	if (tmpfs_use_nc(fvp)) {
-		cache_rename(fdvp, fvp, tdvp, tvp, fcnp, tcnp);
+		cache_vop_rename(fdvp, fvp, tdvp, tvp, fcnp, tcnp);
 	}
 
 	error = 0;
@@ -1331,7 +1331,7 @@ tmpfs_rmdir(struct vop_rmdir_args *v)
 	TMPFS_NODE_UNLOCK(dnode);
 
 	if (tmpfs_use_nc(dvp)) {
-		cache_purge(vp);
+		cache_vop_rmdir(dvp, vp);
 	}
 
 	/* Free the directory entry we just deleted.  Note that the node

Modified: head/sys/kern/vfs_cache.c
==============================================================================
--- head/sys/kern/vfs_cache.c	Fri Oct 30 10:44:46 2020	(r367161)
+++ head/sys/kern/vfs_cache.c	Fri Oct 30 10:46:35 2020	(r367162)
@@ -2659,8 +2659,11 @@ cache_purge_negative(struct vnode *vp)
 	cache_free_batch(&batch);
 }
 
+/*
+ * Entry points for modifying VOP operations.
+ */
 void
-cache_rename(struct vnode *fdvp, struct vnode *fvp, struct vnode *tdvp,
+cache_vop_rename(struct vnode *fdvp, struct vnode *fvp, struct vnode *tdvp,
     struct vnode *tvp, struct componentname *fcnp, struct componentname *tcnp)
 {
 
@@ -2678,6 +2681,15 @@ cache_rename(struct vnode *fdvp, struct vnode *fvp, st
 	} else {
 		cache_remove_cnp(tdvp, tcnp);
 	}
+}
+
+void
+cache_vop_rmdir(struct vnode *dvp, struct vnode *vp)
+{
+
+	ASSERT_VOP_IN_SEQC(dvp);
+	ASSERT_VOP_IN_SEQC(vp);
+	cache_purge(vp);
 }
 
 #ifdef INVARIANTS

Modified: head/sys/sys/param.h
==============================================================================
--- head/sys/sys/param.h	Fri Oct 30 10:44:46 2020	(r367161)
+++ head/sys/sys/param.h	Fri Oct 30 10:46:35 2020	(r367162)
@@ -60,7 +60,7 @@
  *		in the range 5 to 9.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 1300123	/* Master, propagated to newvers */
+#define __FreeBSD_version 1300124	/* Master, propagated to newvers */
 
 /*
  * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,

Modified: head/sys/sys/vnode.h
==============================================================================
--- head/sys/sys/vnode.h	Fri Oct 30 10:44:46 2020	(r367161)
+++ head/sys/sys/vnode.h	Fri Oct 30 10:46:35 2020	(r367162)
@@ -641,9 +641,10 @@ void	cache_vnode_init(struct vnode *vp);
 void	cache_purge(struct vnode *vp);
 void	cache_purge_vgone(struct vnode *vp);
 void	cache_purge_negative(struct vnode *vp);
-void	cache_rename(struct vnode *fdvp, struct vnode *fvp, struct vnode *tdvp,
-    struct vnode *tvp, struct componentname *fcnp, struct componentname *tcnp);
 void	cache_purgevfs(struct mount *mp);
+void	cache_vop_rename(struct vnode *fdvp, struct vnode *fvp, struct vnode *tdvp,
+    struct vnode *tvp, struct componentname *fcnp, struct componentname *tcnp);
+void	cache_vop_rmdir(struct vnode *dvp, struct vnode *vp);
 #ifdef INVARIANTS
 void	cache_validate(struct vnode *dvp, struct vnode *vp,
 	    struct componentname *cnp);

Modified: head/sys/ufs/ufs/ufs_vnops.c
==============================================================================
--- head/sys/ufs/ufs/ufs_vnops.c	Fri Oct 30 10:44:46 2020	(r367161)
+++ head/sys/ufs/ufs/ufs_vnops.c	Fri Oct 30 10:46:35 2020	(r367162)
@@ -1629,7 +1629,7 @@ relock:
 	 * name that references the old i-node if it has other links
 	 * or open file descriptors.
 	 */
-	cache_rename(fdvp, fvp, tdvp, tvp, fcnp, tcnp);
+	cache_vop_rename(fdvp, fvp, tdvp, tvp, fcnp, tcnp);
 
 unlockout:
 	if (want_seqc_end) {
@@ -2220,7 +2220,7 @@ ufs_rmdir(ap)
 		DIP_SET(ip, i_nlink, ip->i_nlink);
 		UFS_INODE_SET_FLAG(ip, IN_CHANGE);
 	}
-	cache_purge(vp);
+	cache_vop_rmdir(dvp, vp);
 #ifdef UFS_DIRHASH
 	/* Kill any active hash; i_effnlink == 0, so it will not come back. */
 	if (ip->i_dirhash != NULL)


More information about the svn-src-all mailing list