From: Brian Foster <bfoster@redhat.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org
Subject: Re: [PATCH v2 1/5] iomap, xfs: lift zero range hole mapping flush into xfs
Date: Mon, 2 Mar 2026 14:02:10 -0500 [thread overview]
Message-ID: <aaXesgEmu46X7OwD@bfoster> (raw)
In-Reply-To: <aY9hY7TwgMXJNzkI@bfoster>
On Fri, Feb 13, 2026 at 12:37:39PM -0500, Brian Foster wrote:
> On Thu, Feb 12, 2026 at 10:06:50PM -0800, Christoph Hellwig wrote:
> > This patch makes generic/363 and xfs/131 fail on zoned XFS file systems.
> > A later patch also makes generic/127, but I haven't fully bisected
> > the cause yet.
> >
> > I'll see if I can make sense of it, but unfortunately I've got a fair
> > amount of travel coming up, so it might take a while.
> >
> > If you want to give it a spin yourself, you can just add '-r zoned=1'
> > to the mkfs arguments for the test and scratch device.
> >
> >
>
> Ok, thanks for testing and reporting. I'm a little buried atm as well,
> but this isn't the most pressing series anyways. I'll dig into these
> tests when I spin back to this..
>
I got a chance to look into this. Note that I don't reproduce a
generic/127 failure (even after running a few iters), so I don't know if
that might be related to something on your end. I reproduce the other
two and those looked like straight failures to zero. From that I think
the issue is just that xfs_zoned_buffered_write_iomap_begin() minimally
needs the flush treatment from patch 1. I.e., something like the
appended diff allows these tests to pass with -rzoned=1.
Technically this could use the folio batch helper, but given that we
don't use that for the unwritten case (and thus already rely on the
iomap flush), and that this is currently experimental, I think this is
probably fine for now. Perhaps if we lift zeroing off into its own set
of callbacks, that might be a good opportunity to clean this up in both
places.
I'll run some more testing with this on -rzoned=1 and barring major
issues plan to include this in the next version of the series..
Brian
--- 8< ---
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index fcb9463d0d8c..5b709b86d7cb 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -1590,6 +1590,7 @@ xfs_zoned_buffered_write_iomap_begin(
{
struct iomap_iter *iter =
container_of(iomap, struct iomap_iter, iomap);
+ struct address_space *mapping = inode->i_mapping;
struct xfs_zone_alloc_ctx *ac = iter->private;
struct xfs_inode *ip = XFS_I(inode);
struct xfs_mount *mp = ip->i_mount;
@@ -1614,6 +1615,7 @@ xfs_zoned_buffered_write_iomap_begin(
if (error)
return error;
+restart:
error = xfs_ilock_for_iomap(ip, flags, &lockmode);
if (error)
return error;
@@ -1655,6 +1657,17 @@ xfs_zoned_buffered_write_iomap_begin(
* We never need to allocate blocks for zeroing a hole.
*/
if (flags & IOMAP_ZERO) {
+ if (filemap_range_needs_writeback(mapping,
+ offset, offset + count - 1)) {
+ xfs_iunlock(ip, lockmode);
+ error = filemap_write_and_wait_range(
+ mapping, offset,
+ offset + count - 1);
+ if (error)
+ return error;
+ goto restart;
+ }
+
xfs_hole_to_iomap(ip, iomap, offset_fsb,
smap.br_startoff);
goto out_unlock;
next prev parent reply other threads:[~2026-03-02 19:02 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-29 15:50 [PATCH v2 0/5] iomap, xfs: improve zero range flushing and lookup Brian Foster
2026-01-29 15:50 ` [PATCH v2 1/5] iomap, xfs: lift zero range hole mapping flush into xfs Brian Foster
2026-02-10 16:15 ` Christoph Hellwig
2026-02-10 19:14 ` Brian Foster
2026-02-11 15:36 ` Christoph Hellwig
2026-02-13 6:06 ` Christoph Hellwig
2026-02-13 17:37 ` Brian Foster
2026-03-02 19:02 ` Brian Foster [this message]
2026-03-03 14:37 ` Christoph Hellwig
2026-03-03 19:00 ` Brian Foster
2026-03-04 13:13 ` Christoph Hellwig
2026-03-04 14:17 ` Brian Foster
2026-03-04 14:41 ` Christoph Hellwig
2026-03-04 15:02 ` Brian Foster
2026-03-04 17:04 ` Brian Foster
2026-03-05 14:11 ` Christoph Hellwig
2026-03-05 15:06 ` Brian Foster
2026-03-05 16:10 ` Christoph Hellwig
2026-02-13 10:20 ` Nirjhar Roy (IBM)
2026-02-13 16:24 ` Darrick J. Wong
2026-02-18 17:41 ` Nirjhar Roy (IBM)
2026-01-29 15:50 ` [PATCH v2 2/5] xfs: flush eof folio before insert range size update Brian Foster
2026-02-10 16:16 ` Christoph Hellwig
2026-02-10 19:14 ` Brian Foster
2026-01-29 15:50 ` [PATCH v2 3/5] xfs: look up cow fork extent earlier for buffered iomap_begin Brian Foster
2026-02-10 16:17 ` Christoph Hellwig
2026-01-29 15:50 ` [PATCH v2 4/5] xfs: only flush when COW fork blocks overlap data fork holes Brian Foster
2026-02-10 16:19 ` Christoph Hellwig
2026-02-10 19:18 ` Brian Foster
2026-02-17 15:06 ` Nirjhar Roy (IBM)
2026-02-18 15:37 ` Brian Foster
2026-02-18 17:40 ` Nirjhar Roy (IBM)
2026-01-29 15:50 ` [PATCH v2 5/5] xfs: replace zero range flush with folio batch Brian Foster
2026-02-10 16:21 ` Christoph Hellwig
2026-02-10 19:19 ` Brian Foster
2026-02-11 15:41 ` Christoph Hellwig
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=aaXesgEmu46X7OwD@bfoster \
--to=bfoster@redhat.com \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
/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