]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
export metadata size
authorKeith Busch <kbusch@kernel.org>
Mon, 1 Jun 2020 16:59:14 +0000 (09:59 -0700)
committerKeith Busch <kbusch@kernel.org>
Mon, 1 Jun 2020 16:59:14 +0000 (09:59 -0700)
Signed-off-by: Keith Busch <kbusch@kernel.org>
src/nvme/tree.c
src/nvme/tree.h

index 835bb4396ac2b3d5f62e079e54ae8d51beb18afe..4ef455ea00f4ce2ee35ed2f8d82b657a598199ba 100644 (file)
@@ -709,6 +709,11 @@ int nvme_ns_get_lba_size(nvme_ns_t n)
        return n->lba_size;
 }
 
+int nvme_ns_get_meta_size(nvme_ns_t n)
+{
+       return n->meta_size;
+}
+
 uint64_t nvme_ns_get_lba_count(nvme_ns_t n)
 {
        return n->lba_count;
@@ -853,14 +858,17 @@ static void nvme_ns_init(struct nvme_ns *n)
        struct nvme_id_ns ns = { };
        uint8_t buffer[NVME_IDENTIFY_DATA_SIZE] = { };
        struct nvme_ns_id_desc *descs = (void *)buffer;
+       int flbas;
 
        if (nvme_ns_identify(n, &ns) != 0)
                return;
 
-       n->lba_shift = ns.lbaf[ns.flbas & NVME_NS_FLBAS_LBA_MASK].ds;
+       flbas = ns.flbas & NVME_NS_FLBAS_LBA_MASK;
+       n->lba_shift = ns.lbaf[flbas].ds;
        n->lba_size = 1 << n->lba_shift;
        n->lba_count = le64_to_cpu(ns.nsze);
        n->lba_util = le64_to_cpu(ns.nuse);
+       n->meta_size = le16_to_cpu(ns.lbaf[flbas].ms);
 
        if (!nvme_ns_identify_descs(n, descs))
                nvme_ns_parse_descriptors(n, descs);
index 86ecdc42e71e6ff00ef4dfbcd0f53e2520ec035d..40a43f97bbb548756d3f624a656cd56582a061d3 100644 (file)
@@ -243,6 +243,14 @@ int nvme_ns_get_nsid(nvme_ns_t n);
  */
 int nvme_ns_get_lba_size(nvme_ns_t n);
 
+/**
+ * nvme_ns_get_meta_size() -
+ * @n:
+ *
+ * Return:
+ */
+int nvme_ns_get_meta_size(nvme_ns_t n);
+
 /**
  * nvme_ns_get_lba_count() -
  * @n: