Message ID | 20200930220414.562527-10-kbusch@kernel.org |
---|---|
State | New |
Headers | show |
Series | nvme qemu cleanups and fixes | expand |
On Sep 30 15:04, Keith Busch wrote: > From: Dmitry Fomichev <dmitry.fomichev@wdc.com> > > Calculate the data shift value to report based on the set value of > logical_block_size device property. > > In the process, use a local variable to calculate the LBA format > index instead of the hardcoded value 0. This makes the code more > readable and it will make it easier to add support for multiple LBA > formats in the future. > > Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com> > Reviewed-by: Klaus Jensen <k.jensen@samsung.com> > Signed-off-by: Keith Busch <kbusch@kernel.org> > --- > hw/block/nvme-ns.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c > index 2ba0263dda..a85e5fdb42 100644 > --- a/hw/block/nvme-ns.c > +++ b/hw/block/nvme-ns.c > @@ -47,6 +47,8 @@ static void nvme_ns_init(NvmeNamespace *ns) > > static int nvme_ns_init_blk(NvmeCtrl *n, NvmeNamespace *ns, Error **errp) > { > + int lba_index; > + > if (!blkconf_blocksizes(&ns->blkconf, errp)) { > return -1; > } > @@ -67,6 +69,9 @@ static int nvme_ns_init_blk(NvmeCtrl *n, NvmeNamespace *ns, Error **errp) > n->features.vwc = 0x1; > } > > + lba_index = NVME_ID_NS_FLBAS_INDEX(ns->id_ns.flbas); > + ns->id_ns.lbaf[lba_index].ds = 31 - clz32(ns->blkconf.logical_block_size); > + > return 0; > } > I think that back when I reviewed this, it was before the multi-namespace patch. I believe this setup should move to the nvme_ns_init() function instead.
diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c index 2ba0263dda..a85e5fdb42 100644 --- a/hw/block/nvme-ns.c +++ b/hw/block/nvme-ns.c @@ -47,6 +47,8 @@ static void nvme_ns_init(NvmeNamespace *ns) static int nvme_ns_init_blk(NvmeCtrl *n, NvmeNamespace *ns, Error **errp) { + int lba_index; + if (!blkconf_blocksizes(&ns->blkconf, errp)) { return -1; } @@ -67,6 +69,9 @@ static int nvme_ns_init_blk(NvmeCtrl *n, NvmeNamespace *ns, Error **errp) n->features.vwc = 0x1; } + lba_index = NVME_ID_NS_FLBAS_INDEX(ns->id_ns.flbas); + ns->id_ns.lbaf[lba_index].ds = 31 - clz32(ns->blkconf.logical_block_size); + return 0; }