hw/block/nvme: report actual LBA data shift in LBAF
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> Signed-off-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
parent
dcd1496132
commit
b865cabf73
|
@ -31,12 +31,13 @@
|
||||||
static void nvme_ns_init(NvmeNamespace *ns)
|
static void nvme_ns_init(NvmeNamespace *ns)
|
||||||
{
|
{
|
||||||
NvmeIdNs *id_ns = &ns->id_ns;
|
NvmeIdNs *id_ns = &ns->id_ns;
|
||||||
|
int lba_index = NVME_ID_NS_FLBAS_INDEX(ns->id_ns.flbas);
|
||||||
|
|
||||||
if (blk_get_flags(ns->blkconf.blk) & BDRV_O_UNMAP) {
|
if (blk_get_flags(ns->blkconf.blk) & BDRV_O_UNMAP) {
|
||||||
ns->id_ns.dlfeat = 0x9;
|
ns->id_ns.dlfeat = 0x9;
|
||||||
}
|
}
|
||||||
|
|
||||||
id_ns->lbaf[0].ds = BDRV_SECTOR_BITS;
|
id_ns->lbaf[lba_index].ds = 31 - clz32(ns->blkconf.logical_block_size);
|
||||||
|
|
||||||
id_ns->nsze = cpu_to_le64(nvme_ns_nlbas(ns));
|
id_ns->nsze = cpu_to_le64(nvme_ns_nlbas(ns));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue