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;
int fd = -1;
afs_int32 pass;
- afs_pthread_setname_self("recovery");
+ memset(pbuffer, 0, sizeof(pbuffer));
+
+ opr_threadname_set("recovery");
/* otherwise, begin interaction */
urecovery_state = 0;
/* we don't have the best version; we should fetch it. */
urecovery_AbortAll(ubik_dbase);
+ pbuffer[0] = '\0';
+
/* Rx code to do the Bulk fetch */
file = 0;
offset = 0;
#endif
}
if (code) {
- unlink(pbuffer);
+ if (pbuffer[0] != '\0') {
+ unlink(pbuffer);
+ }
/*
* We will effectively invalidate the old data forever now.
* Unclear if we *should* but we do.
* the write-lock above if there is a write transaction in progress,
* but then, it won't hurt to check, will it?
*/
- if (ubik_dbase->flags & DBWRITING) {
+ if (ubik_dbase->dbFlags & DBWRITING) {
struct timeval tv;
int safety = 0;
long cur_usec = 50000;
- while ((ubik_dbase->flags & DBWRITING) && (safety < 500)) {
+ while ((ubik_dbase->dbFlags & DBWRITING) && (safety < 500)) {
DBRELE(ubik_dbase);
/* sleep for a little while */
tv.tv_sec = 0;