ubik: Unlock version lock before udisk_end
[openafs.git] / src / ubik / ubik.c
index bc203b0..a22aaff 100644 (file)
@@ -667,7 +667,11 @@ BeginTrans(struct ubik_dbase *dbase, afs_int32 transMode,
     if (transMode == UBIK_WRITETRANS) {
        /* for a write trans, we have to keep track of the write tid counter too */
        dbase->writeTidCounter = tt->tid.counter;
+    }
+
+    UBIK_VERSION_UNLOCK;
 
+    if (transMode == UBIK_WRITETRANS) {
        /* next try to start transaction on appropriate number of machines */
        code = ContactQuorum_NoArguments(DISK_Begin, tt, 0);
        if (code) {
@@ -675,14 +679,12 @@ BeginTrans(struct ubik_dbase *dbase, afs_int32 transMode,
            udisk_abort(tt);
            ContactQuorum_NoArguments(DISK_Abort, tt, 0); /* force aborts to the others */
            udisk_end(tt);
-           UBIK_VERSION_UNLOCK;
            DBRELE(dbase);
            return code;
        }
     }
 
     *transPtr = tt;
-    UBIK_VERSION_UNLOCK;
     DBRELE(dbase);
     return 0;
 }