Bug 52309

Summary: regression: udev path-id plugin does not work for mmc cards anymore
Product: systemd Reporter: Enrico Scholz <enrico.scholz>
Component: generalAssignee: systemd-bugs
Status: RESOLVED FIXED QA Contact: systemd-bugs
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Enrico Scholz 2012-07-20 13:01:42 UTC
The path-id plugin does not work for mmc cards anymore:

# new-udevadm test-builtin path_id /sys/block/mmcblk0
calling: test-builtin
load module index
unload module index

# new-udevadm --version
186

(from cd96b3b86abb4a88cac2722bdfb6e5d4413f6831 git)


An old version returns:

# udevadm test-builtin path_id /sys/block/mmcblk0
run_command: calling: test-builtin
builtin_kmod_init: load module index
udev_device_new_from_syspath: device 0x5663f0 has devpath '/devices/platform/mxs-mmc.0/mmc_host/mmc0/mmc0:b368/block/mmcblk0'
udev_device_new_from_syspath: device 0x5673c8 has devpath '/devices/platform/mxs-mmc.0/mmc_host/mmc0/mmc0:b368'
udev_device_new_from_syspath: device 0x567730 has devpath '/devices/platform/mxs-mmc.0/mmc_host/mmc0'
udev_device_new_from_syspath: device 0x567a88 has devpath '/devices/platform/mxs-mmc.0'
udev_device_new_from_syspath: device 0x567dc0 has devpath '/devices/platform'
udev_builtin_add_property: ID_PATH=platform-mxs-mmc.0
ID_PATH=platform-mxs-mmc.0
udev_builtin_add_property: ID_PATH_TAG=platform-mxs-mmc_0
ID_PATH_TAG=platform-mxs-mmc_0
builtin_kmod_exit: unload module index

# new-udevadm --version
182
Comment 1 Kay Sievers 2012-07-20 13:18:08 UTC
We suppress all the "useless" links now.

The path to a platform device is pretty pointless, it just repeats the
kernel device name and usually does not provide any add-on value. The
by-path links are mainly for complex storage topologies, and identify
more positions on a bus than a device. They probably have no real meaning
for things like mmc.

What would you need it for?

Why would by-path/ here any better than the kernel device name?
Comment 2 Enrico Scholz 2012-07-20 13:27:13 UTC
The kernel device name does not identify the physical device but depends on random events.

E.g. I have a platform with two sdhci controllers with different purposes.  First slot is an external slot while second one is internal with a non-removable card.

When there is a card in the external slot at boot, the non-removable card is named 'mmcblk1'; without the external card it is 'mmcblk0'.  Vice versa for the external card.

Mounting the correct card requires knowledge about physical position which worked fine previously with the /dev/disk/by-path symlink.
Comment 3 Kay Sievers 2012-07-20 14:05:28 UTC
Ok, convinced, sounds useful.

This should fix it:
  http://cgit.freedesktop.org/systemd/systemd/commit/?id=2a3fe9a75951cb085b81569939f6af3ce2eb2b02

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.