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 0/13 v1] ext4: Make ext4_writepages() write all journalled data
Date: Wed, 29 Mar 2023 17:49:31 +0200 [thread overview]
Message-ID: <20230329125740.4127-1-jack@suse.cz> (raw)
Hello,
These patches modify ext4 so that whenever inode with journalled data is
written back we make sure we writeout all the dirty data the inode has.
Previously this was not the case as pages with journalled data that were still
part of running (or committing) transaction appeared as clean to the writeback
code. As a result we can remove workarounds for inodes with journalled data
from multiple places.
In particular, we make sure a page is marked as dirty as soon as it has any
data to write (even though it is part of the running transaction) and in
ext4_writepages() we make sure appropriate transaction is committed (in
WB_SYNC_ALL mode) and then go writing back pages (effectively performing a
checkpoint for the inode). Thus after WB_SYNC_ALL writeback all pages for the
inode are guaranteed to be clean (providing there were no new pages dirtied)
the same way this is guaranteed for non-journaled data.
The downside of this change is that workloads that use journalled data and
frequently redirty pages and call fsync(2) will see more IO happening (more
pages will get checkpointed). But given low amount of users of data=journal
mode and their nature, I deem the code simplification worth it.
Honza
next reply other threads:[~2023-03-29 15:49 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-29 15:49 Jan Kara [this message]
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 ` [PATCH 03/13] ext4: Keep " Jan Kara
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=20230329125740.4127-1-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