/* * Copyright (C) 2017 Red Hat, Inc. * * This file may be redistributed under the terms of the * GNU Lesser General Public License. */ #include #include #include #include #include #include #include #include "superblocks.h" struct vdo_super_block { char magic[8]; /* magic number 'dmvdo001'*/ char unused[32]; /* 32 bytes of unimportant space */ unsigned char sb_uuid[16]; /* vdo unique id */ /* this is not all... but enough for libblkid */ } __attribute__((packed)); static int probe_vdo(blkid_probe pr, const struct blkid_idmag *mag) { struct vdo_super_block *vsb; vsb = blkid_probe_get_sb(pr, mag, struct vdo_super_block); if (!vsb) return errno ? -errno : 1; blkid_probe_set_uuid(pr, vsb->sb_uuid); return 0; } const struct blkid_idinfo vdo_idinfo = { .name = "vdo", .usage = BLKID_USAGE_OTHER, .probefunc = probe_vdo, .magics = { { .magic = "dmvdo001", .len = 8 }, { NULL } } };