-
- /* handle a Samba upgrade */
- tdb_lock_bystring(share_tdb, vstring);
+
+ vers_id = dbwrap_fetch_int32(share_db, vstring);
+ if (vers_id == SHARE_DATABASE_VERSION_V2) {
+ return true;
+ }
+
+ if (share_db->transaction_start(share_db) != 0) {
+ DEBUG(0, ("transaction_start failed\n"));
+ TALLOC_FREE(share_db);
+ return false;
+ }
+
+ vers_id = dbwrap_fetch_int32(share_db, vstring);
+ if (vers_id == SHARE_DATABASE_VERSION_V2) {
+ /*
+ * Race condition
+ */
+ if (share_db->transaction_cancel(share_db)) {
+ smb_panic("transaction_cancel failed");
+ }
+ return true;
+ }