aboutsummaryrefslogtreecommitdiffstats
path: root/fs/jbd/commit.c
diff options
context:
space:
mode:
authorMingming Cao <[email protected]>2008-05-14 23:05:41 +0000
committerLinus Torvalds <[email protected]>2008-05-15 02:11:14 +0000
commit772279c5f1dceb58d451dca94b557fd89b1ce890 (patch)
treefa547bae10644896db94514db052443c6d903533 /fs/jbd/commit.c
parentmemory hotplug: memmap_init_zone called twice (diff)
downloadkernel-772279c5f1dceb58d451dca94b557fd89b1ce890.tar.gz
kernel-772279c5f1dceb58d451dca94b557fd89b1ce890.zip
jbd: need to hold j_state_lock to updates to transaction t_state to T_COMMIT
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. Signed-off-by: Mingming Cao <[email protected]> Acked-by: Jan Kara <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'fs/jbd/commit.c')
-rw-r--r--fs/jbd/commit.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c
index cd931ef1f000..5a8ca61498ca 100644
--- a/fs/jbd/commit.c
+++ b/fs/jbd/commit.c
@@ -470,7 +470,9 @@ void 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);
J_ASSERT(commit_transaction->t_nr_buffers <=
commit_transaction->t_outstanding_credits);