Here is the full 'udevadm test' output for two disks on the same port multiplier channel. I can do a disk on a different channel as well if you want.
On 12.04, the sysfs path of the same disk slot is /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/host8/target8:0:0/8:0:0:0/block/sdk (the sdN numbering is inconsistent from boot to boot, which is why we want /dev/disk/by-path names for all of them). We don't have any 14.04 hosts with a port multiplier, so I don't know when the kernel started putting the hostN directory in the /ataN/ directory and thus triggering udev's special ATA disk handling. ('udevadm test /sys/class/block/sdk' on the 12.04 machine says that udev sees this as an ATA and SATA disk; ID_ATA and ID_ATA_SATA are both 1 and ID_BUS is ata. But it winds up with ID_PATH=pci-0000:02:00.0-scsi-2:0:0:0, instead of an ata variant.) I agree with your analysis that this is affects systemd HEAD. As far as I can see HEAD has nothing in handle_scsi_ata() that would give different names to multiple disks behind the same ATA port. Sadly we have no systems that are running a recent enough systemd that I can report it to them, based on their reporting policies. Is there a bootable live CD of the in-progress next Ubuntu versions? That might have a recent enough systemd that I could boot it on the system in question, verify that its systemd isn't generating the right /dev/disk /by-path results, and report it upstream. ** Attachment added: "full-out" https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1611945/+attachment/4719114/+files/full-out -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to systemd in Ubuntu. https://bugs.launchpad.net/bugs/1611945 Title: /dev/disk/by-path not properly populated for (e)SATA port multiplier disks Status in systemd package in Ubuntu: New Bug description: We have a just-installed Ubuntu 16.04 LTS machine with a number of disks behind port-multiplier eSATA ports, all of them driven by a SiI 3124 controller (sata_sil24 kernel driver). Our machine sees all disks on all channels, however under 16.04 only one disk from each channel shows up in /dev/disk/by-path/ (all disks show up in /dev/disk/by-id and /dev/disk/by-uuid). For our usage this is a severe defect because we rotate disks in and out of the external enclosure and rely on mounting specific slots in the external enclosure through /dev/disk /by-path. This did not happen in Ubuntu 12.04 LTS, the release that this machine was previously running. According to 'udevadm info --export-db' and 'udevadm test-builtin path_id' and so on, systemd's udev stuff is assigning all drives behind the same port the same disk/by-path data (ID_PATH et al). In 'udevadm info /sys/block/sdX', the 'P:' and 'E: DEVPATH=' values show a difference in the target portion of PCI path, eg: P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/ata1/host0/target0:0:0/0:0:0:0/block/sda P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/ata1/host0/target0:1:0/0:1:0:0/block/sdb However the 'S: disk/by-path', 'E: DEVLINKS=', and 'E: ID_PATH' portions do not. For both devices above, we see: S: disk/by-path/pci-0000:02:00.0-ata-1 E: ID_PATH=pci-0000:02:00.0-ata-1 Naturally only one device can have a /dev/disk/by- path/pci-0000:02:00.0-ata-1 symlink, so instead of four disks per channel in /dev/disk/by-path we see one. Ubuntu release: 16.04 Package versions from 'apt-cache policy udev systemd': udev: Installed: 229-4ubuntu7 systemd: Installed: 229-4ubuntu7 'journalctl -b' reports that during boot systemd does report some 'appeared twice with different sysfs paths' notes, eg: Aug 10 13:34:21 verdandi systemd[1]: dev-disk-by\x2dpath- pci\x2d0000:02:00.0\x2data\x2d1\x2dpart1.device: Dev dev-disk-by \x2dpath-pci\x2d0000:02:00.0\x2data\x2d1\x2dpart1.device appeared twice with different sysfs paths /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/ata1/host0/target0:3:0/0:3:0:0/block/sdd/sdd1 and /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1 However it doesn't seem to be reporting this for all port-multiplier drives and their partitions. If it would be useful I can attach full 'udevadm info --export-db' output or the like. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1611945/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp