]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-vos-new-repsite-cleanup-20040601
authorDerrick Brashear <shadow@dementia.org>
Mon, 18 Oct 2004 06:23:13 +0000 (06:23 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 18 Oct 2004 06:23:13 +0000 (06:23 +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, ne
ver print "Old Release" for the RW, to avoid confusion

(cherry picked from commit 07ba4620cf956d1cecd5bcd4448179b681c1cc3b)

src/volser/vsprocs.c

index e50b19849e36a3fe560d060ab3a0e6691da2507f..2a9b5173994ba59447aa2c2ee667fdb83e71bb76 100644 (file)
@@ -352,6 +352,8 @@ struct nvldbentry *entry;
           if (entry->serverFlags[i] & NEW_REPSITE)
              fprintf(STDOUT," -- New release");
           else
+              if (!(entry->serverFlags[i] & ITSRWVOL))
+                   fprintf(STDOUT," -- Old release");
              fprintf(STDOUT," -- Old release");
        } else {
           if (entry->serverFlags[i] & RO_DONTUSE)
@@ -2008,11 +2010,13 @@ UV_ReleaseVolume(afromvol, afromserver, afrompart, forceflag)
   }
 
   /* 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 */