Re: [PATCH 8/9] xfs: use iomap_valid method to detect stale cached iomaps

Christoph Hellwig
2022-11-15T08:49:52Z

On Tue, Nov 15, 2022 at 12:30:42PM +1100, Dave Chinner wrote:
> +/*
> + * Check that the iomap passed to us is still valid for the given offset and
> + * length.
> + */
> +static bool
> +xfs_iomap_valid(
> + struct inode *inode,
> + const struct iomap *iomap)
> +{
> + struct xfs_inode *ip = XFS_I(inode);
> + u64 cookie = 0;
> +
> + if (iomap->flags & IOMAP_F_XATTR) {
> + cookie = READ_ONCE(ip->i_af.if_seq);
> + } else {
> + if ((iomap->flags & IOMAP_F_SHARED) && ip->i_cowfp)
> + cookie = (u64)READ_ONCE(ip->i_cowfp->if_seq) << 32;
> + cookie |= READ_ONCE(ip->i_df.if_seq);
> + }
> + return cookie == iomap->validity_cookie;

How can this be called with IOMAP_F_XATTR set?

Also the code seems to duplicate xfs_iomap_inode_sequence, so
we just call that:

return cookie == xfs_iomap_inode_sequence(XFS_I(inode), iomap->flags);