From: Brian Foster <bfoster@redhat.com>
To: linux-fsdevel@vger.kernel.org
Cc: linux-xfs@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCH 6/7] iomap: remove old partial eof zeroing optimization
Date: Thu, 5 Jun 2025 13:33:56 -0400 [thread overview]
Message-ID: <20250605173357.579720-7-bfoster@redhat.com> (raw)
In-Reply-To: <20250605173357.579720-1-bfoster@redhat.com>
iomap_zero_range() optimizes the partial eof block zeroing use case
by force zeroing if the mapping is dirty. This is to avoid frequent
flushing on file extending workloads, which hurts performance.
Now that the folio batch mechanism provides a more generic solution
and is used by the only real zero range user (XFS), this isolated
optimization is no longer needed. Remove the unnecessary code and
let callers use the folio batch or fall back to flushing by default.
Signed-off-by: Brian Foster <bfoster@redhat.com>
---
fs/iomap/buffered-io.c | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c
index cf2f4f869920..ec58f5dae71c 100644
--- a/fs/iomap/buffered-io.c
+++ b/fs/iomap/buffered-io.c
@@ -1471,33 +1471,9 @@ iomap_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero,
.private = private,
};
struct address_space *mapping = inode->i_mapping;
- unsigned int blocksize = i_blocksize(inode);
- unsigned int off = pos & (blocksize - 1);
- loff_t plen = min_t(loff_t, len, blocksize - off);
int ret;
bool range_dirty;
- /*
- * Zero range can skip mappings that are zero on disk so long as
- * pagecache is clean. If pagecache was dirty prior to zero range, the
- * mapping converts on writeback completion and so must be zeroed.
- *
- * The simplest way to deal with this across a range is to flush
- * pagecache and process the updated mappings. To avoid excessive
- * flushing on partial eof zeroing, special case it to zero the
- * unaligned start portion if already dirty in pagecache.
- */
- if (!iter.fbatch && off &&
- filemap_range_needs_writeback(mapping, pos, pos + plen - 1)) {
- iter.len = plen;
- while ((ret = iomap_iter(&iter, ops)) > 0)
- iter.status = iomap_zero_iter(&iter, did_zero);
-
- iter.len = len - (iter.pos - pos);
- if (ret || !iter.len)
- return ret;
- }
-
/*
* To avoid an unconditional flush, check pagecache state and only flush
* if dirty and the fs returns a mapping that might convert on
--
2.49.0
next prev parent reply other threads:[~2025-06-05 17:30 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-05 17:33 [PATCH 0/7] iomap: zero range folio batch support Brian Foster
2025-06-05 17:33 ` [PATCH 1/7] iomap: move pos+len BUG_ON() to after folio lookup Brian Foster
2025-06-09 16:16 ` Darrick J. Wong
2025-06-10 4:20 ` Christoph Hellwig
2025-06-10 12:16 ` Brian Foster
2025-06-05 17:33 ` [PATCH 2/7] filemap: add helper to look up dirty folios in a range Brian Foster
2025-06-09 15:48 ` Darrick J. Wong
2025-06-10 4:21 ` Christoph Hellwig
2025-06-10 12:17 ` Brian Foster
2025-06-10 4:22 ` Christoph Hellwig
2025-06-05 17:33 ` [PATCH 3/7] iomap: optional zero range dirty folio processing Brian Foster
2025-06-09 16:04 ` Darrick J. Wong
2025-06-10 4:27 ` Christoph Hellwig
2025-06-10 12:21 ` Brian Foster
2025-06-10 12:21 ` Brian Foster
2025-06-10 13:29 ` Christoph Hellwig
2025-06-10 14:19 ` Brian Foster
2025-06-11 3:54 ` Christoph Hellwig
2025-06-10 14:55 ` Darrick J. Wong
2025-06-11 3:55 ` Christoph Hellwig
2025-06-12 4:06 ` Darrick J. Wong
2025-06-10 4:27 ` Christoph Hellwig
2025-06-05 17:33 ` [PATCH 4/7] xfs: always trim mapping to requested range for zero range Brian Foster
2025-06-09 16:07 ` Darrick J. Wong
2025-06-05 17:33 ` [PATCH 5/7] xfs: fill dirty folios on zero range of unwritten mappings Brian Foster
2025-06-06 2:02 ` kernel test robot
2025-06-06 15:20 ` Brian Foster
2025-06-09 16:12 ` Darrick J. Wong
2025-06-10 4:31 ` Christoph Hellwig
2025-06-10 12:24 ` Brian Foster
2025-07-02 18:50 ` Darrick J. Wong
2025-06-05 17:33 ` Brian Foster [this message]
2025-06-10 4:32 ` [PATCH 6/7] iomap: remove old partial eof zeroing optimization Christoph Hellwig
2025-06-05 17:33 ` [PATCH RFC 7/7] xfs: error tag to force zeroing on debug kernels Brian Foster
2025-06-10 4:33 ` Christoph Hellwig
2025-06-10 12:26 ` Brian Foster
2025-06-10 13:30 ` Christoph Hellwig
2025-06-10 14:20 ` Brian Foster
2025-06-10 19:12 ` Brian Foster
2025-06-11 3:56 ` 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=20250605173357.579720-7-bfoster@redhat.com \
--to=bfoster@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.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