** 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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs