jbd2: update transaction t_state to T_COMMIT fix
authorMingming Cao <cmm@us.ibm.com>
Thu, 15 May 2008 18:46:17 +0000 (14:46 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 15 May 2008 18:46:17 +0000 (14:46 -0400)
Updating the current transaction's t_state is protected by j_state_lock.  We
need to do the same when updating the t_state to T_COMMIT.

Acked-by: Jan Kara <jack@suse.cz>
Signed-off-by: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/jbd2/commit.c

index e0139786f717839ff5c7b5f542449593c1fcab54..4d99685fdce43b5ebb1c5ccbcab5a89c2443747a 100644 (file)
@@ -560,7 +560,9 @@ void jbd2_journal_commit_transaction(journal_t *journal)
         * transaction!  Now comes the tricky part: we need to write out
         * metadata.  Loop over the transaction's entire buffer list:
         */
+       spin_lock(&journal->j_state_lock);
        commit_transaction->t_state = T_COMMIT;
+       spin_unlock(&journal->j_state_lock);
 
        stats.u.run.rs_logging = jiffies;
        stats.u.run.rs_flushing = jbd2_time_diff(stats.u.run.rs_flushing,