[lvm-devel] master - tests: resolve missing removal of loopdevice on error path

Zdenek Kabelac zkabelac at sourceware.org
Thu Sep 17 22:36:05 UTC 2020


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=8d40859e29c03c867c788c4927076b4192192214
Commit:        8d40859e29c03c867c788c4927076b4192192214
Parent:        a5e867139d31b42e3bd084ecd0aefe1eabfa380c
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Sep 18 00:31:11 2020 +0200
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Sep 18 00:31:11 2020 +0200

tests: resolve missing removal of loopdevice on error path

In case of test failure, loop device leaked and occupied space forever.
---
 test/shell/integrity-blocksize.sh | 30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/test/shell/integrity-blocksize.sh b/test/shell/integrity-blocksize.sh
index 61d58e2a3..60513e516 100644
--- a/test/shell/integrity-blocksize.sh
+++ b/test/shell/integrity-blocksize.sh
@@ -18,6 +18,21 @@ aux have_integrity 1 5 0 || skip
 
 losetup -h | grep sector-size || skip
 
+
+cleanup_mounted_and_teardown()
+{
+	umount "$mnt" || true
+	vgremove -ff $vg1 $vg2 || true
+	losetup -d $LOOP1 || true
+	losetup -d $LOOP2 || true
+	losetup -d $LOOP3 || true
+	losetup -d $LOOP4 || true
+
+	rm -f loop{abcd}
+	aux teardown
+}
+
+
 # Tests with fs block sizes require a libblkid version that shows BLOCK_SIZE
 aux prepare_devs 1
 vgcreate $vg "$dev1"
@@ -27,6 +42,8 @@ blkid "$DM_DEV_DIR/$vg/$lv1" | grep BLOCK_SIZE || skip
 lvchange -an $vg
 vgremove -ff $vg
 
+trap 'cleanup_mounted_and_teardown' EXIT
+
 dd if=/dev/zero of=loopa bs=$((1024*1024)) count=64 2> /dev/null
 dd if=/dev/zero of=loopb bs=$((1024*1024)) count=64 2> /dev/null
 dd if=/dev/zero of=loopc bs=$((1024*1024)) count=64 2> /dev/null
@@ -270,15 +287,4 @@ pvck --dump metadata $LOOP3 | grep 'block_size = 4096'
 lvchange -an $vg2/$lv1
 lvremove -y $vg2/$lv1
 
-vgremove -ff $vg1
-vgremove -ff $vg2
-
-losetup -d $LOOP1
-losetup -d $LOOP2
-losetup -d $LOOP3
-losetup -d $LOOP4
-rm loopa
-rm loopb
-rm loopc
-rm loopd
-
+# remove of $vg1, $vg2 and loops in cleanup_mounted_and_teardown()




More information about the lvm-devel mailing list