From: Derrick Brashear Date: Wed, 28 Jan 2009 15:52:52 +0000 (+0000) Subject: DEVEL15-disconnected-deal-with-unlink-while-open-20090127 X-Git-Tag: openafs-devel-1_5_58~170 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=8a81664b9e55a2191c11684f8fc7a7baf51298f9;p=packages%2Fo%2Fopenafs.git DEVEL15-disconnected-deal-with-unlink-while-open-20090127 LICENSE IPL10 FIXES 124178 treat something as unlinked until a rename suceeds, then let that win (cherry picked from commit af61732e4aaac8e09369addde0ec31a88fad8964) --- diff --git a/src/afs/VNOPS/afs_vnop_remove.c b/src/afs/VNOPS/afs_vnop_remove.c index fb86eced5..c358c29ec 100644 --- a/src/afs/VNOPS/afs_vnop_remove.c +++ b/src/afs/VNOPS/afs_vnop_remove.c @@ -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); }