diff options
| author | Robert Richter <robert.richter@amd.com> | 2009-06-10 23:47:10 +0400 |
|---|---|---|
| committer | Robert Richter <robert.richter@amd.com> | 2009-06-10 23:47:10 +0400 |
| commit | 0886751c5d8b19fcee2e65d34ae21c9111e652a9 (patch) | |
| tree | 015e8c2b3d44d46e9e8fccd016340c51bc876d3b /fs/jbd/commit.c | |
| parent | 7e4e0bd50e80df2fe5501f48f872448376cdd997 (diff) | |
| parent | 07a2039b8eb0af4ff464efd3dfd95de5c02648c6 (diff) | |
| download | linux-0886751c5d8b19fcee2e65d34ae21c9111e652a9.tar.xz | |
Merge commit 'v2.6.30' into oprofile/master
Diffstat (limited to 'fs/jbd/commit.c')
| -rw-r--r-- | fs/jbd/commit.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c index 06560c520f49..618e21c0b7a3 100644 --- a/fs/jbd/commit.c +++ b/fs/jbd/commit.c @@ -241,7 +241,7 @@ write_out_data: spin_lock(&journal->j_list_lock); } /* Someone already cleaned up the buffer? */ - if (!buffer_jbd(bh) + if (!buffer_jbd(bh) || bh2jh(bh) != jh || jh->b_transaction != commit_transaction || jh->b_jlist != BJ_SyncData) { jbd_unlock_bh_state(bh); @@ -478,7 +478,9 @@ void journal_commit_transaction(journal_t *journal) spin_lock(&journal->j_list_lock); continue; } - if (buffer_jbd(bh) && jh->b_jlist == BJ_Locked) { + if (buffer_jbd(bh) && bh2jh(bh) == jh && + jh->b_transaction == commit_transaction && + jh->b_jlist == BJ_Locked) { __journal_unfile_buffer(jh); jbd_unlock_bh_state(bh); journal_remove_journal_head(bh); |
