salvage: update inodes array after CopyAndSalvage
authorAndrew Deason <adeason@sinenomine.net>
Tue, 27 Jul 2010 21:22:47 +0000 (16:22 -0500)
committerDerrick Brashear <shadow@dementia.org>
Wed, 11 Aug 2010 04:32:58 +0000 (21:32 -0700)
CopyAndSalvage makes a copy of the directory to salvage it. So, the
new directory will have a new inode. Update the array of directory
inodes to reflect this. Without this, we can fail to alter the
copied/salvaged directory later on, since we will try to read/write to
the wrong inode.

Change-Id: I2466981e8ee54c5aecf1a166a37d8146b126de24
Reviewed-on: http://gerrit.openafs.org/2530
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/vol/vol-salvage.c

index 55bd240..c4ace1d 100644 (file)
@@ -3329,6 +3329,7 @@ SalvageDir(char *name, VolumeId rwVid, struct VnodeInfo *dirVnodeInfo,
        if (!Testing) {
            CopyAndSalvage(&dir);
            dirok = 1;
+           dirVnodeInfo->inodes[i] = dir.dirHandle.dirh_inode;
        }
     }
     dirHandle = dir.dirHandle;