]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-volser-reclone-bring-online-before-giveback-20080716
authorDerrick Brashear <shadow@dementia.org>
Wed, 16 Jul 2008 05:15:57 +0000 (05:15 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 16 Jul 2008 05:15:57 +0000 (05:15 +0000)
LICENSE IPL10
FIXES 107258

when giving back a volume after reclone, make it inService to avoid a race
between callers and the SetFlags RPC

(cherry picked from commit b4ce530d365e97342a92f4a8d59de12b0570c699)

src/volser/volprocs.c

index 12bf693324d3c6426400894be883c1daac15fdb7..279af06d0a13f5919c4924c0c2b180b282ea6757 100644 (file)
@@ -843,6 +843,11 @@ VolReClone(struct rx_call *acid, afs_int32 atrans, afs_int32 cloneId)
        LogError(error);
        goto fail;
     }
+    /* VUpdateVolume succeeded. Mark it in service so there's no window 
+     * between FSYNC_VOL_ON and VolSetFlags where it's offline with no  
+     * specialStatus; this is a reclone and this volume started online  
+     */
+    V_inService(clonevp) = 1;
     VDetachVolume(&error, clonevp);    /* allow file server to get it's hands on it */
     clonevp = NULL;
     VUpdateVolume(&error, originalvp);