diff options
Diffstat (limited to 'fs/jbd2/journal.c')
| -rw-r--r-- | fs/jbd2/journal.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index bc2ff5932769..036880895bfc 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c | |||
| @@ -297,7 +297,6 @@ int jbd2_journal_write_metadata_buffer(transaction_t *transaction, | |||
| 297 | struct page *new_page; | 297 | struct page *new_page; |
| 298 | unsigned int new_offset; | 298 | unsigned int new_offset; |
| 299 | struct buffer_head *bh_in = jh2bh(jh_in); | 299 | struct buffer_head *bh_in = jh2bh(jh_in); |
| 300 | struct jbd2_buffer_trigger_type *triggers; | ||
| 301 | journal_t *journal = transaction->t_journal; | 300 | journal_t *journal = transaction->t_journal; |
| 302 | 301 | ||
| 303 | /* | 302 | /* |
| @@ -328,21 +327,21 @@ repeat: | |||
| 328 | done_copy_out = 1; | 327 | done_copy_out = 1; |
| 329 | new_page = virt_to_page(jh_in->b_frozen_data); | 328 | new_page = virt_to_page(jh_in->b_frozen_data); |
| 330 | new_offset = offset_in_page(jh_in->b_frozen_data); | 329 | new_offset = offset_in_page(jh_in->b_frozen_data); |
| 331 | triggers = jh_in->b_frozen_triggers; | ||
| 332 | } else { | 330 | } else { |
| 333 | new_page = jh2bh(jh_in)->b_page; | 331 | new_page = jh2bh(jh_in)->b_page; |
| 334 | new_offset = offset_in_page(jh2bh(jh_in)->b_data); | 332 | new_offset = offset_in_page(jh2bh(jh_in)->b_data); |
| 335 | triggers = jh_in->b_triggers; | ||
| 336 | } | 333 | } |
| 337 | 334 | ||
| 338 | mapped_data = kmap_atomic(new_page, KM_USER0); | 335 | mapped_data = kmap_atomic(new_page, KM_USER0); |
| 339 | /* | 336 | /* |
| 340 | * Fire any commit trigger. Do this before checking for escaping, | 337 | * Fire data frozen trigger if data already wasn't frozen. Do this |
| 341 | * as the trigger may modify the magic offset. If a copy-out | 338 | * before checking for escaping, as the trigger may modify the magic |
| 342 | * happens afterwards, it will have the correct data in the buffer. | 339 | * offset. If a copy-out happens afterwards, it will have the correct |
| 340 | * data in the buffer. | ||
| 343 | */ | 341 | */ |
| 344 | jbd2_buffer_commit_trigger(jh_in, mapped_data + new_offset, | 342 | if (!done_copy_out) |
| 345 | triggers); | 343 | jbd2_buffer_frozen_trigger(jh_in, mapped_data + new_offset, |
| 344 | jh_in->b_triggers); | ||
| 346 | 345 | ||
| 347 | /* | 346 | /* |
| 348 | * Check for escaping | 347 | * Check for escaping |
