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) _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"