In article <ebea75f5-30e2-41ce-a2cc-494765452...@me.com>, Jason Thorpe <thor...@me.com> wrote: > > >> On Sep 17, 2019, at 1:39 PM, Christos Zoulas <chris...@astron.com> wrote: >> >> I am not sure though if we should change the current behavior just to make >> F_GETPATH better? Opinions? > >It seems completely logical that we SHOULD fix this.
I concur. Specially because some filesystems already do it. These are the only ones that need to be changed: christos Index: fs/msdosfs/msdosfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/msdosfs/msdosfs_vnops.c,v retrieving revision 1.98 diff -u -u -r1.98 msdosfs_vnops.c --- fs/msdosfs/msdosfs_vnops.c 26 Apr 2017 03:02:48 -0000 1.98 +++ fs/msdosfs/msdosfs_vnops.c 17 Sep 2019 22:40:01 -0000 @@ -153,6 +153,8 @@ goto bad; VN_KNOTE(ap->a_dvp, NOTE_WRITE); *ap->a_vpp = DETOV(dep); + cache_enter(ap->a_dvp, *ap->a_vpp, cnp->cn_nameptr, cnp->cn_namelen, + cnp->cn_flags); return (0); bad: Index: fs/tmpfs/tmpfs_subr.c =================================================================== RCS file: /cvsroot/src/sys/fs/tmpfs/tmpfs_subr.c,v retrieving revision 1.104 diff -u -u -r1.104 tmpfs_subr.c --- fs/tmpfs/tmpfs_subr.c 1 Jan 2019 10:06:54 -0000 1.104 +++ fs/tmpfs/tmpfs_subr.c 17 Sep 2019 22:40:01 -0000 @@ -434,6 +434,7 @@ VOP_UNLOCK(*vpp); + cache_enter(dvp, *vpp, cnp->cn_nameptr, cnp->cn_namelen, cnp->cn_flags); return 0; } Index: fs/udf/udf_subr.c =================================================================== RCS file: /cvsroot/src/sys/fs/udf/udf_subr.c,v retrieving revision 1.146 diff -u -u -r1.146 udf_subr.c --- fs/udf/udf_subr.c 3 Jun 2019 06:04:20 -0000 1.146 +++ fs/udf/udf_subr.c 17 Sep 2019 22:40:01 -0000 @@ -5963,6 +5963,7 @@ /* adjust file count */ udf_adjust_filecount(udf_node, 1); + cache_enter(dvp, *vpp, cnp->cn_nameptr, cnp->cn_namelen, cnp->cn_flags); return 0; } Index: ufs/chfs/chfs_vnode.c =================================================================== RCS file: /cvsroot/src/sys/ufs/chfs/chfs_vnode.c,v retrieving revision 1.15 diff -u -u -r1.15 chfs_vnode.c --- ufs/chfs/chfs_vnode.c 1 Apr 2017 19:35:57 -0000 1.15 +++ ufs/chfs/chfs_vnode.c 17 Sep 2019 22:40:01 -0000 @@ -310,6 +310,8 @@ VOP_UNLOCK(vp); *vpp = vp; + cache_enter(pdir, *vpp, cnp->cn_nameptr, cnp->cn_namelen, + cnp->cn_flags); return (0); } Index: ufs/ext2fs/ext2fs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/ext2fs/ext2fs_vnops.c,v retrieving revision 1.129 diff -u -u -r1.129 ext2fs_vnops.c --- ufs/ext2fs/ext2fs_vnops.c 1 Jan 2019 10:06:55 -0000 1.129 +++ ufs/ext2fs/ext2fs_vnops.c 17 Sep 2019 22:40:01 -0000 @@ -1045,6 +1045,7 @@ } *vpp = tvp; + cache_enter(dvp, *vpp, cnp->cn_nameptr, cnp->cn_namelen, cnp->cn_flags); return 0; bad: Index: ufs/lfs/lfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/lfs/lfs_vnops.c,v retrieving revision 1.324 diff -u -u -r1.324 lfs_vnops.c --- ufs/lfs/lfs_vnops.c 20 Jun 2019 00:49:11 -0000 1.324 +++ ufs/lfs/lfs_vnops.c 17 Sep 2019 22:40:01 -0000 @@ -405,6 +405,7 @@ if (error) goto bad; *vpp = tvp; + cache_enter(dvp, *vpp, cnp->cn_nameptr, cnp->cn_namelen, cnp->cn_flags); KASSERT(VOP_ISLOCKED(*vpp) == LK_EXCLUSIVE); return (0); Index: ufs/ufs/ufs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/ufs/ufs_vnops.c,v retrieving revision 1.247 diff -u -u -r1.247 ufs_vnops.c --- ufs/ufs/ufs_vnops.c 1 Jul 2019 00:57:06 -0000 1.247 +++ ufs/ufs/ufs_vnops.c 17 Sep 2019 22:40:01 -0000 @@ -1909,6 +1909,7 @@ if (error) goto bad; *vpp = tvp; + cache_enter(dvp, *vpp, cnp->cn_nameptr, cnp->cn_namelen, cnp->cn_flags); return (0); bad: