From a9b922a282cb25cf8de384ba7f1a751ee5e88f24 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Tue, 25 Jan 2011 10:46:38 -0600 Subject: [PATCH] vol-salvage: Only delete bad vnodes during !check In SalvageIndex, if check is true, we're only supposed to check for consistency and not actually change anything (this is enforced by an assert later on). The check for vnode magic consistency breaks this assumption, and just always fixes the vnode. Change this so we just error out if check is set, and the vnode magic is wrong. Reviewed-on: http://gerrit.openafs.org/3756 Reviewed-by: Jeffrey Altman Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear (cherry picked from commit 5817a13b84496c087b350be50c17a8b0f9aac9d5) Change-Id: I1b12c56d680111ba71b611ab9bbb6159a35dd14e Reviewed-on: http://gerrit.openafs.org/3866 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/vol/vol-salvage.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index 580fd5872..dce10e019 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -2544,6 +2544,14 @@ SalvageIndex(Inode ino, VnodeClass class, int RW, } else { if (vcp->magic != vnode->vnodeMagic) { /* bad magic #, probably partially created vnode */ + if (check) { + Log("Partially allocated vnode %d: bad magic (is %lx should be %lx)\n", + vnodeNumber, afs_printable_uint32_lu(vnode->vnodeMagic), + afs_printable_uint32_lu(vcp->magic)); + memset(vnode, 0, vcp->diskSize); + err = -1; + goto zooks; + } Log("Partially allocated vnode %d deleted.\n", vnodeNumber); memset(vnode, 0, vcp->diskSize); -- 2.39.5