]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cephadm/box: improve robustness of setup_loop.sh
authorPere Diaz Bou <pdiazbou@redhat.com>
Tue, 19 Oct 2021 07:44:39 +0000 (09:44 +0200)
committerPere Diaz Bou <pdiazbou@redhat.com>
Tue, 19 Oct 2021 07:44:39 +0000 (09:44 +0200)
Signed-off-by: Pere Diaz Bou <pdiazbou@redhat.com>
src/cephadm/box/setup_loop.sh

index 9809bd2eae45e902df4e3f3ff0e6df9387bcfd16..661715e803149bb388097857ca92b3b52b4114c9 100755 (executable)
@@ -1,14 +1,8 @@
 #!/bin/bash
 
-function clean_vg() {
-  sudo lvm vgremove -f -y vg1
-  sudo rm loop-images/*
-}
-
+set -e
 
 function create_loops() {
-       mkdir -p loop-images
-       clean_vg
 
        NUM_OSDS=$1
        if [[ -z $NUM_OSDS ]]; then
@@ -28,19 +22,39 @@ function create_loops() {
        avail_loop=$(sudo losetup -f)
        loop_name=$(basename -- $avail_loop)
 
-       # in case we have to create the loop, find the minor device number.
-       num_loops=$(lsmod | grep loop | awk '{print $3}')
-       num_loops=$((num_loops + 1))
-       echo creating loop $avail_loop minor: $num_loops
-       mknod $avail_loop b 7 $num_loops
-       sudo umount $avail_loop
-       sudo losetup -d $avail_loop
-       # sudo fallocate -l 10G "loop-images/disk${loop_name}.img"
+       if [[ ! -e $avail_loop ]]
+       then
+               # in case we have to create the loop, find the minor device number.
+               num_loops=$(lsmod | grep loop | awk '{print $3}')
+               num_loops=$((num_loops + 1))
+               echo creating loop $avail_loop minor: $num_loops
+               mknod $avail_loop b 7 $num_loops
+       fi
+
+       if mountpoint -q $avail_loop
+       then
+               sudo umount $avail_loop
+       fi
+
+       if [[ ! -z $(losetup -l | grep $avail_loop) ]]
+       then
+               sudo losetup -d $avail_loop
+       fi
+
+       if [[ ! -e loop-images ]]
+       then
+               mkdir -p loop-images
+       fi
+       sudo rm -f loop-images/*
        sudo dd if=/dev/zero of="loop-images/disk${loop_name}.img" bs=1G count=$SIZE
        sudo losetup $avail_loop "loop-images/disk${loop_name}.img"
 
-       sudo vgcreate vg1 $avail_loop
+       if [[ ! -z $(sudo vgs | grep vg1) ]]
+       then
+               sudo lvm vgremove -f -y vg1
+       fi
        sudo pvcreate $avail_loop
+       sudo vgcreate vg1 $avail_loop
 
        for ((i=0;i<$NUM_OSDS;i++)); do
          sudo vgchange --refresh