diff options
-rw-r--r-- | fs/ext4/inode.c | 1 | ||||
-rw-r--r-- | fs/ext4/page-io.c | 6 |
2 files changed, 4 insertions, 3 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index c5de0c04204c..473226783d00 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -2393,7 +2393,6 @@ static int mpage_journal_page_buffers(handle_t *handle, int len; ClearPageChecked(page); - clear_page_dirty_for_io(page); mpd->wbc->nr_to_write--; if (page->index == size >> PAGE_SHIFT && diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c index 8fe1875b0a42..2e5e94219693 100644 --- a/fs/ext4/page-io.c +++ b/fs/ext4/page-io.c @@ -479,9 +479,11 @@ int ext4_bio_write_folio(struct ext4_io_submit *io, struct folio *folio, * to redirty the folio and keep TOWRITE tag so that * racing WB_SYNC_ALL writeback does not skip the folio. * This happens e.g. when doing writeout for - * transaction commit. + * transaction commit or when journalled data is not + * yet committed. */ - if (buffer_dirty(bh)) { + if (buffer_dirty(bh) || + (buffer_jbd(bh) && buffer_jbddirty(bh))) { if (!folio_test_dirty(folio)) folio_redirty_for_writepage(wbc, folio); keep_towrite = true; |