volser-reclone-bring-online-before-giveback-20080716
authorDerrick Brashear <shadow@dementia.org>
Wed, 16 Jul 2008 05:15:44 +0000 (05:15 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 16 Jul 2008 05:15:44 +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

src/volser/volprocs.c

index 34c7fef..7f23d98 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);