| From: |
| Pankaj Raghav <p.raghav-AT-samsung.com> |
| To: |
| linux-xfs-AT-vger.kernel.org |
| Subject: |
| [PATCH v6 0/3] add FALLOC_FL_WRITE_ZEROES support to xfs |
| Date: |
| Thu, 11 Jun 2026 13:40:26 +0200 |
| Message-ID: |
| <20260611114029.176200-1-p.raghav@samsung.com> |
| Cc: |
| bfoster-AT-redhat.com, lukas-AT-herbolt.com, "Darrick J . Wong" <djwong-AT-kernel.org>, p.raghav-AT-samsung.com, dgc-AT-kernel.org, gost.dev-AT-samsung.com, pankaj.raghav-AT-linux.dev, andres-AT-anarazel.de, kundan.kumar-AT-samsung.com, hch-AT-lst.de, cem-AT-kernel.org, hch-AT-infradead.org |
| Archive-link: |
| Article |
The benefits of FALLOC_FL_WRITE_ZEROES was already discussed as a part
of Zhang Yi's initial patches[1]. Postgres developer Andres also
mentioned they would like to use this feature in Postgres [2].
I tested the changes with fsstress and fsx based on the xfstests patch I
sent recently to test this flag[4]. generic/363 helped me debug the
crash I noticed when I did the initial implementation[3].
Dave initially suggested to create a common helper based on
xfs_iomap_convert_unwritten() but as it can be seen in the previous
version, a lot of the code had to be rewritten. The changes had more in
common with xfs_alloc_file_space(). This version reuses
xfs_alloc_file_space() for write zeroes.
Thanks to Christoph for all the review comments and design suggestions
that were made both offline and online for this series.
Stress test generic/363 generic/127 xfs/131 are passing. I have started
the full xfstest suite for this series.
Changes since v5:
- Add a prep patch to allow xfs_set_filesize to take 64-bit len
(Sashiko)
Changes since v4:
- Introduce an enum for allocation mode in xfs_alloc_file_space (Christoph)
- Use xfs_set_filesize instead of updating the on-disk size in the
function.
Changes since v3:
- Introduce xfs_bmap_alloc_or_convert_range() in xfs_iomap.c for easy
review experience (christoph)
- Add extsz hint and rt support in xfs_bmap_alloc_or_convert_range()
Changes since v2:
- Add allow_write_zeroes to xfs_global so that we can enable this
feature independent of the HW underneath.
Changes since v1 [5.1 5.2]:
- Added a new function xfs_bmap_alloc_or_convert_range() based on Dave's
feedback.
- Changed the xfs_falloc_write_zeroes to use
xfs_bmap_alloc_or_convert_range() instead of doing prealloc and
convert approach.
[1] https://lore.kernel.org/linux-fsdevel/20250619111806.3546...
[2] https://lore.kernel.org/linux-fsdevel/20260217055103.GA61...
[3] https://lore.kernel.org/linux-xfs/6i2jvzn3lyugjlbgmjzpped...
[4] https://lore.kernel.org/linux-xfs/20260312195308.738189-1...
[5.1] https://lore.kernel.org/linux-xfs/20260309180708.427553-2...
[5.2] https://lore.kernel.org/linux-xfs/abC1LvRElctaHPe5@dread/
Pankaj Raghav (3):
xfs: widen xfs_setfilesize() size argument to xfs_off_t
xfs: add an allocation mode to xfs_alloc_file_space()
xfs: add support for FALLOC_FL_WRITE_ZEROES
fs/xfs/xfs_aops.c | 2 +-
fs/xfs/xfs_aops.h | 2 +-
fs/xfs/xfs_bmap_util.c | 42 +++++++++++++++++++----
fs/xfs/xfs_bmap_util.h | 7 +++-
fs/xfs/xfs_file.c | 75 +++++++++++++++++++++++++++++++++++++++---
fs/xfs/xfs_trace.h | 8 ++---
6 files changed, 119 insertions(+), 17 deletions(-)
base-commit: 46d91a29e0885a3867f49a7da09f0babef2d867f
--
2.51.2