On Wed, Apr 09, 2025 at 09:55:14AM +0200, Christoph Hellwig wrote: No SoB? Eh whatever it's going to get folded into the previous patch anyway so Reviewed-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> --D > --- > include/xfs_inode.h | 6 ++++++ > include/xfs_mount.h | 12 ++++++++++-- > 2 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/include/xfs_inode.h b/include/xfs_inode.h > index 5bb31eb4aa53..efef0da636d1 100644 > --- a/include/xfs_inode.h > +++ b/include/xfs_inode.h > @@ -234,6 +234,7 @@ typedef struct xfs_inode { > xfs_extlen_t i_extsize; /* basic/minimum extent size */ > /* cowextsize is only used for v3 inodes, flushiter for v1/2 */ > union { > + uint32_t i_used_blocks; > xfs_extlen_t i_cowextsize; /* basic cow extent size */ > uint16_t i_flushiter; /* incremented on flush */ > }; > @@ -361,6 +362,11 @@ static inline xfs_fsize_t XFS_ISIZE(struct xfs_inode *ip) > } > #define XFS_IS_REALTIME_INODE(ip) ((ip)->i_diflags & XFS_DIFLAG_REALTIME) > > +static inline bool xfs_is_zoned_inode(struct xfs_inode *ip) > +{ > + return xfs_has_zoned(ip->i_mount) && XFS_IS_REALTIME_INODE(ip); > +} > + > /* inode link counts */ > static inline void set_nlink(struct inode *inode, uint32_t nlink) > { > diff --git a/include/xfs_mount.h b/include/xfs_mount.h > index 0acf952eb9d7..7856acfb9f8e 100644 > --- a/include/xfs_mount.h > +++ b/include/xfs_mount.h > @@ -207,6 +207,7 @@ typedef struct xfs_mount { > #define XFS_FEAT_NREXT64 (1ULL << 26) /* large extent counters */ > #define XFS_FEAT_EXCHANGE_RANGE (1ULL << 27) /* exchange range */ > #define XFS_FEAT_METADIR (1ULL << 28) /* metadata directory tree */ > +#define XFS_FEAT_ZONED (1ULL << 29) /* zoned RT device */ > > #define __XFS_HAS_FEAT(name, NAME) \ > static inline bool xfs_has_ ## name (const struct xfs_mount *mp) \ > @@ -253,7 +254,7 @@ __XFS_HAS_FEAT(needsrepair, NEEDSREPAIR) > __XFS_HAS_FEAT(large_extent_counts, NREXT64) > __XFS_HAS_FEAT(exchange_range, EXCHANGE_RANGE) > __XFS_HAS_FEAT(metadir, METADIR) > - > +__XFS_HAS_FEAT(zoned, ZONED) > > static inline bool xfs_has_rtgroups(const struct xfs_mount *mp) > { > @@ -264,7 +265,9 @@ static inline bool xfs_has_rtgroups(const struct xfs_mount *mp) > static inline bool xfs_has_rtsb(const struct xfs_mount *mp) > { > /* all rtgroups filesystems with an rt section have an rtsb */ > - return xfs_has_rtgroups(mp) && xfs_has_realtime(mp); > + return xfs_has_rtgroups(mp) && > + xfs_has_realtime(mp) && > + !xfs_has_zoned(mp); > } > > static inline bool xfs_has_rtrmapbt(const struct xfs_mount *mp) > @@ -279,6 +282,11 @@ static inline bool xfs_has_rtreflink(const struct xfs_mount *mp) > xfs_has_reflink(mp); > } > > +static inline bool xfs_has_nonzoned(const struct xfs_mount *mp) > +{ > + return !xfs_has_zoned(mp); > +} > + > /* Kernel mount features that we don't support */ > #define __XFS_UNSUPP_FEAT(name) \ > static inline bool xfs_has_ ## name (const struct xfs_mount *mp) \ > -- > 2.47.2 > >