From: Jason Dillaman Date: Mon, 6 May 2019 19:16:03 +0000 (-0400) Subject: qa/workunits/rbd: wait for rbd-nbd unmap to complete X-Git-Tag: v12.2.13~101^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=26cf5c1cd05778ce6aedaa28253e411bfdd2e642;p=ceph.git qa/workunits/rbd: wait for rbd-nbd unmap to complete The "unmap" request is asynchronous, so wait for a short amount of time for the "rbd-nbd" daemon process to exit. Fixes: http://tracker.ceph.com/issues/39598 Signed-off-by: Jason Dillaman (cherry picked from commit 87278548a5a476692511b76b661278501bf72429) Conflicts: qa/workunits/rbd/rbd-nbd.sh : Resolved for map/unmap namespace test (cherry picked from commit b9e4644140ce9538a5162e466615d7e6b53efa7a) --- diff --git a/qa/workunits/rbd/rbd-nbd.sh b/qa/workunits/rbd/rbd-nbd.sh index 1af2336b8a5..9ea6e3d3302 100755 --- a/qa/workunits/rbd/rbd-nbd.sh +++ b/qa/workunits/rbd/rbd-nbd.sh @@ -82,6 +82,19 @@ function get_pid() ps -p ${PID} -o cmd | grep rbd-nbd } +unmap_device() +{ + local unmap_dev=$1 + local list_dev=$2 + _sudo rbd-nbd unmap ${unmap_dev} + + for s in 0.5 1 2 4 8 16 32; do + sleep ${s} + rbd-nbd list-mapped | expect_false grep "${list_dev} $" && return 0 + done + return 1 +} + # # main # @@ -109,8 +122,7 @@ get_pid # map test specifying the device expect_false _sudo rbd-nbd --device ${DEV} map ${POOL}/${IMAGE} dev1=${DEV} -_sudo rbd-nbd unmap ${DEV} -rbd-nbd list-mapped | expect_false grep "${DEV} $" +unmap_device ${DEV} ${DEV} DEV= # XXX: race possible when the device is reused by other process DEV=`_sudo rbd-nbd --device ${dev1} map ${POOL}/${IMAGE}` @@ -189,8 +201,7 @@ ps -p ${PID} -o cmd | expect_false grep rbd-nbd rbd snap create ${POOL}/${IMAGE}@snap DEV=`_sudo rbd-nbd map ${POOL}/${IMAGE}@snap` get_pid -_sudo rbd-nbd unmap "${IMAGE}@snap" -rbd-nbd list-mapped | expect_false grep "${DEV} $" +unmap_device "${IMAGE}@snap" ${DEV} DEV= ps -p ${PID} -o cmd | expect_false grep rbd-nbd