]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
vos: convertROtoRW may create two RW volumes
authorMark Vitale <mvitale@sinenomine.net>
Tue, 8 May 2012 14:01:12 +0000 (10:01 -0400)
committerDerrick Brashear <shadow@dementix.org>
Tue, 29 May 2012 00:31:07 +0000 (17:31 -0700)
If the RW volume is listed after the RO convert target in the VLDB,
the code failed to detect that an RW is already present and would
create a second RW volume.

Reviewed-on: http://gerrit.openafs.org/7385
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit 9a728fd86c7add13e15dfa0d3062fa94cc77c53f)

Change-Id: I7e4eaf0ffefedb3c665e28656a75959eb8677071
Reviewed-on: http://gerrit.openafs.org/7497
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/volser/vos.c

index d8ea2d2a9d66aa9255c0db59933a5676aaf8eb5a..e5197e2c5a911730dc7340de8fa6b71d9621533c 100644 (file)
@@ -5575,8 +5575,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,
@@ -5588,7 +5589,8 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
                roindex = i;
                roserver = entry.serverNumber[i];
                ropartition = entry.serverPartition[i];
-               break;
+               if (rwserver)
+                    break;
            }
        }
     }