]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
libafs: Do not osi_FlushPages for dirs
authorAndrew Deason <adeason@sinenomine.net>
Thu, 17 Mar 2011 21:32:00 +0000 (16:32 -0500)
committerDerrick Brashear <shadow@dementia.org>
Fri, 27 May 2011 17:35:30 +0000 (10:35 -0700)
Directory contents are never mapped or stored in pages, so dealing
with page invalidation on directories is just overhead. So make
osi_FlushPages a no-op when we're given a directory, which can avoid a
lot of locks and other processing (particularly when we are called in
afs_getattr in BOZONLOCK_ENV).

Reviewed-on: http://gerrit.openafs.org/4259
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit a6f18413edceed1b0d532005eb62cb1886e7a6f3)

Change-Id: I48dafa5fb442cfc92fb673f2b26e1034fc44c0c7
Reviewed-on: http://gerrit.openafs.org/4730
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/afs/afs_osi_vm.c

index c26df6d6b5f43fca6d833e90d51046457e24d376..66071ac9ba51cae49f1d3ccb14ba2c80d601521b 100644 (file)
@@ -58,6 +58,11 @@ osi_FlushPages(struct vcache *avc, afs_ucred_t *credp)
      * citi-tr-01-3.
      */
 #endif
+    if (vType(avc) == VDIR) {
+       /* not applicable to directories; they're never mapped or stored in
+        * pages */
+       return;
+    }
     ObtainReadLock(&avc->lock);
     /* If we've already purged this version, or if we're the ones
      * writing this version, don't flush it (could lose the