diff --git a/src/ubik/remote.c b/src/ubik/remote.c index 6dabe61c00..11bf375faa 100644 --- a/src/ubik/remote.c +++ b/src/ubik/remote.c @@ -71,6 +71,10 @@ SDISK_Begin(struct rx_call *rxcall, struct ubik_tid *atid) return code; } DBHOLD(ubik_dbase); + if (urecovery_AllBetter(ubik_dbase, 0) == 0) { + code = UNOQUORUM; + goto out; + } urecovery_CheckTid(atid); if (ubik_currentTrans) { /* If the thread is not waiting for lock - ok to end it */ @@ -89,6 +93,7 @@ SDISK_Begin(struct rx_call *rxcall, struct ubik_tid *atid) ubik_currentTrans->tid.epoch = atid->epoch; ubik_currentTrans->tid.counter = atid->counter; } + out: DBRELE(ubik_dbase); return code; }