From: Andrew Deason Date: Tue, 25 Jan 2011 16:46:38 +0000 (-0600) Subject: vol-salvage: Only delete bad vnodes during !check X-Git-Tag: upstream/1.8.0_pre1^2~4233 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=5817a13b84496c087b350be50c17a8b0f9aac9d5;p=packages%2Fo%2Fopenafs.git 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. Change-Id: I9e2d3bd5e9e340a9b2ac66d70d52aa110b512561 Reviewed-on: http://gerrit.openafs.org/3756 Reviewed-by: Jeffrey Altman Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index b02d7b6bd..5f8074416 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -2572,6 +2572,14 @@ SalvageIndex(struct SalvInfo *salvinfo, 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);