|
@@ -518,9 +518,10 @@ void journal_commit_transaction(journal_t *journal)
|
|
jh = commit_transaction->t_buffers;
|
|
jh = commit_transaction->t_buffers;
|
|
|
|
|
|
/* If we're in abort mode, we just un-journal the buffer and
|
|
/* If we're in abort mode, we just un-journal the buffer and
|
|
- release it for background writing. */
|
|
|
|
|
|
+ release it. */
|
|
|
|
|
|
if (is_journal_aborted(journal)) {
|
|
if (is_journal_aborted(journal)) {
|
|
|
|
+ clear_buffer_jbddirty(jh2bh(jh));
|
|
JBUFFER_TRACE(jh, "journal is aborting: refile");
|
|
JBUFFER_TRACE(jh, "journal is aborting: refile");
|
|
journal_refile_buffer(journal, jh);
|
|
journal_refile_buffer(journal, jh);
|
|
/* If that was the last one, we need to clean up
|
|
/* If that was the last one, we need to clean up
|
|
@@ -855,6 +856,8 @@ restart_loop:
|
|
if (buffer_jbddirty(bh)) {
|
|
if (buffer_jbddirty(bh)) {
|
|
JBUFFER_TRACE(jh, "add to new checkpointing trans");
|
|
JBUFFER_TRACE(jh, "add to new checkpointing trans");
|
|
__journal_insert_checkpoint(jh, commit_transaction);
|
|
__journal_insert_checkpoint(jh, commit_transaction);
|
|
|
|
+ if (is_journal_aborted(journal))
|
|
|
|
+ clear_buffer_jbddirty(bh);
|
|
JBUFFER_TRACE(jh, "refile for checkpoint writeback");
|
|
JBUFFER_TRACE(jh, "refile for checkpoint writeback");
|
|
__journal_refile_buffer(jh);
|
|
__journal_refile_buffer(jh);
|
|
jbd_unlock_bh_state(bh);
|
|
jbd_unlock_bh_state(bh);
|