public inbox for linux-ext4@vger.kernel.org
 help / color / mirror / Atom feed
From: Jan Kara <jack@suse.cz>
To: Ted Tso <tytso@mit.edu>
Cc: <linux-ext4@vger.kernel.org>, Jan Kara <jack@suse.cz>
Subject: [PATCH 03/13] ext4: Keep pages with journalled data dirty
Date: Wed, 29 Mar 2023 17:49:34 +0200	[thread overview]
Message-ID: <20230329154950.19720-3-jack@suse.cz> (raw)
In-Reply-To: <20230329125740.4127-1-jack@suse.cz>

Currently we clear page dirty bit when we checkpoint some buffers from a
page with journalled data or when we perform delayed dirtying of a page
in ext4_writepages(). In a quest to simplify handling of journalled data
we want to keep page dirty as long as it has either buffers to
checkpoint or journalled dirty data. So make sure to keep page dirty in
ext4_writepages() if it still has journalled data attached to it.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext4/inode.c   | 1 -
 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 73e24e61fdd2..78e29da70af7 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -2387,7 +2387,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 8703fd732abb..23b29a50b159 100644
--- a/fs/ext4/page-io.c
+++ b/fs/ext4/page-io.c
@@ -484,9 +484,11 @@ int ext4_bio_write_page(struct ext4_io_submit *io,
 			 * to redirty the page and keep TOWRITE tag so that
 			 * racing WB_SYNC_ALL writeback does not skip the page.
 			 * 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 (!PageDirty(page))
 					redirty_page_for_writepage(wbc, page);
 				keep_towrite = true;
-- 
2.35.3


  parent reply	other threads:[~2023-03-29 15:50 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-29 15:49 [PATCH 0/13 v1] ext4: Make ext4_writepages() write all journalled data Jan Kara
2023-03-29 15:49 ` [PATCH 01/13] jdb2: Don't refuse invalidation of already invalidated buffers Jan Kara
2023-03-29 15:49 ` [PATCH 02/13] ext4: Mark pages with journalled data dirty Jan Kara
2023-03-29 15:49 ` Jan Kara [this message]
2023-03-29 15:49 ` [PATCH 04/13] ext4: Clear dirty bit from pages without data to write Jan Kara
2023-03-29 15:49 ` [PATCH 05/13] ext4: Commit transaction before writing back pages in data=journal mode Jan Kara
2023-03-29 15:49 ` [PATCH 06/13] ext4: Drop special handling of journalled data from ext4_sync_file() Jan Kara
2023-03-30  0:05   ` Christoph Hellwig
2023-03-30  8:21     ` Jan Kara
2023-03-29 15:49 ` [PATCH 07/13] ext4: Drop special handling of journalled data from extent shifting operations Jan Kara
2023-03-29 15:49 ` [PATCH 08/13] ext4: Fix special handling of journalled data from extent zeroing Jan Kara
2023-03-29 15:49 ` [PATCH 09/13] ext4: Drop special handling of journalled data from ext4_evict_inode() Jan Kara
2023-03-29 15:49 ` [PATCH 10/13] ext4: Drop special handling of journalled data from ext4_quota_on() Jan Kara
2023-03-29 15:49 ` [PATCH 11/13] ext4: Simplify handling of journalled data in ext4_bmap() Jan Kara
2023-03-29 15:49 ` [PATCH 12/13] ext4: Update comment in mpage_prepare_extent_to_map() Jan Kara
2023-03-29 15:49 ` [PATCH 13/13] Revert "ext4: Fix warnings when freezing filesystem with journaled data" Jan Kara
2023-04-15  3:07 ` [PATCH 0/13 v1] ext4: Make ext4_writepages() write all journalled data Theodore Ts'o

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230329154950.19720-3-jack@suse.cz \
    --to=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox