diff options
author | Karel Zak | 2018-12-17 10:45:33 +0100 |
---|---|---|
committer | Karel Zak | 2018-12-17 10:45:33 +0100 |
commit | be2762b862dc4c20bf6ff88ecab0cc99fb8ed76f (patch) | |
tree | 546e5aba0e7fcb37c929ae424a28360904691aaf /libblkid | |
parent | dmesg: correct "-n, --console-level level" example in manual page (diff) | |
parent | Finished up BlueStore support (diff) | |
download | kernel-qcow2-util-linux-be2762b862dc4c20bf6ff88ecab0cc99fb8ed76f.tar.gz kernel-qcow2-util-linux-be2762b862dc4c20bf6ff88ecab0cc99fb8ed76f.tar.xz kernel-qcow2-util-linux-be2762b862dc4c20bf6ff88ecab0cc99fb8ed76f.zip |
Merge branch 'master' of https://github.com/kvanals/util-linux
* 'master' of https://github.com/kvanals/util-linux:
Finished up BlueStore support
Added support for detecting Ceph BlueStore Block Devices
Diffstat (limited to 'libblkid')
-rw-r--r-- | libblkid/src/Makemodule.am | 1 | ||||
-rw-r--r-- | libblkid/src/superblocks/bluestore.c | 54 | ||||
-rw-r--r-- | libblkid/src/superblocks/superblocks.c | 1 | ||||
-rw-r--r-- | libblkid/src/superblocks/superblocks.h | 1 |
4 files changed, 57 insertions, 0 deletions
diff --git a/libblkid/src/Makemodule.am b/libblkid/src/Makemodule.am index 4109561c4..0ecb5579e 100644 --- a/libblkid/src/Makemodule.am +++ b/libblkid/src/Makemodule.am @@ -49,6 +49,7 @@ libblkid_la_SOURCES = \ libblkid/src/superblocks/befs.c \ libblkid/src/superblocks/bfs.c \ libblkid/src/superblocks/bitlocker.c \ + libblkid/src/superblocks/bluestore.c \ libblkid/src/superblocks/btrfs.c \ libblkid/src/superblocks/cramfs.c \ libblkid/src/superblocks/ddf_raid.c \ diff --git a/libblkid/src/superblocks/bluestore.c b/libblkid/src/superblocks/bluestore.c new file mode 100644 index 000000000..24c56f24a --- /dev/null +++ b/libblkid/src/superblocks/bluestore.c @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2018 by Kenneth Van Alstyne <kvanals@kvanals.org> + * + * This file may be redistributed under the terms of the + * GNU Lesser General Public License. + * + * + * Ceph BlueStore is one of the supported storage + * methods for Object Storage Devices (OSDs). + * This is used to detect the backing block devices + * used for these types of OSDs in a Ceph Cluster. + * + */ +#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 "bitops.h" +#include "superblocks.h" + +#define BLUESTORE_MAGIC_L 22 + +struct bluestore_phdr { + uint8_t magic[BLUESTORE_MAGIC_L]; + uint32_t version; +} __attribute__((packed)); + +static int probe_bluestore(blkid_probe pr, const struct blkid_idmag *mag) +{ + struct bluestore_phdr *header; + + header = blkid_probe_get_sb(pr, mag, struct bluestore_phdr); + if (header == NULL) + return errno ? -errno : 1; + + blkid_probe_sprintf_version(pr, "%u", le32_to_cpu(header->version)); + return 0; +} + +const struct blkid_idinfo bluestore_idinfo = +{ + .name = "ceph_bluestore", + .usage = BLKID_USAGE_OTHER, + .probefunc = probe_bluestore, + .magics = + { + { .magic = "bluestore block device", .len = 22 } + } +}; diff --git a/libblkid/src/superblocks/superblocks.c b/libblkid/src/superblocks/superblocks.c index 70d4c2697..277a2c6de 100644 --- a/libblkid/src/superblocks/superblocks.c +++ b/libblkid/src/superblocks/superblocks.c @@ -102,6 +102,7 @@ static const struct blkid_idinfo *idinfos[] = &jmraid_idinfo, &bcache_idinfo, + &bluestore_idinfo, &drbd_idinfo, &drbdmanage_idinfo, &drbdproxy_datalog_idinfo, diff --git a/libblkid/src/superblocks/superblocks.h b/libblkid/src/superblocks/superblocks.h index 11c16e4b4..3313d0245 100644 --- a/libblkid/src/superblocks/superblocks.h +++ b/libblkid/src/superblocks/superblocks.h @@ -70,6 +70,7 @@ extern const struct blkid_idinfo zfs_idinfo; 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 bluestore_idinfo; extern const struct blkid_idinfo drbd_idinfo; extern const struct blkid_idinfo drbdmanage_idinfo; extern const struct blkid_idinfo drbdproxy_datalog_idinfo; |