diff options
author | Mingming Cao <cmm@us.ibm.com> | 2008-05-15 03:05:41 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-15 06:11:14 +0400 |
commit | 772279c5f1dceb58d451dca94b557fd89b1ce890 (patch) | |
tree | fa547bae10644896db94514db052443c6d903533 /fs | |
parent | c3723ca3874a8fc2218c4726d57e3a7da9e83e47 (diff) | |
download | linux-772279c5f1dceb58d451dca94b557fd89b1ce890.tar.xz |
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')
-rw-r--r-- | fs/jbd/commit.c | 2 |
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); |