summaryrefslogtreecommitdiffstats
path: root/tests/functions.sh
diff options
context:
space:
mode:
authorKarel Zak2007-05-25 14:53:22 +0200
committerKarel Zak2007-05-25 14:53:22 +0200
commit66822df31ae3ddceb72fe269618338aadf3eca6f (patch)
tree673bf55223fe35745072da68aa0dc0434cfb4653 /tests/functions.sh
parentmount: use verbose mode instead debug mode (diff)
downloadkernel-qcow2-util-linux-66822df31ae3ddceb72fe269618338aadf3eca6f.tar.gz
kernel-qcow2-util-linux-66822df31ae3ddceb72fe269618338aadf3eca6f.tar.xz
kernel-qcow2-util-linux-66822df31ae3ddceb72fe269618338aadf3eca6f.zip
tests: cleanup blkid cache after test device deinitialization
The libblkid reuses cached information when a cache entry is younger than 2 secs. That's wrong, because util-linux tests use devices more quickly. Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'tests/functions.sh')
-rw-r--r--tests/functions.sh31
1 files changed, 26 insertions, 5 deletions
diff --git a/tests/functions.sh b/tests/functions.sh
index ba94ad4de..ed435092c 100644
--- a/tests/functions.sh
+++ b/tests/functions.sh
@@ -57,6 +57,20 @@ function ts_init {
TS_EXPECTED="$TS_EXPECTEDDIR/$TS_NAME"
TS_INPUT="$TS_INPUTDIR/$TS_NAME"
TS_MOUNTPOINT="$(pwd)/$TS_OUTDIR/${TS_NAME}_mnt"
+ TS_BLKIDCACHE=""
+ TS_HAS_VOLUMEID="no"
+
+ ldd $TS_CMD_MOUNT | grep -q 'libvolume_id' &> /dev/null
+ if [ "$?" == "0" ]; then
+ TS_HAS_VOLUMEID="yes"
+ fi
+ if [ "$TS_HAS_VOLUMEID" != "yes" ]; then
+ if [ -f "/etc/blkid/blkid.tab" ]; then
+ TS_BLKIDCACHE="/etc/blkid/blkid.tab"
+ elif [ -f "/etc/blkid.tab" ]; then
+ TS_BLKIDCACHE="/etc/blkid.tab"
+ fi
+ fi
rm -f $TS_OUTPUT
touch $TS_OUTPUT
@@ -101,6 +115,10 @@ function ts_device_init {
local IMAGE_RE=$( echo "$IMAGE" | sed 's:/:\\/:g' )
local DEV=""
+ if [ "$TS_HAS_VOLUMEID" != "yes" ] && [ -f "$TS_BLKIDCACHE" ]; then
+ cp $TS_BLKIDCACHE $OUTDIR/$TS_NAME.cache
+ fi
+
dd if=/dev/zero of="$IMAGE" bs=1M count=5 &> /dev/null
$TS_CMD_LOSETUP -f "$IMAGE" 2>&1 >> $TS_OUTPUT
@@ -121,15 +139,18 @@ function ts_device_deinit {
if [ -b "$DEV" ]; then
$TS_CMD_UMOUNT "$DEV" &> /dev/null
$TS_CMD_LOSETUP -d "$DEV" &> /dev/null
+ if [ "$TS_HAS_VOLUMEID" != "yes" ] && [ -f "$TS_BLKIDCACHE" ] && [ -s "$OUTDIR/$TS_NAME.cache" ]; then
+ # We have to remove the device from cache otherwise
+ # libblkid will reuse cached information. The cache
+ # refresh time is 2 seconds -- that's too long. We
+ # re-use the same device more quickly. --kzak
+ mv -f $OUTDIR/$TS_NAME.cache $TS_BLKIDCACHE
+ fi
fi
}
function ts_udev_dev_support {
- ldd $TS_CMD_MOUNT | grep -q 'libvolume_id' 2>&1 >> $TS_OUTPUT
- if [ "$?" == "0" ]; then
- local HAS_VOLUMEID="yes"
- fi
- if [ -n "$HAS_VOLUMEID" ] && [ ! -L "/dev/disk/$1/$2" ]; then
+ if [ "$TS_HAS_VOLUMEID" == "yes" ] && [ ! -L "/dev/disk/$1/$2" ]; then
return 1
fi
return 0