Message ID | 20240319011102.2929635-3-yi.zhang@huaweicloud.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | xfs/iomap: fix non-atomic clone operation and don't update size when zeroing range post eof | expand |
On Tue, Mar 19, 2024 at 09:10:55AM +0800, Zhang Yi wrote: > From: Zhang Yi <yi.zhang@huawei.com> > > Allow callers to pass a NULLL seq argument if they don't care about > the fork sequence number. > > Signed-off-by: Zhang Yi <yi.zhang@huawei.com> > Reviewed-by: Christoph Hellwig <hch@lst.de> Aha, you want this because xfs_bmbt_to_iomap will set the iomap validity cookie for us, whereas writeback wants to track the per-fork cookie in the xfs writeback structure. Ok. Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > fs/xfs/libxfs/xfs_bmap.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c > index f362345467fa..07dc35de8ce5 100644 > --- a/fs/xfs/libxfs/xfs_bmap.c > +++ b/fs/xfs/libxfs/xfs_bmap.c > @@ -4574,7 +4574,8 @@ xfs_bmapi_convert_delalloc( > if (!isnullstartblock(bma.got.br_startblock)) { > xfs_bmbt_to_iomap(ip, iomap, &bma.got, 0, flags, > xfs_iomap_inode_sequence(ip, flags)); > - *seq = READ_ONCE(ifp->if_seq); > + if (seq) > + *seq = READ_ONCE(ifp->if_seq); > goto out_trans_cancel; > } > > @@ -4623,7 +4624,8 @@ xfs_bmapi_convert_delalloc( > ASSERT(!isnullstartblock(bma.got.br_startblock)); > xfs_bmbt_to_iomap(ip, iomap, &bma.got, 0, flags, > xfs_iomap_inode_sequence(ip, flags)); > - *seq = READ_ONCE(ifp->if_seq); > + if (seq) > + *seq = READ_ONCE(ifp->if_seq); > > if (whichfork == XFS_COW_FORK) > xfs_refcount_alloc_cow_extent(tp, bma.blkno, bma.length); > -- > 2.39.2 > >
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index f362345467fa..07dc35de8ce5 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -4574,7 +4574,8 @@ xfs_bmapi_convert_delalloc( if (!isnullstartblock(bma.got.br_startblock)) { xfs_bmbt_to_iomap(ip, iomap, &bma.got, 0, flags, xfs_iomap_inode_sequence(ip, flags)); - *seq = READ_ONCE(ifp->if_seq); + if (seq) + *seq = READ_ONCE(ifp->if_seq); goto out_trans_cancel; } @@ -4623,7 +4624,8 @@ xfs_bmapi_convert_delalloc( ASSERT(!isnullstartblock(bma.got.br_startblock)); xfs_bmbt_to_iomap(ip, iomap, &bma.got, 0, flags, xfs_iomap_inode_sequence(ip, flags)); - *seq = READ_ONCE(ifp->if_seq); + if (seq) + *seq = READ_ONCE(ifp->if_seq); if (whichfork == XFS_COW_FORK) xfs_refcount_alloc_cow_extent(tp, bma.blkno, bma.length);