View | Details | Raw Unified | Return to bug 1169774
Collapse All | Expand All

(-)a/fs/jbd2/transaction.c (-5 / +13 lines)
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
- 

Return to bug 1169774