test: check for /dev/loop-control when checking lodev availability
authorFrantisek Sumsal <frantisek@sumsal.cz>
Wed, 27 Mar 2024 18:35:30 +0000 (19:35 +0100)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Wed, 27 Mar 2024 18:35:30 +0000 (19:35 +0100)
losetup in util-linux 2.40 started reporting lost loop devices [0] and
it has an unfortunate side-effect where it reports lost devices even in
containers, which then makes the loop device check "falsely" pass [1].

Let's just check for /dev/loop-control explicitly to "work around" this.

[0] https://github.com/util-linux/util-linux/commit/a6ca0456cc6d704a786f6b66d8bb2d89ff18eba7
[1] https://github.com/util-linux/util-linux/issues/2824

test/units/testsuite-72.sh

index 953f2a16bf284e7815feffdc9a8b304e88aecf38..de657a27ff48edba127949e871687e5d0fe6c41d 100755 (executable)
@@ -22,7 +22,7 @@ fi
 # change the sector size of a file, and we want to test both 512 and 4096 byte
 # sectors. If loopback devices are not supported, we can only test one sector
 # size, and the underlying device is likely to have a sector size of 512 bytes.
-if ! losetup --find >/dev/null 2>&1; then
+if [[ ! -e /dev/loop-control ]]; then
     echo "No loopback device support"
     SECTOR_SIZES="512"
 fi
@@ -108,7 +108,7 @@ for sector_size in $SECTOR_SIZES ; do
     rm -f "$BACKING_FILE"
     truncate -s "$disk_size" "$BACKING_FILE"
 
-    if losetup --find >/dev/null 2>&1; then
+    if [[ -e /dev/loop-control ]]; then
         # shellcheck disable=SC2086
         blockdev="$(losetup --find --show --sector-size $sector_size $BACKING_FILE)"
     else