From f07737a27edacceb2a0e59abe9584df6f6f5e00a Mon Sep 17 00:00:00 2001 From: Mark Vitale Date: Tue, 8 May 2012 10:01:12 -0400 Subject: [PATCH] vos: convertROtoRW may create two RW volumes 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 Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit 9a728fd86c7add13e15dfa0d3062fa94cc77c53f) Change-Id: I7e4eaf0ffefedb3c665e28656a75959eb8677071 Reviewed-on: http://gerrit.openafs.org/7497 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/volser/vos.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/volser/vos.c b/src/volser/vos.c index d8ea2d2a9..e5197e2c5 100644 --- a/src/volser/vos.c +++ b/src/volser/vos.c @@ -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; } } } -- 2.39.5