static int header_check_uuid(xfs_mount_t *mp, xlog_rec_header_t *head) { char uu_log[64], uu_sb[64]; if (print_skip_uuid) return 0; if (!platform_uuid_compare(&mp->m_sb.sb_uuid, &head->h_fs_uuid)) return 0; platform_uuid_unparse(&mp->m_sb.sb_uuid, uu_sb); platform_uuid_unparse(&head->h_fs_uuid, uu_log); printf(_("* ERROR: mismatched uuid in log\n" "* SB : %s\n* log: %s\n"), uu_sb, uu_log); memcpy(&mp->m_sb.sb_uuid, &head->h_fs_uuid, sizeof(uuid_t)); return 0; }
/* check v5 metadata */ static int __check_attr_header( struct xfs_mount *mp, struct xfs_buf *bp, xfs_ino_t ino) { struct xfs_da3_blkinfo *info = bp->b_addr; if (info->hdr.magic != cpu_to_be16(XFS_ATTR3_LEAF_MAGIC) && info->hdr.magic != cpu_to_be16(XFS_DA3_NODE_MAGIC)) return 0; /* verify owner */ if (be64_to_cpu(info->owner) != ino) { do_warn( _("expected owner inode %" PRIu64 ", got %llu, attr block %" PRIu64 "\n"), ino, be64_to_cpu(info->owner), bp->b_bn); return 1; } /* verify block number */ if (be64_to_cpu(info->blkno) != bp->b_bn) { do_warn( _("expected block %" PRIu64 ", got %llu, inode %" PRIu64 "attr block\n"), bp->b_bn, be64_to_cpu(info->blkno), ino); return 1; } /* verify uuid */ if (platform_uuid_compare(&info->uuid, &mp->m_sb.sb_meta_uuid) != 0) { do_warn( _("wrong FS UUID, inode %" PRIu64 " attr block %" PRIu64 "\n"), ino, bp->b_bn); return 1; } return 0; }