vos: convertROtoRW does not respect volume lock
authorMark Vitale <mvitale@sinenomine.net>
Tue, 8 May 2012 18:45:16 +0000 (14:45 -0400)
committerDerrick Brashear <shadow@dementix.org>
Mon, 21 May 2012 17:08:30 +0000 (10:08 -0700)
vos convertROtoRW was not checking the return code from
ubik_VL_SetLock().

Change-Id: I651c543f9a0070a9d34d9cca7583437e50e95dc8
Reviewed-on: http://gerrit.openafs.org/7388
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Alistair Ferguson <alistair.ferguson@mac.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/volser/vos.c

index 89dbe9e..fbd32a7 100644 (file)
@@ -5612,6 +5612,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) {
@@ -5653,9 +5660,13 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
                "Warning: volume converted, but vldb update failed with code %d!\n",
                code);
     }
+
     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;
 }