]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
blkid: add --garbage-collect test
authorChristian Goeschel Ndjomouo <cgoesc2@wgu.edu>
Sun, 22 Feb 2026 01:21:05 +0000 (20:21 -0500)
committerChristian Goeschel Ndjomouo <cgoesc2@wgu.edu>
Mon, 23 Feb 2026 13:15:05 +0000 (08:15 -0500)
Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
tests/ts/blkid/cache

index 2c5e59ec8e3dbd6df8d8998b70dbf41ca128ccf1..bcce18563c3fa7e67f3940dccb363174d73625d2 100755 (executable)
@@ -39,10 +39,38 @@ ts_device_init
        | sed -e "s|$TS_LODEV|DEVICE|" \
        >> "$TS_OUTPUT" 2>> "$TS_ERRLOG"
 
-cat "$BLKID_FILE" \
+cat "$BLKID_FILE" | grep "$TS_LODEV" \
        | sed -e 's/DEVNO="[^"]*"/DEVNO=""/' \
              -e 's/TIME="[^"]*"/TIME=""/' \
              -e "s|$TS_LODEV|DEVICE|" \
        >> "$TS_OUTPUT"
 
+# Test the cache garbage collection by detaching a newly registered
+# loop device before garbage collection.
+# We expect $TS_LODEV (/dev/loopX) to not be present in $BLKID_FILE
+# anymore after the operation.
+
+# Initialize another loop device to keep at least the previously 
+# attached one in the cache. We do this because otherwise the list of
+# block devices (blkid_cache->bic_devs) will be empty and that will
+# prevent an update of the cache.
+# See libblkid/src/save.c::blkid_flush_cache()
+ts_device_init
+
+"$TS_CMD_MKSWAP" --quiet --pagesize 4096 --endianness little \
+       --uuid 221ffb62-649b-4f86-87ae-0ebd15daf169 \
+       "$TS_LODEV" &>/dev/null
+
+# Update the cache with new loop device
+"$TS_CMD_BLKID" &>/dev/null
+
+ts_device_deinit "$TS_LODEV"
+
+"$TS_CMD_BLKID" --garbage-collect &>/dev/null
+
+if grep "$TS_LODEV" "$BLKID_FILE" &>/dev/null ; then
+       ts_failed "cache garbage collection failed"
+fi
+
+
 ts_finalize