only 16 NVMe controllers usable per system due to 18bit minor number limit
Due to the 18bit minor number limit (#8630) the NVMe driver will fail to create minor nodes for devices beyond instance 16. This is due to NVME_MINOR_INST_SHIFT being defined as 14, which was supposed to allow 16k namespaces and 256k NVMe devices in a system but didn't take the 18bit limit into account.
An easy solution for now is to change NVME_MINOR_INST_SHIFT to 9, allowing up to 512 devices with 512 namespaces each. As devices with 128 namespaces are already being sold this seems like a reasonable comprise for now.
Updated by Hans Rosenfeld about 6 years ago
Testing: I've verified that the device nodes in devfs have the expected minor number with the modified driver. nvmeadm(1M) still works as expected.
This change has been in illumos-joyent since August.
Updated by Electric Monk about 6 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
commit dc97a43d4a70c8773a619f11b95b07a787f6f5b7 Author: Hans Rosenfeld <firstname.lastname@example.org> Date: 2017-09-12T14:59:24.000Z 8631 only 16 NVMe controllers usable per system due to 18bit minor number limit Reviewed by: Robert Mustacchi <email@example.com> Reviewed by: Patrick Mooney <firstname.lastname@example.org> Reviewed by: Yuri Pankov <email@example.com> Reviewed by: Toomas Soome <firstname.lastname@example.org> Approved by: Richard Lowe <email@example.com>