Re: [PATCH 3/5] xfs: fix zoned write iomap flags assignments
Hans Holmberg <[email protected]>
| Newsgroups | org.kernel.vger.linux-xfs,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On 11/08/2026 18:50, Christoph Hellwig wrote:
> Don't overwrite IOMAP_F_DIRTY with IOMAP_F_ANON_WRITE, but ensure both
> flags are set instead.
>
> Note that in practice this is harmless as all zoned writes force a metadata
> transaction anyway, but incorrectly assigned flags are still a landmine
> that will cause problems at some point.
>
> Fixes: 058dd70c65ab ("xfs: implement buffered writes to zoned RT devices")
> Fixes: 2e2383405824 ("xfs: implement direct writes to zoned RT devices")
> Cc: <[email protected]> # v6.15
> Signed-off-by: Christoph Hellwig <[email protected]>
> Reviewed-by: Andrey Albershteyn <[email protected]>
> Reviewed-by: "Darrick J. Wong" <[email protected]>
> ---
> fs/xfs/xfs_aops.c | 3 +--
> fs/xfs/xfs_iomap.c | 3 +--
> 2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index c80f05507373..9506cd8d15e6 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -634,11 +634,10 @@ xfs_zoned_map_blocks(
> xfs_iunlock(ip, XFS_ILOCK_EXCL);
>
> wpc->iomap.type = IOMAP_MAPPED;
> - wpc->iomap.flags = IOMAP_F_DIRTY;
> wpc->iomap.bdev = mp->m_rtdev_targp->bt_bdev;
> wpc->iomap.offset = offset;
> wpc->iomap.length = XFS_FSB_TO_B(mp, count_fsb);
> - wpc->iomap.flags = IOMAP_F_ANON_WRITE;
> + wpc->iomap.flags = IOMAP_F_ANON_WRITE | IOMAP_F_DIRTY;
>
> trace_xfs_zoned_map_blocks(ip, offset, wpc->iomap.length);
> return 0;
> diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
> index 225c3de88d03..9fa9aa33745f 100644
> --- a/fs/xfs/xfs_iomap.c
> +++ b/fs/xfs/xfs_iomap.c
> @@ -1081,11 +1081,10 @@ xfs_zoned_direct_write_iomap_begin(
> }
>
> iomap->type = IOMAP_MAPPED;
> - iomap->flags = IOMAP_F_DIRTY;
> iomap->bdev = ip->i_mount->m_rtdev_targp->bt_bdev;
> iomap->offset = offset;
> iomap->length = length;
> - iomap->flags = IOMAP_F_ANON_WRITE;
> + iomap->flags = IOMAP_F_ANON_WRITE | IOMAP_F_DIRTY;
> return 0;
> }
>
Looks good,
Reviewed-by: Hans Holmberg <[email protected]>