On Sep 14 07:14, Dmitry Fomichev wrote: > 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.fomic...@wdc.com> > --- > hw/block/nvme.c | 4 +++- > hw/block/nvme.h | 11 +++++++++++ > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/hw/block/nvme.c b/hw/block/nvme.c > index 3a90d80694..1cfc136042 100644 > --- a/hw/block/nvme.c > +++ b/hw/block/nvme.c > @@ -2203,6 +2203,7 @@ static void nvme_init_namespace(NvmeCtrl *n, > NvmeNamespace *ns, Error **errp) > { > int64_t bs_size; > NvmeIdNs *id_ns = &ns->id_ns; > + int lba_index; > > bs_size = blk_getlength(n->conf.blk); > if (bs_size < 0) { > @@ -2212,7 +2213,8 @@ static void nvme_init_namespace(NvmeCtrl *n, > NvmeNamespace *ns, Error **errp) > > n->ns_size = bs_size; > > - id_ns->lbaf[0].ds = BDRV_SECTOR_BITS; > + lba_index = NVME_ID_NS_FLBAS_INDEX(ns->id_ns.flbas); > + id_ns->lbaf[lba_index].ds = nvme_ilog2(n->conf.logical_block_size);
Instead of defining a new function, we can directly use clz32(). 31 - clz32(n->conf.logical_block_size)
signature.asc
Description: PGP signature