X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Flib%2Fjcr.c;h=afa0555c8ee91c25720489c0e8041b3ed225e16b;hb=4137d8ab47939bf6d83eb5153ec854c5da0f776d;hp=d7fdc9d49446973e91d2ceb46211dcd2351b0b6f;hpb=c10d603f96a4d9ad2f69b1344ad34811271a9d58;p=bacula%2Fbacula diff --git a/bacula/src/lib/jcr.c b/bacula/src/lib/jcr.c index d7fdc9d494..afa0555c8e 100755 --- a/bacula/src/lib/jcr.c +++ b/bacula/src/lib/jcr.c @@ -352,6 +352,7 @@ void free_jcr(JCR *jcr) #endif + dequeue_messages(jcr); lock_jcr_chain(); jcr->use_count--; /* decrement use count */ if (jcr->use_count < 0) { @@ -364,19 +365,17 @@ void free_jcr(JCR *jcr) Dmsg2(400, "free_jcr 0x%x use_count=%d\n", jcr, jcr->use_count); return; } - dequeue_messages(jcr); - remove_jcr(jcr); + remove_jcr(jcr); /* remove Jcr from chain */ + unlock_jcr_chain(); + job_end_pop(jcr); /* pop and call hooked routines */ Dmsg1(400, "End job=%d\n", jcr->JobId); if (jcr->daemon_free_jcr) { jcr->daemon_free_jcr(jcr); /* call daemon free routine */ } - free_common_jcr(jcr); - close_msg(NULL); /* flush any daemon messages */ - unlock_jcr_chain(); Dmsg0(400, "Exit free_jcr\n"); } @@ -530,11 +529,16 @@ static int lock_count = 0; /* * Lock the chain */ +#ifdef TRACE_JCR_CHAIN +void b_lock_jcr_chain(const char *fname, int line) +#else void lock_jcr_chain() +#endif { int errstat; #ifdef TRACE_JCR_CHAIN - Dmsg1(000, "Lock jcr chain %d.\n", ++lock_count); + Dmsg3(000, "Lock jcr chain %d from %s:%d\n", ++lock_count, + fname, line); #endif if ((errstat=rwl_writelock(&lock)) != 0) { Emsg1(M_ABORT, 0, "rwl_writelock failure. ERR=%s\n", @@ -545,11 +549,16 @@ void lock_jcr_chain() /* * Unlock the chain */ +#ifdef TRACE_JCR_CHAIN +void b_unlock_jcr_chain(const char *fname, int line) +#else void unlock_jcr_chain() +#endif { int errstat; #ifdef TRACE_JCR_CHAIN - Dmsg1(000, "Unlock jcr chain %d\n", lock_count--); + Dmsg3(000, "Unlock jcr chain %d from %s:%d\n", lock_count--, + fname, line); #endif if ((errstat=rwl_writeunlock(&lock)) != 0) { Emsg1(M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n",