]> granicus.if.org Git - zfs/commitdiff
Delay before destroying loopback devices
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 3 Jun 2011 21:13:25 +0000 (14:13 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 3 Jun 2011 21:38:25 +0000 (14:38 -0700)
Generally I don't approve of just adding an arbitrary delay to
avoid a problem but in this case I'm going to let it slide.  We
may need to delay briefly after 'zpool destroy' returns to ensure
the loopback devices are closed.  If they aren't closed than
losetup -d will not be able to destroy them.  Unfortunately,
there's no easy state the check so we'll have to make due with
a simple delay.

scripts/zpool-config/lo-raid0.sh
scripts/zpool-config/lo-raid10.sh
scripts/zpool-config/lo-raidz.sh
scripts/zpool-config/lo-raidz2.sh

index f7eb77d7b612d34ebabb49cf38e22f25a8ed93e4..f24050f465318af59b18063f02abcf16ca972552 100644 (file)
@@ -31,6 +31,9 @@ zpool_destroy() {
        msg ${ZPOOL} destroy ${ZPOOL_NAME}
        ${ZPOOL} destroy ${ZPOOL_NAME}
 
+       # Delay to ensure device is closed before removing loop device
+       sleep 1
+
        for FILE in ${FILES}; do
                DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
                msg "Removing ${FILE} using loopback device ${DEVICE}"
index 5350930bb2cb3cb02a5831b9bd312ca2a95105e0..f9fe3c064689c1975cc84d29e2c9a26a51e0ee2e 100644 (file)
@@ -46,6 +46,9 @@ zpool_destroy() {
        msg ${ZPOOL} destroy ${ZPOOL_NAME}
        ${ZPOOL} destroy ${ZPOOL_NAME}
 
+       # Delay to ensure device is closed before removing loop device
+       sleep 1
+
        for FILE in ${FILES}; do
                DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
                msg "Removing ${FILE} using loopback device ${DEVICE}"
index e83e4a83889e5e83882aa706786364248796d536..db5de7c1bf21c98f3fd831c836f1e8f41f1474b2 100644 (file)
@@ -31,6 +31,9 @@ zpool_destroy() {
        msg ${ZPOOL} destroy ${ZPOOL_NAME}
        ${ZPOOL} destroy ${ZPOOL_NAME}
 
+       # Delay to ensure device is closed before removing loop device
+       sleep 1
+
        for FILE in ${FILES}; do
                DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
                msg "Removing ${FILE} using loopback device ${DEVICE}"
index c6381eaffa62e028af2b60d36b5266745877491a..53a032ec5f433bda20e5d8ceb26d32f86bf8e568 100644 (file)
@@ -31,6 +31,9 @@ zpool_destroy() {
        msg ${ZPOOL} destroy ${ZPOOL_NAME}
        ${ZPOOL} destroy ${ZPOOL_NAME}
 
+       # Delay to ensure device is closed before removing loop device
+       sleep 1
+
        for FILE in ${FILES}; do
                DEVICE=`${LOSETUP} -a | grep ${FILE} | head -n1|cut -f1 -d:`
                msg "Removing ${FILE} using loopback device ${DEVICE}"