]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-disconnected-deal-with-unlink-while-open-20090127
authorDerrick Brashear <shadow@dementia.org>
Wed, 28 Jan 2009 15:52:52 +0000 (15:52 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 28 Jan 2009 15:52:52 +0000 (15:52 +0000)
LICENSE IPL10
FIXES 124178

treat something as unlinked until a rename suceeds, then let that win

(cherry picked from commit af61732e4aaac8e09369addde0ec31a88fad8964)

src/afs/VNOPS/afs_vnop_remove.c

index fb86eced5c2b71318be87e7eaba1ab07fe2b6882..c358c29ecf7e0b87aa459359498d6f21a8285674 100644 (file)
@@ -446,6 +446,12 @@ afs_remove(OSI_VC_DECL(adp), char *aname, struct AFS_UCRED *acred)
            }
            tvc->uncred = acred;
            tvc->f.states |= CUnlinked;
+           /* if rename succeeded, remove should not */
+           ObtainWriteLock(&tvc->lock, 715);
+           if (tvc->f.ddirty_flags & VDisconRemove) {
+               tvc->f.ddirty_flags &= ~VDisconRemove;
+           }
+           ReleaseWriteLock(&tvc->lock);
        } else {
            osi_FreeSmallSpace(unlname);
        }