]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: DRBD proxy data-log identification.
authorPhilipp Marek <philipp.marek@linbit.com>
Wed, 31 Aug 2011 07:41:01 +0000 (09:41 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 7 Sep 2011 06:11:07 +0000 (08:11 +0200)
Signed-off-by: Philipp Marek <philipp.marek@linbit.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/superblocks/Makefile.am
libblkid/src/superblocks/drbdproxy_datalog.c [new file with mode: 0644]
libblkid/src/superblocks/superblocks.c
libblkid/src/superblocks/superblocks.h

index 1501fab11848149dd210b6a5d7a9505352d1e5ad..73a9b287f11888fdb46c50a6d26571b38d4e0fcc 100644 (file)
@@ -45,6 +45,7 @@ libblkid_superblocks_la_SOURCES = \
                        ubifs.c \
                        bfs.c \
                        drbd.c \
+                       drbdproxy_datalog.c \
                        vmfs.c \
                        befs.c \
                        nilfs.c \
diff --git a/libblkid/src/superblocks/drbdproxy_datalog.c b/libblkid/src/superblocks/drbdproxy_datalog.c
new file mode 100644 (file)
index 0000000..afe4725
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2011 by Philipp Marek <philipp.marek@linbit.com>
+ *
+ * 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 <inttypes.h>
+#include <stddef.h>
+
+#include "superblocks.h"
+
+
+struct log_header_t {
+       uint64_t magic;
+       uint64_t version;
+
+       unsigned char uuid[16];
+
+       uint64_t flags;
+} __attribute__((packed));
+
+
+static int probe_drbdproxy_datalog(blkid_probe pr,
+               const struct blkid_idmag *mag __attribute__((__unused__)))
+{
+       struct log_header_t *lh;
+
+       lh = (struct log_header_t *) blkid_probe_get_buffer(pr, 0, sizeof(*lh));
+       if (!lh)
+               return -1;
+
+       blkid_probe_set_uuid(pr, lh->uuid);
+       blkid_probe_sprintf_version(pr, "v%jd", le64_to_cpu(lh->version));
+
+       return 0;
+}
+
+const struct blkid_idinfo drbdproxy_datalog_idinfo =
+{
+       .name           = "drbdproxy_datalog",
+       .usage          = BLKID_USAGE_FILESYSTEM,
+       .probefunc      = probe_drbdproxy_datalog,
+       .minsz          = 16*1024,
+       .magics         =
+       {
+               { .magic = "DRBDdlh*", .len = 8, .sboff = 0, .kboff = 0 },
+               { NULL }
+       }
+};
index 8a0edaa7c46a4986a96e410b3cc9ad22e31405dd..059700c167257528d4ad328e1197db72064a2836 100644 (file)
@@ -92,6 +92,7 @@ static const struct blkid_idinfo *idinfos[] =
        &jmraid_idinfo,
 
        &drbd_idinfo,
+       &drbdproxy_datalog_idinfo,
        &lvm2_idinfo,
        &lvm1_idinfo,
        &snapcow_idinfo,
index a79d7cb6cbbfd7c79c7e007b5d42ce0c4fa9fbbc..fbc89ef6a55cbd5e9a9ad8910dc75f1b57638a49 100644 (file)
@@ -64,6 +64,7 @@ extern const struct blkid_idinfo bfs_idinfo;
 extern const struct blkid_idinfo vmfs_volume_idinfo;
 extern const struct blkid_idinfo vmfs_fs_idinfo;
 extern const struct blkid_idinfo drbd_idinfo;
+extern const struct blkid_idinfo drbdproxy_datalog_idinfo;
 extern const struct blkid_idinfo befs_idinfo;
 extern const struct blkid_idinfo nilfs2_idinfo;
 extern const struct blkid_idinfo exfat_idinfo;