diff options
Diffstat (limited to 'fs/jbd2/commit.c')
-rw-r--r-- | fs/jbd2/commit.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index 073124a29b8c..62804e57a44c 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c | |||
@@ -535,6 +535,10 @@ void jbd2_journal_commit_transaction(journal_t *journal) | |||
535 | if (is_journal_aborted(journal)) { | 535 | if (is_journal_aborted(journal)) { |
536 | clear_buffer_jbddirty(jh2bh(jh)); | 536 | clear_buffer_jbddirty(jh2bh(jh)); |
537 | JBUFFER_TRACE(jh, "journal is aborting: refile"); | 537 | JBUFFER_TRACE(jh, "journal is aborting: refile"); |
538 | jbd2_buffer_abort_trigger(jh, | ||
539 | jh->b_frozen_data ? | ||
540 | jh->b_frozen_triggers : | ||
541 | jh->b_triggers); | ||
538 | jbd2_journal_refile_buffer(journal, jh); | 542 | jbd2_journal_refile_buffer(journal, jh); |
539 | /* If that was the last one, we need to clean up | 543 | /* If that was the last one, we need to clean up |
540 | * any descriptor buffers which may have been | 544 | * any descriptor buffers which may have been |
@@ -870,6 +874,9 @@ restart_loop: | |||
870 | * data. | 874 | * data. |
871 | * | 875 | * |
872 | * Otherwise, we can just throw away the frozen data now. | 876 | * Otherwise, we can just throw away the frozen data now. |
877 | * | ||
878 | * We also know that the frozen data has already fired | ||
879 | * its triggers if they exist, so we can clear that too. | ||
873 | */ | 880 | */ |
874 | if (jh->b_committed_data) { | 881 | if (jh->b_committed_data) { |
875 | jbd2_free(jh->b_committed_data, bh->b_size); | 882 | jbd2_free(jh->b_committed_data, bh->b_size); |
@@ -877,10 +884,12 @@ restart_loop: | |||
877 | if (jh->b_frozen_data) { | 884 | if (jh->b_frozen_data) { |
878 | jh->b_committed_data = jh->b_frozen_data; | 885 | jh->b_committed_data = jh->b_frozen_data; |
879 | jh->b_frozen_data = NULL; | 886 | jh->b_frozen_data = NULL; |
887 | jh->b_frozen_triggers = NULL; | ||
880 | } | 888 | } |
881 | } else if (jh->b_frozen_data) { | 889 | } else if (jh->b_frozen_data) { |
882 | jbd2_free(jh->b_frozen_data, bh->b_size); | 890 | jbd2_free(jh->b_frozen_data, bh->b_size); |
883 | jh->b_frozen_data = NULL; | 891 | jh->b_frozen_data = NULL; |
892 | jh->b_frozen_triggers = NULL; | ||
884 | } | 893 | } |
885 | 894 | ||
886 | spin_lock(&journal->j_list_lock); | 895 | spin_lock(&journal->j_list_lock); |