From: Klaus Jensen <k.jen...@samsung.com> Provide a more flexible nlbas helper.
Signed-off-by: Klaus Jensen <k.jen...@samsung.com> --- hw/block/nvme-ns.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/hw/block/nvme-ns.h b/hw/block/nvme-ns.h index 07e16880801d..34f9474a1cd1 100644 --- a/hw/block/nvme-ns.h +++ b/hw/block/nvme-ns.h @@ -136,12 +136,18 @@ static inline bool nvme_ns_ext(NvmeNamespace *ns) } /* calculate the number of LBAs that the namespace can accomodate */ +static inline uint64_t __nvme_nlbas(size_t size, uint8_t lbads, uint16_t ms) +{ + if (ms) { + return size / ((1 << lbads) + ms); + } + + return size >> lbads; +} + static inline uint64_t nvme_ns_nlbas(NvmeNamespace *ns) { - if (nvme_msize(ns)) { - return ns->size / (nvme_lsize(ns) + nvme_msize(ns)); - } - return ns->size >> nvme_ns_lbads(ns); + return __nvme_nlbas(ns->size, nvme_ns_lbads(ns), nvme_msize(ns)); } typedef struct NvmeCtrl NvmeCtrl; -- 2.30.1