[PATCHv6 0/4] nvmet: unique discovery subsystems

Hannes Reinecke
2022-04-20T09:27:54Z

Hi all,

here's my next attempt to support unique discovery subsystems.

As per suggestion from Christoph this patchset allows to have a per-port
discovery subsystem. For that a normal NVMe subsystem needs to be created
via configfs, the type needs to be changed to 'discovery', and then linked
into the port where this discovery subsystem should be visible.

Once that is done the discovery log page output will include all ports
into which the same discovery controller is linked.

If the discovery subsystem is unlinked the default behaviour is reinstated.
Additionally a module parameter 'expose_discovery_subsys' is implemented,
which will allow (or, rather, require) the creation of the default discovery subsystem via configfs, too. Once that option is enabled only ports into which
a discovery subsystem is linked will be presenting a discovery service; on
other ports a discovery attempt will fail.

As usual, comments and reviews are welcome.

Changes to v5:
- Implement 'expose_discovery_subsys' module option to allow the creation of
the standard discovery subsystem via configfs.
Changes to v4:
- Unset disc_subsys pointer when unique discovery subsystem
gets unlinked
- Improve documentation
- Use port count to determine if a subsystem is linked to ports

Changes to v3:
- Rework to use per-port discovery subsystems as suggested by hch

Changes to v2:
- Heavily rework after discussion on the mailing list

Changes to the original submission:
- Include all subsystems in the discovery log output

Hannes Reinecke (4):
nvmet: make the subsystem type configurable
nvmet: per-port discovery subsystem
nvmet: include all configured ports in the discovery log page
nvmet: expose discovery subsystem

drivers/nvme/target/configfs.c | 80 ++++++++++++++++++++++-
drivers/nvme/target/core.c | 15 ++++-
drivers/nvme/target/discovery.c | 108 +++++++++++++++++++++++++-------
drivers/nvme/target/nvmet.h | 2 +
4 files changed, 176 insertions(+), 29 deletions(-)

--
2.29.2