revert-salvager-verbosity-entirely-20050319
[openafs.git] / src / vol / vol-salvage.c
index 920e677..04eb269 100644 (file)
@@ -519,14 +519,14 @@ handleit(struct cmd_syndesc *as)
 
 #ifdef FAST_RESTART
     {
-    afs_int32 i;
-    for (i = 0; i < CMD_MAXPARMS; i++) {
-       if (as->parms[i].items) {
-           seenany = 1;
-           break;
+       afs_int32 i;
+       for (i = 0; i < CMD_MAXPARMS; i++) {
+           if (as->parms[i].items) {
+               seenany = 1;
+               break;
+           }
        }
     }
-    }
     if (!seenany) {
        char *msg =
            "Exiting immediately without salvage. Look into the FileLog to find volumes which really need to be salvaged!";
@@ -864,7 +864,12 @@ ObtainSalvageLock(void)
 #else
     salvageLock =
        afs_open(AFSDIR_SERVER_SLVGLOCK_FILEPATH, O_CREAT | O_RDWR, 0666);
-    assert(salvageLock >= 0);
+    if (salvageLock < 0) {
+       fprintf(stderr,
+               "salvager:  can't open salvage lock file %s, aborting\n",
+               AFSDIR_SERVER_SLVGLOCK_FILEPATH);
+       Exit(1);
+    }
 #ifdef AFS_DARWIN_ENV
     if (flock(salvageLock, LOCK_EX) == -1) {
 #else
@@ -1515,7 +1520,7 @@ CountVolumeInodes(register struct ViceInodeInfo *ip, int maxInodes,
 }
 
 int
-OnlyOneVolume(struct ViceInodeInfo *inodeinfo, VolumeId singleVolumeNumber)
+OnlyOneVolume(struct ViceInodeInfo *inodeinfo, VolumeId singleVolumeNumber, void *rock)
 {
     if (inodeinfo->u.vnode.vnodeNumber == INODESPECIAL)
        return (inodeinfo->u.special.parentId == singleVolumeNumber);
@@ -1551,7 +1556,7 @@ GetInodeSummary(char *path, VolumeId singleVolumeNumber)
     if ((err =
         ListViceInodes(dev, fileSysPath, path,
                        singleVolumeNumber ? OnlyOneVolume : 0,
-                       singleVolumeNumber, &forceSal, forceR, wpath)) < 0) {
+                       singleVolumeNumber, &forceSal, forceR, wpath, NULL)) < 0) {
        if (err == -2) {
            Log("*** I/O error %d when writing a tmp inode file %s; Not salvaged %s ***\nIncrease space on partition or use '-tmpdir'\n", errno, path, dev);
            return -1;
@@ -1584,7 +1589,8 @@ GetInodeSummary(char *path, VolumeId singleVolumeNumber)
     }
     if (!canfork || debug || Fork() == 0) {
        int nInodes;
-       nInodes = status.st_size / sizeof(struct ViceInodeInfo);
+       unsigned long st_size=(unsigned long) status.st_size;
+       nInodes = st_size / sizeof(struct ViceInodeInfo);
        if (nInodes == 0) {
            fclose(summaryFile);
            close(inodeFd);
@@ -1593,11 +1599,11 @@ GetInodeSummary(char *path, VolumeId singleVolumeNumber)
                RemoveTheForce(fileSysPath);
            else {
                struct VolumeSummary *vsp;
-               int i, j;
+               int i;
 
                GetVolumeSummary(singleVolumeNumber);
 
-               for (i = 0,vsp = volumeSummaryp; i < nVolumes; i++) {
+               for (i = 0, vsp = volumeSummaryp; i < nVolumes; i++) {
                    if (vsp->fileName)
                        DeleteExtraVolumeHeaderFile(vsp);
                }
@@ -1606,7 +1612,7 @@ GetInodeSummary(char *path, VolumeId singleVolumeNumber)
                singleVolumeNumber ? "No applicable" : "No", dev);
            return -1;
        }
-       ip = (struct ViceInodeInfo *)malloc(status.st_size);
+       ip = (struct ViceInodeInfo *)malloc(nInodes*sizeof(struct ViceInodeInfo));
        if (ip == NULL) {
            fclose(summaryFile);
            close(inodeFd);
@@ -1616,7 +1622,7 @@ GetInodeSummary(char *path, VolumeId singleVolumeNumber)
                ("Unable to allocate enough space to read inode table; %s not salvaged\n",
                 dev);
        }
-       if (read(inodeFd, ip, status.st_size) != status.st_size) {
+       if (read(inodeFd, ip, st_size) != st_size) {
            fclose(summaryFile);
            close(inodeFd);
            unlink(path);
@@ -1625,7 +1631,7 @@ GetInodeSummary(char *path, VolumeId singleVolumeNumber)
        }
        qsort(ip, nInodes, sizeof(struct ViceInodeInfo), CompareInodes);
        if (afs_lseek(inodeFd, 0, SEEK_SET) == -1
-           || write(inodeFd, ip, status.st_size) != status.st_size) {
+           || write(inodeFd, ip, st_size) != st_size) {
            fclose(summaryFile);
            close(inodeFd);
            unlink(path);
@@ -1668,14 +1674,16 @@ GetInodeSummary(char *path, VolumeId singleVolumeNumber)
     assert(afs_fstat(fileno(summaryFile), &status) != -1);
     if (status.st_size != 0) {
        int ret;
-       inodeSummary = (struct InodeSummary *)malloc(status.st_size);
+       unsigned long st_status=(unsigned long)status.st_size;
+       inodeSummary = (struct InodeSummary *)malloc(st_status);
        assert(inodeSummary != NULL);
        /* For GNU we need to do lseek to get the file pointer moved. */
        assert(afs_lseek(fileno(summaryFile), 0, SEEK_SET) == 0);
-       ret = read(fileno(summaryFile), inodeSummary, status.st_size);
-       assert(ret == status.st_size);
+       ret = read(fileno(summaryFile), inodeSummary, st_status);
+       assert(ret == st_status);
     }
-    nVolumesInInodeFile = status.st_size / sizeof(struct InodeSummary);
+    nVolumesInInodeFile =(unsigned long)(status.st_size) / sizeof(struct InodeSummary);
+    Log("%d nVolumesInInodeFile %d \n",nVolumesInInodeFile,(unsigned long)(status.st_size));
     fclose(summaryFile);
     close(inodeFd);
     unlink(summaryFileName);
@@ -2021,6 +2029,7 @@ DoSalvageVolumeGroup(register struct InodeSummary *isp, int nVols)
 
     /* Fix actual inode counts */
     if (!Showmode) {
+       Log("totalInodes %d\n",totalInodes);
        for (ip = inodes; totalInodes; ip++, totalInodes--) {
            static int TraceBadLinkCounts = 0;
 #ifdef AFS_NAMEI_ENV
@@ -3061,7 +3070,7 @@ JudgeEntry(struct DirSummary *dir, char *name, VnodeId vnodeNumber,
                    if (dirOrphaned) {
                        Log("dir vnode %u: %s/%s parent vnode is %u (vnode %u, unique %u) -- %sdeleted\n", dir->vnodeNumber, (dir->name ? dir->name : "??"), name, vnodeEssence->parent, vnodeNumber, unique, (Testing ? "would have been " : ""));
                    } else if (vnodeNumber == 1) {
-                       Log("dir vnode %d: %s/%s is invalid (vnode %d, unique %d) -- %sdeleted\n", dir->vnodeNumber, (dir->name ? dir->name : "??"), name, vnodeNumber, unique, (Testing?"would have been ":""));
+                       Log("dir vnode %d: %s/%s is invalid (vnode %d, unique %d) -- %sdeleted\n", dir->vnodeNumber, (dir->name ? dir->name : "??"), name, vnodeNumber, unique, (Testing ? "would have been " : ""));
                    } else {
                        Log("dir vnode %u: %s/%s already claimed by directory vnode %u (vnode %u, unique %u) -- %sdeleted\n", dir->vnodeNumber, (dir->name ? dir->name : "??"), name, vnodeEssence->parent, vnodeNumber, unique, (Testing ? "would have been " : ""));
                    }