]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: Add VDO superblock information into blkid
authorSweet Tea Dorminy <sweettea@mit.edu>
Wed, 6 Dec 2017 23:26:59 +0000 (18:26 -0500)
committerKarel Zak <kzak@redhat.com>
Thu, 7 Dec 2017 11:11:32 +0000 (12:11 +0100)
[kzak@redhat.com: - add tests/expected/blkid/low-probe-vdo
                  - enlarge the image (must be > 1024)]

Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/Makemodule.am
libblkid/src/superblocks/superblocks.c
libblkid/src/superblocks/superblocks.h
libblkid/src/superblocks/vdo.c [new file with mode: 0644]
tests/expected/blkid/low-probe-vdo [new file with mode: 0644]
tests/ts/blkid/images-fs/vdo.img.xz [new file with mode: 0644]

index c126b656c66adf767d9bf57ecffc22620735069c..415c9f408c1be16beb33998c0273315d816a7695 100644 (file)
@@ -90,6 +90,7 @@ libblkid_la_SOURCES = \
        libblkid/src/superblocks/ubifs.c \
        libblkid/src/superblocks/udf.c \
        libblkid/src/superblocks/ufs.c \
+       libblkid/src/superblocks/vdo.c \
        libblkid/src/superblocks/vfat.c \
        libblkid/src/superblocks/via_raid.c \
        libblkid/src/superblocks/vmfs.c \
index 6bd9efe7dff2cee287f2d10be8d793bf4108d924..08600396933e6ded0f9736288f095d0325b74ac2 100644 (file)
@@ -113,6 +113,7 @@ static const struct blkid_idinfo *idinfos[] =
        &luks_idinfo,
        &vmfs_volume_idinfo,
        &ubi_idinfo,
+       &vdo_idinfo,
 
        /* Filesystems */
        &vfat_idinfo,
index 1a64ba6ec082256caaca07611dfd87bc2fc0c6d1..38f6a8a656d42bd24f130399fc6bb58321bca3d5 100644 (file)
@@ -79,6 +79,7 @@ extern const struct blkid_idinfo exfat_idinfo;
 extern const struct blkid_idinfo f2fs_idinfo;
 extern const struct blkid_idinfo bcache_idinfo;
 extern const struct blkid_idinfo mpool_idinfo;
+extern const struct blkid_idinfo vdo_idinfo;
 
 /*
  * superblock functions
diff --git a/libblkid/src/superblocks/vdo.c b/libblkid/src/superblocks/vdo.c
new file mode 100644 (file)
index 0000000..bec686f
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * This file may be redistributed under the terms of the
+ * GNU Lesser General Public License.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <ctype.h>
+#include <stdint.h>
+
+#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 }
+       }
+};
diff --git a/tests/expected/blkid/low-probe-vdo b/tests/expected/blkid/low-probe-vdo
new file mode 100644 (file)
index 0000000..be096ad
--- /dev/null
@@ -0,0 +1,4 @@
+ID_FS_TYPE=vdo
+ID_FS_USAGE=other
+ID_FS_UUID=666c7969-6e67-2056-444f-204020524800
+ID_FS_UUID_ENC=666c7969-6e67-2056-444f-204020524800
diff --git a/tests/ts/blkid/images-fs/vdo.img.xz b/tests/ts/blkid/images-fs/vdo.img.xz
new file mode 100644 (file)
index 0000000..08c7ecb
Binary files /dev/null and b/tests/ts/blkid/images-fs/vdo.img.xz differ