|
Lines 541-557
handle_t *jbd2_journal_start(journal_t *journal, int nblocks)
Link Here
|
| 541 |
} |
541 |
} |
| 542 |
EXPORT_SYMBOL(jbd2_journal_start); |
542 |
EXPORT_SYMBOL(jbd2_journal_start); |
| 543 |
|
543 |
|
| 544 |
static void __jbd2_journal_unreserve_handle(handle_t *handle) |
544 |
static void __jbd2_journal_unreserve_handle(handle_t *handle, transaction_t *t) |
| 545 |
{ |
545 |
{ |
| 546 |
journal_t *journal = handle->h_journal; |
546 |
journal_t *journal = handle->h_journal; |
| 547 |
|
547 |
|
| 548 |
WARN_ON(!handle->h_reserved); |
548 |
WARN_ON(!handle->h_reserved); |
| 549 |
sub_reserved_credits(journal, handle->h_total_credits); |
549 |
sub_reserved_credits(journal, handle->h_total_credits); |
|
|
550 |
if (t) |
| 551 |
atomic_sub(handle->h_total_credits, &t->t_outstanding_credits); |
| 550 |
} |
552 |
} |
| 551 |
|
553 |
|
| 552 |
void jbd2_journal_free_reserved(handle_t *handle) |
554 |
void jbd2_journal_free_reserved(handle_t *handle) |
| 553 |
{ |
555 |
{ |
| 554 |
__jbd2_journal_unreserve_handle(handle); |
556 |
journal_t *journal = handle->h_journal; |
|
|
557 |
|
| 558 |
/* Get j_state_lock to pin running transaction if it exists */ |
| 559 |
read_lock(&journal->j_state_lock); |
| 560 |
__jbd2_journal_unreserve_handle(handle, journal->j_running_transaction); |
| 561 |
read_unlock(&journal->j_state_lock); |
| 555 |
jbd2_free_handle(handle); |
562 |
jbd2_free_handle(handle); |
| 556 |
} |
563 |
} |
| 557 |
EXPORT_SYMBOL(jbd2_journal_free_reserved); |
564 |
EXPORT_SYMBOL(jbd2_journal_free_reserved); |
|
Lines 721-728
static void stop_this_handle(handle_t *handle)
Link Here
|
| 721 |
} |
728 |
} |
| 722 |
atomic_sub(handle->h_total_credits, |
729 |
atomic_sub(handle->h_total_credits, |
| 723 |
&transaction->t_outstanding_credits); |
730 |
&transaction->t_outstanding_credits); |
| 724 |
if (handle->h_rsv_handle) |
731 |
if (handle->h_rsv_handle) { |
| 725 |
__jbd2_journal_unreserve_handle(handle->h_rsv_handle); |
732 |
__jbd2_journal_unreserve_handle(handle->h_rsv_handle, |
|
|
733 |
transaction); |
| 734 |
} |
| 726 |
if (atomic_dec_and_test(&transaction->t_updates)) |
735 |
if (atomic_dec_and_test(&transaction->t_updates)) |
| 727 |
wake_up(&journal->j_wait_updates); |
736 |
wake_up(&journal->j_wait_updates); |
| 728 |
|
737 |
|
| 729 |
- |
|
|