Author: mjg
Date: Mon Aug 24 08:55:04 2020
New Revision: 364631
URL: https://svnweb.freebsd.org/changeset/base/364631

Log:
  cache: populate v_cache_dd for non-VDIR entries
  
  It makes v_cache_dd into a little bit of a misnomer and it may be addressed 
later.
  
  Tested by:    pho

Modified:
  head/sys/kern/vfs_cache.c

Modified: head/sys/kern/vfs_cache.c
==============================================================================
--- head/sys/kern/vfs_cache.c   Mon Aug 24 08:41:22 2020        (r364630)
+++ head/sys/kern/vfs_cache.c   Mon Aug 24 08:55:04 2020        (r364631)
@@ -2003,24 +2003,22 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, 
        }
 
        if (vp != NULL) {
-               if (vp->v_type == VDIR) {
-                       if (flag != NCF_ISDOTDOT) {
-                               /*
-                                * For this case, the cache entry maps both the
-                                * directory name in it and the name ".." for 
the
-                                * directory's parent.
-                                */
-                               vn_seqc_write_begin(vp);
-                               if ((ndd = vp->v_cache_dd) != NULL) {
-                                       if ((ndd->nc_flag & NCF_ISDOTDOT) != 0)
-                                               cache_zap_locked(ndd);
-                                       else
-                                               ndd = NULL;
-                               }
-                               vp->v_cache_dd = ncp;
-                               vn_seqc_write_end(vp);
+               if (flag != NCF_ISDOTDOT) {
+                       /*
+                        * For this case, the cache entry maps both the
+                        * directory name in it and the name ".." for the
+                        * directory's parent.
+                        */
+                       vn_seqc_write_begin(vp);
+                       if ((ndd = vp->v_cache_dd) != NULL) {
+                               if ((ndd->nc_flag & NCF_ISDOTDOT) != 0)
+                                       cache_zap_locked(ndd);
+                               else
+                                       ndd = NULL;
                        }
-               } else {
+                       vp->v_cache_dd = ncp;
+                       vn_seqc_write_end(vp);
+               } else if (vp->v_type != VDIR) {
                        if (vp->v_cache_dd != NULL) {
                                vn_seqc_write_begin(vp);
                                vp->v_cache_dd = NULL;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to