summaryrefslogtreecommitdiffstats
path: root/fs/jbd/commit.c
diff options
context:
space:
mode:
authorMingming Cao <cmm@us.ibm.com>2008-05-15 01:05:41 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-15 04:11:14 +0200
commit772279c5f1dceb58d451dca94b557fd89b1ce890 (patch)
treefa547bae10644896db94514db052443c6d903533 /fs/jbd/commit.c
parentmemory hotplug: memmap_init_zone called twice (diff)
downloadlinux-772279c5f1dceb58d451dca94b557fd89b1ce890.tar.xz
linux-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 <cmm@us.ibm.com> Acked-by: Jan Kara <jack@ucw.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
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);