From f6d6bd6027dff4abbe6892bcbee92f8a5637d8bf Mon Sep 17 00:00:00 2001 From: Dragos Tatulea Date: Sun, 30 Nov 2008 20:11:17 +0000 Subject: [PATCH] DEVEL15-disconnected-refcount-fixes-20081130 LICENSE IPL10 FIXES 123714 fix code which tweaks refcounts on disconnected vcaches to be correct (cherry picked from commit fb549013e7bb2cf5cb3da3083349cb559c093e8f) --- src/afs/VNOPS/afs_vnop_rename.c | 2 ++ src/afs/afs_disconnected.c | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/afs/VNOPS/afs_vnop_rename.c b/src/afs/VNOPS/afs_vnop_rename.c index cb7a3f0af..13ced9536 100644 --- a/src/afs/VNOPS/afs_vnop_rename.c +++ b/src/afs/VNOPS/afs_vnop_rename.c @@ -246,6 +246,8 @@ afsrename(struct vcache *aodp, char *aname1, struct vcache *andp, tvc->ddirty_flags |= VDisconRenameSameDir; ReleaseWriteLock(&tvc->lock); } /* if not previously renamed */ + + afs_PutVCache(tvc); } else { code = ENOENT; } /* if (tvc) */ diff --git a/src/afs/afs_disconnected.c b/src/afs/afs_disconnected.c index aeeaaa37b..5579a0759 100644 --- a/src/afs/afs_disconnected.c +++ b/src/afs/afs_disconnected.c @@ -322,8 +322,10 @@ int chk_del_children_hook(void *hdata, /* Count unfinished dirty children. VDisconShadowed can still be set, * because we need it to remove the shadow dir. */ - if (tvc && tvc->ddirty_flags) { - v->count++; + if (tvc) { + if (tvc->ddirty_flags) + v->count++; + afs_PutVCache(tvc); } -- 2.39.5