libmultipath: nvme: fix path detection for kernel 4.16
The path detection logic of the NVMe code relies on the "slaves"
symlinks from NVMe subsys to controllers in sysfs, which have
been removed in the 4.16 kernel.
With this patch, we use the symlinks on the NVMe subsys level
instead.
Example: a multipathed NVMe subsystem with 2 controllers:
/sys/devices/virtual/nvme-subsystem/nvme-subsys2/nvme2n1
/sys/devices/virtual/nvme-fabrics/ctl/nvme2/nvme2c6n1
/sys/devices/virtual/nvme-fabrics/ctl/nvme3/nvme2c8n1
The controllers are found from the subsystem like this:
/sys/devices/virtual/nvme-subsystem/nvme-subsys2/nvme2 ->
../../nvme-fabrics/ctl/nvme2
/sys/devices/virtual/nvme-subsystem/nvme-subsys2/nvme3 ->
../../nvme-fabrics/ctl/nvme3
Signed-off-by: Martin Wilck <mwilck@suse.com>