X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fubik%2Frecovery.c;h=99b9fd8d632148ed2e52b745ee38491ff1e16108;hp=5e42b54055811e6249346c94e8b8e8c654febeca;hb=660a0855bb9351a72ef45cd72e02503c86bf2cea;hpb=091e8e9ca52e408c52e3310588d6c959a517a15c diff --git a/src/ubik/recovery.c b/src/ubik/recovery.c index 5e42b54..99b9fd8 100644 --- a/src/ubik/recovery.c +++ b/src/ubik/recovery.c @@ -159,8 +159,20 @@ urecovery_CheckTid(struct ubik_tid *atid, int abortalways) if (atid->epoch != ubik_currentTrans->tid.epoch || atid->counter > ubik_currentTrans->tid.counter || abortalways) { /* don't match, abort it */ + int endit = 0; /* If the thread is not waiting for lock - ok to end it */ if (ubik_currentTrans->locktype != LOCKWAIT) { + endit = 1; + } + + ViceLog(0, ("urecovery_CheckTid: Aborting/ending bad remote " + "transaction. (tx %d.%d, atid %d.%d, abortalways %d, " + "endit %d)\n", + ubik_currentTrans->tid.epoch, + ubik_currentTrans->tid.counter, + atid->epoch, atid->counter, + abortalways, endit)); + if (endit) { udisk_end(ubik_currentTrans); } ubik_currentTrans = (struct ubik_trans *)0;