diff options
Diffstat (limited to 'fs/jbd2/commit.c')
| -rw-r--r-- | fs/jbd2/commit.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index 5b9408e3b370..ac7f067b7bdd 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c @@ -488,7 +488,6 @@ void jbd2_journal_commit_transaction(journal_t *journal)  	jbd2_journal_wait_updates(journal);  	commit_transaction->t_state = T_SWITCH; -	write_unlock(&journal->j_state_lock);  	J_ASSERT (atomic_read(&commit_transaction->t_outstanding_credits) <=  			journal->j_max_transaction_buffers); @@ -508,6 +507,8 @@ void jbd2_journal_commit_transaction(journal_t *journal)  	 * has reserved.  This is consistent with the existing behaviour  	 * that multiple jbd2_journal_get_write_access() calls to the same  	 * buffer are perfectly permissible. +	 * We use journal->j_state_lock here to serialize processing of +	 * t_reserved_list with eviction of buffers from journal_unmap_buffer().  	 */  	while (commit_transaction->t_reserved_list) {  		jh = commit_transaction->t_reserved_list; @@ -527,6 +528,7 @@ void jbd2_journal_commit_transaction(journal_t *journal)  		jbd2_journal_refile_buffer(journal, jh);  	} +	write_unlock(&journal->j_state_lock);  	/*  	 * Now try to drop any written-back buffers from the journal's  	 * checkpoint lists.  We do this *before* commit because it potentially  | 
