nvme: add capability to connect to an administrative controller
authorKamaljit Singh <kamaljit.singh1@wdc.com>
Mon, 21 Jul 2025 17:36:59 +0000 (10:36 -0700)
committerChristoph Hellwig <hch@lst.de>
Thu, 31 Jul 2025 13:35:44 +0000 (06:35 -0700)
commite715b8733df60aa3280ab3e0de0560c8a72c5c1d
tree14f2e8309d4df30eaa0d350c03766b154acad198
parentc71fc0f457ca1c2cd4dff2d974df724beb14f67e
nvme: add capability to connect to an administrative controller

Add capability to connect to an administrative controller by
preventing ioq creation for admin-controllers.

Add a nvme_admin_ctrl() to check if a controller's CNTRLTYPE indicates
that it is an administrative controller and override ctrl->queue_count to
1 for admin controllers, so that only the admin queue and no I/O queues
are created for an administrative controller.  This override is done in
nvme_init_ctrl_finish() after ctrl->cntrltype has been initialized in
nvme_init_identify() so nvme_admin_ctrl() will work correctly.
Doing this override in generic code (nvme_init_ctrl_finish) makes it
transport agnostic and will work properly for nvme/tcp as well as for
nvme/rdma.

Suggested-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Signed-off-by: Kamaljit Singh <kamaljit.singh1@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/core.c