On Wed, Apr 09, 2025 at 08:47:15AM -0700, Darrick J. Wong wrote: > 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; And only now did I notice the missing comment ^^; can this add "i_used_blocks is used for zoned rtrmap inodes" from the kernel? --D > > 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 > > > > >