]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
linux-afs-unlinked-file-dentry-flagging-20071031
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Thu, 1 Nov 2007 03:23:09 +0000 (03:23 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 1 Nov 2007 03:23:09 +0000 (03:23 +0000)
fix case:
 perl -e 'open FOO, ">foo"; unlink(foo); @stat = stat(FOO); print "inode for foo(unlinked) is $stat[1]\n"; system("/bin/ls -ali | grep $stat[1]");'

src/afs/LINUX/osi_vnodeops.c

index 028511e95ec54dfe34cc2e61fdc3131251bd2a40..93bba1cef1b379a4f2dd26f3c72f7b1aac8a7cc2 100644 (file)
@@ -896,6 +896,15 @@ afs_dentry_iput(struct dentry *dp, struct inode *ip)
     AFS_GLOCK();
     (void) afs_InactiveVCache(vcp, NULL);
     AFS_GUNLOCK();
+#ifdef DCACHE_NFSFS_RENAMED
+#ifdef AFS_LINUX26_ENV
+    spin_lock(&dp->d_lock);
+#endif
+    dp->d_flags &= ~DCACHE_NFSFS_RENAMED;   
+#ifdef AFS_LINUX26_ENV
+    spin_unlock(&dp->d_lock);
+#endif
+#endif
 
     iput(ip);
 }
@@ -1131,6 +1140,15 @@ afs_linux_unlink(struct inode *dip, struct dentry *dp)
             }
             tvc->uncred = credp;
            tvc->states |= CUnlinked;
+#ifdef DCACHE_NFSFS_RENAMED
+#ifdef AFS_LINUX26_ENV
+           spin_lock(&dp->d_lock);
+#endif
+           dp->d_flags |= DCACHE_NFSFS_RENAMED;   
+#ifdef AFS_LINUX26_ENV
+           spin_unlock(&dp->d_lock);
+#endif
+#endif
        } else {
            osi_FreeSmallSpace(__name); 
        }