LINUX: don't cache negative entries for dynroot 40/12140/4
authorChas Williams <3chas3@gmail.com>
Thu, 24 Dec 2015 22:58:32 +0000 (17:58 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Sat, 23 Jan 2016 21:46:43 +0000 (16:46 -0500)
The dynroot volume lacks any callbacks that would invalidate the directory
or change the data version.  Further, the data version for the dynroot
is only updated for when a new cell is found or added (a positive lookup).

Change-Id: If0b022933de7335d3d94aafc77c50b85b99f4116
Reviewed-on: http://gerrit.openafs.org/12140
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

src/afs/LINUX/osi_vnodeops.c

index 6b49b5e..6c3a811 100644 (file)
@@ -1314,7 +1314,8 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags)
        pvcp = VTOAFS(parent->d_inode);
        parent_dv = parent_vcache_dv(parent->d_inode, credp, locked);
 
-       if (parent_dv > dp->d_time || !(pvcp->f.states & CStatd)) {
+       if (parent_dv > dp->d_time || !(pvcp->f.states & CStatd)
+           || afs_IsDynroot(pvcp)) {
            dput(parent);
            goto bad_dentry;
        }