From: sashiko-bot@kernel.org
To: "Ojaswin Mujoo" <ojaswin@linux.ibm.com>
Cc: linux-ext4@vger.kernel.org, tytso@mit.edu
Subject: Re: [PATCH 8/8] ext4: optimize inflight dio tracking for zeroout
Date: Mon, 02 Nov 2026 18:43:35 +0000 [thread overview]
Message-ID: <sashiko-outbox-193960@kernel.org> (raw)
In-Reply-To: <20261102-ext4-endio-zero-bug-v1-8-266d2bb9e6dc@linux.ibm.com>
> Earlier zeroout used inode->i_dio_count to detect in-flight DIOs
> that might have valid data underneath an unwritten extent. However,
> i_dio_count accounts for every DIO on the inode, including reads and writes
> that never touch an unwritten extent, which makes it prone to false
> positives and needlessly suppresses the zeroout fallback.
>
> Optimize this by moving DIO accounting to i_conv_pending_ios, which is only
> incremented for DIOs that actually encounter an unwritten extent, and
> decremented once at endio after the conversion is done.
>
> The main issue is that ext4_iomap_begin() doesn't have any way to track
> something only once per dio, hence, we use a custom ext4_iomap_next() that
> utilizes iter->private to ensure we increment the i_conv_pending_ios only
> once per a dio that encounters unwritten extents.
>
> Now that dio has moved to i_conv_pending_ios, we need to pass NO_CONV_ACC
> get blocks flag to ext4_ext_convert_to_initialized(). This path is
> reachable from dio but doesn't need to account in i_conv_pending_ios
> because we don't issue any IO before conversion, hence the flag helps
> zeroout to make the right call.
>
> Signed-off-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261102-ext4-endio-zero-bug-v1-0-266d2bb9e6dc@linux.ibm.com?part=8
prev parent reply other threads:[~2026-11-02 18:43 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-02 18:26 [PATCH 0/8] ext4: fix endio zeroout corruption by tracking to-be-converted unwritten IOs Ojaswin Mujoo
2026-11-02 18:26 ` [PATCH 1/8] ext4: add extra_flags param to ext4_convert_unwritten_extents() Ojaswin Mujoo
2026-11-02 18:30 ` sashiko-bot
2026-11-02 18:26 ` [PATCH 2/8] ext4: fix endio zeroout corruption by tracking unwritten to-be-converted IOs Ojaswin Mujoo
2026-11-02 18:44 ` sashiko-bot
2026-11-02 18:26 ` [PATCH 3/8] ext4: add tracing for i_conv_pending_ios tracking Ojaswin Mujoo
2026-11-02 18:30 ` sashiko-bot
2026-11-02 18:26 ` [PATCH 4/8] ext4: don't zeroout if we have inflight unwritten IOs in non buffered-iomap path Ojaswin Mujoo
2026-11-02 18:38 ` sashiko-bot
2026-11-02 18:26 ` [PATCH 5/8] ext4: don't zeroout if we have inflight direct IOs Ojaswin Mujoo
2026-11-02 18:47 ` sashiko-bot
2026-11-02 18:26 ` [PATCH 6/8] ext4: make sure zero range WRITE_ZEROES uses NO_CONV_ACC flag Ojaswin Mujoo
2026-11-02 18:47 ` sashiko-bot
2026-11-02 18:26 ` [PATCH 7/8] ext4: don't zeroout if we have inflight unwritten IOs in buffered iomap path Ojaswin Mujoo
2026-11-02 18:38 ` sashiko-bot
2026-11-02 18:26 ` [PATCH 8/8] ext4: optimize inflight dio tracking for zeroout Ojaswin Mujoo
2026-11-02 18:43 ` sashiko-bot [this message]
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=sashiko-outbox-193960@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=ojaswin@linux.ibm.com \
--cc=sashiko-reviews@lists.linux.dev \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.