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 ebc667bc54a8..c8a1bace685a 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c | |||
@@ -509,6 +509,10 @@ void jbd2_journal_commit_transaction(journal_t *journal) | |||
509 | if (is_journal_aborted(journal)) { | 509 | if (is_journal_aborted(journal)) { |
510 | clear_buffer_jbddirty(jh2bh(jh)); | 510 | clear_buffer_jbddirty(jh2bh(jh)); |
511 | JBUFFER_TRACE(jh, "journal is aborting: refile"); | 511 | JBUFFER_TRACE(jh, "journal is aborting: refile"); |
512 | jbd2_buffer_abort_trigger(jh, | ||
513 | jh->b_frozen_data ? | ||
514 | jh->b_frozen_triggers : | ||
515 | jh->b_triggers); | ||
512 | jbd2_journal_refile_buffer(journal, jh); | 516 | jbd2_journal_refile_buffer(journal, jh); |
513 | /* If that was the last one, we need to clean up | 517 | /* If that was the last one, we need to clean up |
514 | * any descriptor buffers which may have been | 518 | * any descriptor buffers which may have been |
@@ -844,6 +848,9 @@ restart_loop: | |||
844 | * data. | 848 | * data. |
845 | * | 849 | * |
846 | * Otherwise, we can just throw away the frozen data now. | 850 | * Otherwise, we can just throw away the frozen data now. |
851 | * | ||
852 | * We also know that the frozen data has already fired | ||
853 | * its triggers if they exist, so we can clear that too. | ||
847 | */ | 854 | */ |
848 | if (jh->b_committed_data) { | 855 | if (jh->b_committed_data) { |
849 | jbd2_free(jh->b_committed_data, bh->b_size); | 856 | jbd2_free(jh->b_committed_data, bh->b_size); |
@@ -851,10 +858,12 @@ restart_loop: | |||
851 | if (jh->b_frozen_data) { | 858 | if (jh->b_frozen_data) { |
852 | jh->b_committed_data = jh->b_frozen_data; | 859 | jh->b_committed_data = jh->b_frozen_data; |
853 | jh->b_frozen_data = NULL; | 860 | jh->b_frozen_data = NULL; |
861 | jh->b_frozen_triggers = NULL; | ||
854 | } | 862 | } |
855 | } else if (jh->b_frozen_data) { | 863 | } else if (jh->b_frozen_data) { |
856 | jbd2_free(jh->b_frozen_data, bh->b_size); | 864 | jbd2_free(jh->b_frozen_data, bh->b_size); |
857 | jh->b_frozen_data = NULL; | 865 | jh->b_frozen_data = NULL; |
866 | jh->b_frozen_triggers = NULL; | ||
858 | } | 867 | } |
859 | 868 | ||
860 | spin_lock(&journal->j_list_lock); | 869 | spin_lock(&journal->j_list_lock); |