diff options
author | Kenneth Van Alstyne | 2018-12-14 21:27:10 +0100 |
---|---|---|
committer | Kenneth Van Alstyne | 2018-12-14 21:27:10 +0100 |
commit | bd301d459fce7d4f7a09e5db1107d3de26bedaa7 (patch) | |
tree | 6b30bcf20a58539d38661d1cd417569ce970630a /libblkid | |
parent | Merge branch 'aarch32_on_aarch64' of https://github.com/jlinton/util-linux (diff) | |
download | kernel-qcow2-util-linux-bd301d459fce7d4f7a09e5db1107d3de26bedaa7.tar.gz kernel-qcow2-util-linux-bd301d459fce7d4f7a09e5db1107d3de26bedaa7.tar.xz kernel-qcow2-util-linux-bd301d459fce7d4f7a09e5db1107d3de26bedaa7.zip |
Added support for detecting Ceph BlueStore Block Devices
Diffstat (limited to 'libblkid')
-rw-r--r-- | libblkid/src/superblocks/bluestore.c | 54 |
1 files changed, 54 insertions, 0 deletions
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 } + } +}; |