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:

Reply via email to