On Tue, Dec 03, 2024 at 07:03:16PM -0800, Darrick J. Wong wrote: > +/* Calculate the ondisk superblock size in bytes */ > +STATIC size_t > +xchk_superblock_ondisk_size( > + struct xfs_mount *mp) > +{ > + if (xfs_has_metadir(mp)) > + return offsetofend(struct xfs_dsb, sb_pad); > + if (xfs_has_metauuid(mp)) > + return offsetofend(struct xfs_dsb, sb_meta_uuid); > + if (xfs_has_crc(mp)) > + return offsetofend(struct xfs_dsb, sb_lsn); > + if (xfs_sb_version_hasmorebits(&mp->m_sb)) > + return offsetofend(struct xfs_dsb, sb_bad_features2); > + if (xfs_has_logv2(mp)) > + return offsetofend(struct xfs_dsb, sb_logsunit); > + if (xfs_has_sector(mp)) > + return offsetofend(struct xfs_dsb, sb_logsectsize); > + /* only support dirv2 or more recent */ > + return offsetofend(struct xfs_dsb, sb_dirblklog); This really should be libxfs so tht it can be shared with secondary_sb_whack in xfsrepair. The comment at the end of the xfs_dsb definition should also be changed to point to this libxfs version. > +} > /* Everything else must be zero. */ > - if (memchr_inv(sb + 1, 0, > - BBTOB(bp->b_length) - sizeof(struct xfs_dsb))) > + sblen = xchk_superblock_ondisk_size(mp); > + if (memchr_inv((char *)sb + sblen, 0, BBTOB(bp->b_length) - sblen)) This could be simplified to if (memchr_inv(bp->b_addr + sblen, 0, BBTOB(bp->b_length) - sblen)) Otherwise looks good: Reviewed-by: Christoph Hellwig <hch@xxxxxx>