Revision a89fcca8185633993018dc081d6b021d005e6d0b authored by Guilherme G. Piccoli on 14 August 2019, 14:26:10 UTC, committed by Jens Axboe on 20 August 2019, 17:02:10 UTC
Commit 1b1031ca63b2 ("nvme: validate cntlid during controller initialisation") introduced a validation for controllers with duplicate cntlid that runs on nvme_init_subsystem(). The problem is that the validation relies on ctrl->cntlid, and this value is assigned (from id_ctrl value) after the call for nvme_init_subsystem() in nvme_init_identify() for non-fabrics scenario. That leads to ctrl->cntlid always being 0 in case we have a physical set of controllers in the same subsystem. This patch fixes that by loading the discovered cntlid id_ctrl value into ctrl->cntlid before the subsystem initialization, only for the non-fabrics case. The patch was tested with emulated nvme devices (qemu) having two controllers in a single subsystem. Without the patch, we couldn't make it work failing in the duplicate check; when running with the patch, we could see the subsystem holding both controllers. For the fabrics case we see ctrl->cntlid has a more intricate relation with the admin connect, so we didn't change that. Fixes: 1b1031ca63b2 ("nvme: validate cntlid during controller initialisation") Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 504db08
File | Mode | Size |
---|---|---|
.gitignore | -rw-r--r-- | 23 bytes |
Build | -rw-r--r-- | 60 bytes |
Makefile | -rw-r--r-- | 1.6 KB |
spidev_fdx.c | -rw-r--r-- | 2.7 KB |
spidev_test.c | -rw-r--r-- | 9.9 KB |
Computing file changes ...