vos-new-repsite-cleanup-20040601
authorDerrick Brashear <shadow@dementia.org>
Wed, 2 Jun 2004 09:39:34 +0000 (09:39 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 2 Jun 2004 09:39:34 +0000 (09:39 +0000)
FIXES 4730

if for some reason we got into a situation where all ROs were marked NEW_REPSITE in the vldb, vos release without -f deals very poorly. force a -f, and also, never print "Old Release" for the RW, to avoid confusion

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
FIXES 4730

if for some reason we got into a situation where all ROs were marked NEW_REPSITE
 in the vldb, vos release without -f deals very poorly. force a -f, and also, ne
ver print "Old Release" for the RW, to avoid confusion

src/volser/vsprocs.c

index 6ca2273..c1d0cca 100644 (file)
@@ -532,9 +532,10 @@ SubEnumerateEntry(struct nvldbentry *entry)
            fprintf(STDOUT, "RO Site ");
        if (isMixed) {
            if (entry->serverFlags[i] & NEW_REPSITE)
-               fprintf(STDOUT, " -- New release");
+               fprintf(STDOUT," -- New release");
            else
-               fprintf(STDOUT, " -- Old release");
+               if (!(entry->serverFlags[i] & ITSRWVOL))
+                   fprintf(STDOUT," -- Old release");
        } else {
            if (entry->serverFlags[i] & RO_DONTUSE)
                fprintf(STDOUT, " -- Not released");
@@ -3213,11 +3214,13 @@ UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver,
     }
 
     /* Will we be completing a previously unfinished release. -force overrides */
-    for (fullrelease = 1, i = 0; (fullrelease && (i < entry.nServers)); i++) {
-       if (entry.serverFlags[i] & NEW_REPSITE)
-           fullrelease = 0;
+    for (s = 0, m = 0, fullrelease=0, i=0; (i<entry.nServers); i++) {
+       if (entry.serverFlags[i] & ITSROVOL) {
+           m++;
+           if (entry.serverFlags[i] & NEW_REPSITE) s++;
+       }
     }
-    if (forceflag && !fullrelease)
+    if ((forceflag && !fullrelease) || (s == m) || (s == 0))
        fullrelease = 1;
 
     /* Determine which volume id to use and see if it exists */