GetInodeSummary: free inode info
authorAndrew Deason <adeason@sinenomine.net>
Thu, 8 Jul 2010 21:40:07 +0000 (16:40 -0500)
committerDerrick Brashear <shadow@dementia.org>
Mon, 12 Jul 2010 18:27:49 +0000 (11:27 -0700)
In the salvager, GetInodeSummary stores some information about the
relevant inodes into a file. Free the memory for that information
after it's been written out, since we don't reference that memory
again.

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

src/vol/vol-salvage.c

index b005901..1488bee 100644 (file)
@@ -1111,7 +1111,7 @@ GetInodeSummary(FILE *inodeFile, VolumeId singleVolumeNumber)
     struct afs_stat status;
     int forceSal, err;
     int code;
-    struct ViceInodeInfo *ip;
+    struct ViceInodeInfo *ip, *ip_save;
     struct InodeSummary summary;
     char summaryFileName[50];
     FILE *summaryFile;
@@ -1213,6 +1213,7 @@ GetInodeSummary(FILE *inodeFile, VolumeId singleVolumeNumber)
            Abort("Unable to rewrite inode table; %s not salvaged\n", dev);
        }
        summary.index = 0;
+       ip_save = ip;
        while (nInodes) {
            CountVolumeInodes(ip, nInodes, &summary);
            if (fwrite(&summary, sizeof(summary), 1, summaryFile) != 1) {
@@ -1224,6 +1225,8 @@ GetInodeSummary(FILE *inodeFile, VolumeId singleVolumeNumber)
            nInodes -= summary.nInodes;
            ip += summary.nInodes;
        }
+       free(ip_save);
+       ip = ip_save = NULL;
        /* Following fflush is not fclose, because if it was debug mode would not work */
        if (fflush(summaryFile) == EOF || fsync(fileno(summaryFile)) == -1) {
            Log("Unable to write summary file (errno = %d); %s not salvaged\n", errno, dev);