Message ID | 20200422070927.373048-13-its@irrelevant.dk |
---|---|
State | New |
Headers | show |
Series | nvme: refactoring and cleanups | expand |
On Wed, 2020-04-22 at 09:09 +0200, Klaus Jensen wrote: > From: Klaus Jensen <k.jensen@samsung.com> > > Introduce some small helpers to make the next patches easier on the eye. > > Signed-off-by: Klaus Jensen <k.jensen@samsung.com> > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com> > Reviewed-by: Keith Busch <kbusch@kernel.org> > --- > hw/block/nvme.c | 3 +-- > hw/block/nvme.h | 17 +++++++++++++++++ > 2 files changed, 18 insertions(+), 2 deletions(-) > > diff --git a/hw/block/nvme.c b/hw/block/nvme.c > index a036cfed68e3..e3a08c6fb0d1 100644 > --- a/hw/block/nvme.c > +++ b/hw/block/nvme.c > @@ -1571,8 +1571,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) > id_ns->dps = 0; > id_ns->lbaf[0].ds = BDRV_SECTOR_BITS; > id_ns->ncap = id_ns->nuse = id_ns->nsze = > - cpu_to_le64(n->ns_size >> > - id_ns->lbaf[NVME_ID_NS_FLBAS_INDEX(ns->id_ns.flbas)].ds); > + cpu_to_le64(nvme_ns_nlbas(n, ns)); > } > } > > diff --git a/hw/block/nvme.h b/hw/block/nvme.h > index c1bb2a4994b6..f9f2b637bbd0 100644 > --- a/hw/block/nvme.h > +++ b/hw/block/nvme.h > @@ -69,6 +69,17 @@ typedef struct NvmeNamespace { > NvmeIdNs id_ns; > } NvmeNamespace; > > +static inline NvmeLBAF *nvme_ns_lbaf(NvmeNamespace *ns) > +{ > + NvmeIdNs *id_ns = &ns->id_ns; > + return &id_ns->lbaf[NVME_ID_NS_FLBAS_INDEX(id_ns->flbas)]; > +} > + > +static inline uint8_t nvme_ns_lbads(NvmeNamespace *ns) > +{ > + return nvme_ns_lbaf(ns)->ds; > +} > + > #define TYPE_NVME "nvme" > #define NVME(obj) \ > OBJECT_CHECK(NvmeCtrl, (obj), TYPE_NVME) > @@ -105,4 +116,10 @@ typedef struct NvmeCtrl { > NvmeIdCtrl id_ctrl; > } NvmeCtrl; > > +/* calculate the number of LBAs that the namespace can accomodate */ Thanks! > +static inline uint64_t nvme_ns_nlbas(NvmeCtrl *n, NvmeNamespace *ns) > +{ > + return n->ns_size >> nvme_ns_lbads(ns); > +} > + > #endif /* HW_NVME_H */ Best regards, Maxim Levitsky
diff --git a/hw/block/nvme.c b/hw/block/nvme.c index a036cfed68e3..e3a08c6fb0d1 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1571,8 +1571,7 @@ static void nvme_realize(PCIDevice *pci_dev, Error **errp) id_ns->dps = 0; id_ns->lbaf[0].ds = BDRV_SECTOR_BITS; id_ns->ncap = id_ns->nuse = id_ns->nsze = - cpu_to_le64(n->ns_size >> - id_ns->lbaf[NVME_ID_NS_FLBAS_INDEX(ns->id_ns.flbas)].ds); + cpu_to_le64(nvme_ns_nlbas(n, ns)); } } diff --git a/hw/block/nvme.h b/hw/block/nvme.h index c1bb2a4994b6..f9f2b637bbd0 100644 --- a/hw/block/nvme.h +++ b/hw/block/nvme.h @@ -69,6 +69,17 @@ typedef struct NvmeNamespace { NvmeIdNs id_ns; } NvmeNamespace; +static inline NvmeLBAF *nvme_ns_lbaf(NvmeNamespace *ns) +{ + NvmeIdNs *id_ns = &ns->id_ns; + return &id_ns->lbaf[NVME_ID_NS_FLBAS_INDEX(id_ns->flbas)]; +} + +static inline uint8_t nvme_ns_lbads(NvmeNamespace *ns) +{ + return nvme_ns_lbaf(ns)->ds; +} + #define TYPE_NVME "nvme" #define NVME(obj) \ OBJECT_CHECK(NvmeCtrl, (obj), TYPE_NVME) @@ -105,4 +116,10 @@ typedef struct NvmeCtrl { NvmeIdCtrl id_ctrl; } NvmeCtrl; +/* calculate the number of LBAs that the namespace can accomodate */ +static inline uint64_t nvme_ns_nlbas(NvmeCtrl *n, NvmeNamespace *ns) +{ + return n->ns_size >> nvme_ns_lbads(ns); +} + #endif /* HW_NVME_H */