** Description changed: [Impact] - * Current users of bcache devices may encounter unreliable device - numbering as the Linux kernel does not guarantee that bcache - minor numbers are assigned to the same devices at each boot. - Users who may have used /dev/bcacheN in paths to a specific - device could possible be pointing to a different dataset - altogether. bcache udev rules do provide some mechanism to - generate persistent symlinks in /dev/bcache/by-uuid or - /dev/bcache/by-label which is based on superblock data on - the underlying device. However, the Linux kernel does not - always generate an kernel uevent to trigger the udev rules - to create the symlink. + * Current users of bcache devices may encounter unreliable device + numbering as the Linux kernel does not guarantee that bcache + minor numbers are assigned to the same devices at each boot. + Users who may have used /dev/bcacheN in paths to a specific + device could possible be pointing to a different dataset + altogether. bcache udev rules do provide some mechanism to + generate persistent symlinks in /dev/bcache/by-uuid or + /dev/bcache/by-label which is based on superblock data on + the underlying device. However, the Linux kernel does not + always generate an kernel uevent to trigger the udev rules + to create the symlink. - * The fix adds a udev program which will read bcache superblock - of slave devices and extract the UUID and LABEL, exporting them - to udev for use in the bcache rule files. + * The fix adds a udev program which will read bcache superblock + of slave devices and extract the UUID and LABEL, exporting them + to udev for use in the bcache rule files. - * This is affected in upstream bcache-tools, the owning package - of the udev rules. This affects all releases of bcache-tools - as the rules rely upon the kernel to trigger these events, - though that is not a requirement to resolve the lack of - persistent links. - + * This is affected in upstream bcache-tools, the owning package + of the udev rules. This affects all releases of bcache-tools + as the rules rely upon the kernel to trigger these events, + though that is not a requirement to resolve the lack of + persistent links. + [Test Case] - * Launch and Ubuntu Cloud Image with 3 unused disks - - apt install bcache-tools tree - - make-bcache -C /dev/vdb - - make-bcache -B /dev/vdc - - make-bcache -B /dev/vdd - - echo "vdc" > /sys/class/block/bcache0/bcache/label - - echo "vdd" > /sys/class/block/bcache1/bcache/label - - reboot + * Launch and Ubuntu Cloud Image with 3 unused disks + - apt install bcache-tools tree + - make-bcache -C /dev/vdb + - make-bcache -B /dev/vdc + - make-bcache -B /dev/vdd + - echo "vdc" > /sys/class/block/bcache0/bcache/label + - echo "vdd" > /sys/class/block/bcache1/bcache/label + - reboot - - Run this test: + - Run this test: - #!/bin/bash - FAIL=0 - [ ! -d /dev/bcache ] && { - echo "FAIL: /dev/bcache is not a directory"; - exit 1 - } - for label in /dev/bcache/by-label/*; do - LABEL_TARGET="$(ls -1 /sys/class/block/`basename $label`/holders/)" - DEVNAME=`readlink -f $label`; - KNAME="${DEVNAME#*/dev/}" - if [ "$LABEL_TARGET" != "$KNAME" ]; then - echo "FAIL: label points to $LABEL_TARGET but symlink points to $DEVNAME"; - FAIL=1 - fi; - done - if [ "$FAIL" == "0" ]; then - echo "PASS"; - exit 0 - fi - exit 1 + #!/bin/bash + FAIL=0 + [ ! -d /dev/bcache ] && { + echo "FAIL: /dev/bcache is not a directory"; + exit 1 + } + for label in /dev/bcache/by-label/*; do + LABEL_TARGET="$(ls -1 /sys/class/block/`basename $label`/holders/)" + DEVNAME=`readlink -f $label`; + KNAME="${DEVNAME#*/dev/}" + if [ "$LABEL_TARGET" != "$KNAME" ]; then + echo "FAIL: label points to $LABEL_TARGET but symlink points to $DEVNAME"; + FAIL=1 + fi; + done + if [ "$FAIL" == "0" ]; then + echo "PASS"; + exit 0 + fi + exit 1 - [Regression Potential] - * As bcache minor numbers and these symlinks have been unreliable in - the past there may be code that makes assumptions about - /dev/bcache* expanded only to the block devices, versus - /dev/bcache which is a directory. - + * As bcache minor numbers and these symlinks have been unreliable in + the past there may be code that makes assumptions about + /dev/bcache* expanded only to the block devices, versus + /dev/bcache which is a directory. [Original Description] Bcache device names like /dev/bcache0 are unstable. Bcache does not use any predictable ordering when assembling bcache devices, so on systems with multiple bcache devices, a symlink to /dev/bcache0 may end up pointing do a different device. the bcache dname symlink should point to the /dev/bcache/by-uuid/<UUID> which matches the backing device UUID that's set at creation time. + + Related bugs: + * bug 1729145: /dev/bcache/by-uuid links not created after reboot
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1728742 Title: curtin dname for bcache uses unstable devname instead of UUID To manage notifications about this bug go to: https://bugs.launchpad.net/bcache-tools/+bug/1728742/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs