diff options
Diffstat (limited to 'fs/jbd/commit.c')
| -rw-r--r-- | fs/jbd/commit.c | 15 | 
1 files changed, 7 insertions, 8 deletions
| diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c index 69b18045946..72ffa974b0b 100644 --- a/fs/jbd/commit.c +++ b/fs/jbd/commit.c @@ -302,12 +302,6 @@ void journal_commit_transaction(journal_t *journal)  	 * all outstanding updates to complete.  	 */ -#ifdef COMMIT_STATS -	spin_lock(&journal->j_list_lock); -	summarise_journal_usage(journal); -	spin_unlock(&journal->j_list_lock); -#endif -  	/* Do we need to erase the effects of a prior journal_flush? */  	if (journal->j_flags & JFS_FLUSHED) {  		jbd_debug(3, "super block updated\n"); @@ -722,8 +716,13 @@ wait_for_iobuf:                     required. */  		JBUFFER_TRACE(jh, "file as BJ_Forget");  		journal_file_buffer(jh, commit_transaction, BJ_Forget); -		/* Wake up any transactions which were waiting for this -		   IO to complete */ +		/* +		 * Wake up any transactions which were waiting for this +		 * IO to complete. The barrier must be here so that changes +		 * by journal_file_buffer() take effect before wake_up_bit() +		 * does the waitqueue check. +		 */ +		smp_mb();  		wake_up_bit(&bh->b_state, BH_Unshadow);  		JBUFFER_TRACE(jh, "brelse shadowed buffer");  		__brelse(bh); | 
