diff options
| author | Tony Luck <tony.luck@intel.com> | 2006-06-23 16:46:23 -0400 |
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2006-06-23 16:46:23 -0400 |
| commit | 8cf60e04a131310199d5776e2f9e915f0c468899 (patch) | |
| tree | 373a68e88e6737713a0a5723d552cdeefffff929 /fs/jbd/commit.c | |
| parent | 1323523f505606cfd24af6122369afddefc3b09d (diff) | |
| parent | 95eaa5fa8eb2c345244acd5f65b200b115ae8c65 (diff) | |
Auto-update from upstream
Diffstat (limited to 'fs/jbd/commit.c')
| -rw-r--r-- | fs/jbd/commit.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c index 002ad2bbc769..0971814c38b8 100644 --- a/fs/jbd/commit.c +++ b/fs/jbd/commit.c | |||
| @@ -790,11 +790,22 @@ restart_loop: | |||
| 790 | jbd_unlock_bh_state(bh); | 790 | jbd_unlock_bh_state(bh); |
| 791 | } else { | 791 | } else { |
| 792 | J_ASSERT_BH(bh, !buffer_dirty(bh)); | 792 | J_ASSERT_BH(bh, !buffer_dirty(bh)); |
| 793 | J_ASSERT_JH(jh, jh->b_next_transaction == NULL); | 793 | /* The buffer on BJ_Forget list and not jbddirty means |
| 794 | __journal_unfile_buffer(jh); | 794 | * it has been freed by this transaction and hence it |
| 795 | jbd_unlock_bh_state(bh); | 795 | * could not have been reallocated until this |
| 796 | journal_remove_journal_head(bh); /* needs a brelse */ | 796 | * transaction has committed. *BUT* it could be |
| 797 | release_buffer_page(bh); | 797 | * reallocated once we have written all the data to |
| 798 | * disk and before we process the buffer on BJ_Forget | ||
| 799 | * list. */ | ||
| 800 | JBUFFER_TRACE(jh, "refile or unfile freed buffer"); | ||
| 801 | __journal_refile_buffer(jh); | ||
| 802 | if (!jh->b_transaction) { | ||
| 803 | jbd_unlock_bh_state(bh); | ||
| 804 | /* needs a brelse */ | ||
| 805 | journal_remove_journal_head(bh); | ||
| 806 | release_buffer_page(bh); | ||
| 807 | } else | ||
| 808 | jbd_unlock_bh_state(bh); | ||
| 798 | } | 809 | } |
| 799 | cond_resched_lock(&journal->j_list_lock); | 810 | cond_resched_lock(&journal->j_list_lock); |
| 800 | } | 811 | } |
