diff options
Diffstat (limited to 'fs/jbd2/commit.c')
| -rw-r--r-- | fs/jbd2/commit.c | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index 2d5095ecc25f..5b506e53c70b 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c @@ -677,6 +677,10 @@ start_journal_io:  		err = 0;  	} +	write_lock(&journal->j_state_lock); +	J_ASSERT(commit_transaction->t_state == T_COMMIT); +	commit_transaction->t_state = T_COMMIT_DFLUSH; +	write_unlock(&journal->j_state_lock);  	/*   	 * If the journal is not located on the file system device,  	 * then we must flush the file system device before we issue @@ -804,6 +808,10 @@ wait_for_iobuf:  		jbd2_journal_abort(journal, err);  	jbd_debug(3, "JBD: commit phase 5\n"); +	write_lock(&journal->j_state_lock); +	J_ASSERT(commit_transaction->t_state == T_COMMIT_DFLUSH); +	commit_transaction->t_state = T_COMMIT_JFLUSH; +	write_unlock(&journal->j_state_lock);  	if (!JBD2_HAS_INCOMPAT_FEATURE(journal,  				       JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT)) { @@ -959,7 +967,7 @@ restart_loop:  	jbd_debug(3, "JBD: commit phase 7\n"); -	J_ASSERT(commit_transaction->t_state == T_COMMIT); +	J_ASSERT(commit_transaction->t_state == T_COMMIT_JFLUSH);  	commit_transaction->t_start = jiffies;  	stats.run.rs_logging = jbd2_time_diff(stats.run.rs_logging,  | 
