| From: |  | Christoph Hellwig <hch-AT-lst.de> | 
| To: |  | Christian Brauner <brauner-AT-kernel.org> | 
| Subject: |  | iomap patches for zoned XFS v2 | 
| Date: |  | Thu, 06 Feb 2025 07:39:58 +0100 | 
| Message-ID: |  | <20250206064035.2323428-1-hch@lst.de> | 
| Cc: |  | "Darrick J. Wong" <djwong-AT-kernel.org>,	Carlos Maiolino <cem-AT-kernel.org>,	linux-xfs-AT-vger.kernel.org,	linux-fsdevel-AT-vger.kernel.org | 
| Archive-link: |  | Article | 
Hi all,
this series contains the iomap prep work to support zoned XFS.
The biggest changes are:
 - an option to reuse the ioend code for direct writes in addition to the
   current use for buffered writeback, which allows the file system to
   track completions on a per-bio basis instead of the current end_io
   callback which operates on the entire I/O.
   Note that it might make sense to split the ioend code from
   buffered-io.c into its own file with this.  Let me know what you think
   of that and I can include it in the next version
 - change of the writeback_ops so that the submit_bio call can be done by
   the file system.  Note that btrfs will also need this eventually when
   it starts using iomap
 - helpers to split ioend to the zone append queue_limits that plug
   into the previous item above.
 - a new ANON_WRITE flags for writes that don't have a block number
   assigned to them at the iomap level, leaving the file system to do
   that work in the submission handler.  Note that btrfs wants something
   similar also for compressed I/O, which should be able to reuse this,
   maybe with minor tweaks.
 - passing private data to a few more helper
The XFS changes to use this will be posted to the xfs list only to not
spam fsdevel too much.
Changes since v1:
 - spelling fixes
 - more comments
 - add a new io_private member to struct iomap_ioend
Changes since RFC:
 - update Documentation/filesystems/iomap/
 - improve comments
 - make the iomap_split_ioend calling convention simpler and hopefully
   more cleasr
 - propagate bio_split errors
 - rename the flags argument to iomap_init_ioend
 - move more code to fs/iomap/ioend.c
 - refactor the ioend completion code a bit
 - replace the ZONE_APPEND flag with an ANON_WRITE flag