On Tue, Feb 04, 2020 at 10:52:04AM +0100, Klaus Jensen wrote: > This adds support for multiple namespaces by introducing a new 'nvme-ns' > device model. The nvme device creates a bus named from the device name > ('id'). The nvme-ns devices then connect to this and registers > themselves with the nvme device. > > This changes how an nvme device is created. Example with two namespaces: > > -drive file=nvme0n1.img,if=none,id=disk1 > -drive file=nvme0n2.img,if=none,id=disk2 > -device nvme,serial=deadbeef,id=nvme0 > -device nvme-ns,drive=disk1,bus=nvme0,nsid=1 > -device nvme-ns,drive=disk2,bus=nvme0,nsid=2 > > The drive property is kept on the nvme device to keep the change > backward compatible, but the property is now optional. Specifying a > drive for the nvme device will always create the namespace with nsid 1. > > Signed-off-by: Klaus Jensen <klaus.jen...@cnexlabs.com> > Signed-off-by: Klaus Jensen <k.jen...@samsung.com>
I like this feature a lot, thanks for doing it. Reviewed-by: Keith Busch <kbu...@kernel.org> > @@ -1256,18 +1272,24 @@ static uint16_t nvme_smart_info(NvmeCtrl *n, NvmeCmd > *cmd, uint8_t rae, > uint64_t units_read = 0, units_written = 0, read_commands = 0, > write_commands = 0; > NvmeSmartLog smart; > - BlockAcctStats *s; > > if (nsid && nsid != 0xffffffff) { > return NVME_INVALID_FIELD | NVME_DNR; > } This is totally optional, but worth mentioning: this patch makes it possible to remove this check and allow per-namespace smart logs. The ID_CTRL.LPA would need to updated to reflect that if you wanted to go that route.