Don't cast the return from realloc()
[openafs.git] / src / volser / vos.c
index 27be7d6..529ccdd 100644 (file)
@@ -4604,9 +4604,7 @@ ListVLDB(struct cmd_syndesc *as, void *arock)
            } else {
                /* Grow the tarray to keep the extra entries */
                parraysize = (centries * sizeof(struct nvldbentry));
-               ttarray =
-                   (struct nvldbentry *)realloc(tarray,
-                                                tarraysize + parraysize);
+               ttarray = realloc(tarray, tarraysize + parraysize);
                if (!ttarray) {
                    fprintf(STDERR,
                            "Could not allocate enough space for  the VLDB entries\n");
@@ -5538,7 +5536,7 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
            PrintError("", code);
        else
            fprintf(STDERR, "Unknown volume ID or name '%s'\n",
-                   as->parms[0].items->data);
+                   as->parms[2].items->data);
        return -1;
     }
     if (as->parms[3].items)
@@ -5549,7 +5547,7 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
        fprintf(STDERR,
                "Could not fetch the entry for volume %lu from VLDB\n",
                (unsigned long)volid);
-       PrintError("convertROtoRW", code);
+       PrintError("convertROtoRW ", vcode);
        return vcode;
     }
 
@@ -5564,8 +5562,9 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
            rwindex = i;
            rwserver = entry.serverNumber[i];
            rwpartition = entry.serverPartition[i];
-       }
-       if (entry.serverFlags[i] & ITSROVOL) {
+           if (roserver)
+               break;
+       } else if ((entry.serverFlags[i] & ITSROVOL) && !roserver) {
            same = VLDB_IsSameAddrs(server, entry.serverNumber[i], &code);
            if (code) {
                fprintf(STDERR,
@@ -5577,7 +5576,8 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
                roindex = i;
                roserver = entry.serverNumber[i];
                ropartition = entry.serverPartition[i];
-               break;
+               if (rwserver)
+                    break;
            }
        }
     }
@@ -5610,6 +5610,13 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
     vcode =
        ubik_VL_SetLock(cstruct, 0, entry.volumeId[RWVOL], RWVOL,
                  VLOP_MOVE);
+    if (vcode) {
+       fprintf(STDERR,
+               "Unable to lock volume %lu, code %d\n",
+               (unsigned long)entry.volumeId[RWVOL],vcode);
+       PrintError("", vcode);
+       return -1;
+    }
     aconn = UV_Bind(server, AFSCONF_VOLUMEPORT);
     code = AFSVolConvertROtoRWvolume(aconn, partition, volid);
     if (code) {
@@ -5617,7 +5624,7 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
                "Converting RO volume %lu to RW volume failed with code %d\n",
                (unsigned long)volid, code);
        PrintError("convertROtoRW ", code);
-       return -1;
+       goto error_exit;
     }
     entry.serverFlags[roindex] = ITSRWVOL;
     entry.flags |= RW_EXISTS;
@@ -5651,9 +5658,14 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
                "Warning: volume converted, but vldb update failed with code %d!\n",
                code);
     }
+
+  error_exit:
     vcode = UV_LockRelease(entry.volumeId[RWVOL]);
     if (vcode) {
-       PrintDiagnostics("unlock", vcode);
+       fprintf(STDERR,
+               "Unable to unlock volume %lu, code %d\n",
+               (unsigned long)entry.volumeId[RWVOL],vcode);
+       PrintError("", vcode);
     }
     return code;
 }