diff options
author | Philipp Marek | 2011-08-31 09:41:01 +0200 |
---|---|---|
committer | Karel Zak | 2011-09-07 08:11:07 +0200 |
commit | 1e03bc3beb6c86eac7c7088ae83d3d6f8007af0d (patch) | |
tree | 71b7f8e93437b0050bd78ef7d0e79a1a7ce2fe72 /libblkid | |
parent | libblkid: new magic for 8.4 style (unclean) activity log. (diff) | |
download | kernel-qcow2-util-linux-1e03bc3beb6c86eac7c7088ae83d3d6f8007af0d.tar.gz kernel-qcow2-util-linux-1e03bc3beb6c86eac7c7088ae83d3d6f8007af0d.tar.xz kernel-qcow2-util-linux-1e03bc3beb6c86eac7c7088ae83d3d6f8007af0d.zip |
libblkid: DRBD proxy data-log identification.
Signed-off-by: Philipp Marek <philipp.marek@linbit.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libblkid')
-rw-r--r-- | libblkid/src/superblocks/Makefile.am | 1 | ||||
-rw-r--r-- | libblkid/src/superblocks/drbdproxy_datalog.c | 55 | ||||
-rw-r--r-- | libblkid/src/superblocks/superblocks.c | 1 | ||||
-rw-r--r-- | libblkid/src/superblocks/superblocks.h | 1 |
4 files changed, 58 insertions, 0 deletions
diff --git a/libblkid/src/superblocks/Makefile.am b/libblkid/src/superblocks/Makefile.am index 1501fab11..73a9b287f 100644 --- a/libblkid/src/superblocks/Makefile.am +++ b/libblkid/src/superblocks/Makefile.am @@ -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 index 000000000..afe4725a0 --- /dev/null +++ b/libblkid/src/superblocks/drbdproxy_datalog.c @@ -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 } + } +}; diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c index 8a0edaa7c..059700c16 100644 --- a/libblkid/src/superblocks/superblocks.c +++ b/libblkid/src/superblocks/superblocks.c @@ -92,6 +92,7 @@ static const struct blkid_idinfo *idinfos[] = &jmraid_idinfo, &drbd_idinfo, + &drbdproxy_datalog_idinfo, &lvm2_idinfo, &lvm1_idinfo, &snapcow_idinfo, diff --git a/libblkid/src/superblocks/superblocks.h b/libblkid/src/superblocks/superblocks.h index a79d7cb6c..fbc89ef6a 100644 --- a/libblkid/src/superblocks/superblocks.h +++ b/libblkid/src/superblocks/superblocks.h @@ -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; |