Ryan forwarded this to bcache-tools upstream on github.
https://github.com/koverstreet/bcache-tools/pull/1
** 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.
* 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.
[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
- 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
[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.
[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
+ * bug 1729145: [kernel] /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