dip = xfs_buf_offset(bp, (i << mp->m_sb.sb_inodelog));
                unlinked_ino = be32_to_cpu(dip->di_next_unlinked);
-               di_ok = dip->di_magic == cpu_to_be16(XFS_DINODE_MAGIC) &&
+               di_ok = xfs_verify_magic(bp, dip->di_magic) &&
                        xfs_dinode_good_version(mp, dip->di_version) &&
                        xfs_verify_agino_or_null(mp, agno, unlinked_ino);
                if (unlikely(XFS_TEST_ERROR(!di_ok, mp,
 
 const struct xfs_buf_ops xfs_inode_buf_ops = {
        .name = "xfs_inode",
+       .magic = { cpu_to_be16(XFS_DINODE_MAGIC),
+                  cpu_to_be16(XFS_DINODE_MAGIC) },
        .verify_read = xfs_inode_buf_read_verify,
        .verify_write = xfs_inode_buf_write_verify,
 };
 
 const struct xfs_buf_ops xfs_inode_buf_ra_ops = {
        .name = "xfs_inode_ra",
+       .magic = { cpu_to_be16(XFS_DINODE_MAGIC),
+                  cpu_to_be16(XFS_DINODE_MAGIC) },
        .verify_read = xfs_inode_buf_readahead_verify,
        .verify_write = xfs_inode_buf_write_verify,
 };
 
         * Make sure the place we're flushing out to really looks
         * like an inode!
         */
-       if (unlikely(dip->di_magic != cpu_to_be16(XFS_DINODE_MAGIC))) {
+       if (unlikely(!xfs_verify_magic(bp, dip->di_magic))) {
                xfs_alert(mp,
        "%s: Bad inode magic number, dip = "PTR_FMT", dino bp = "PTR_FMT", ino = %Ld",
                        __func__, dip, bp, in_f->ilf_ino);