From fd4ae759e0cf74f43ba490585c717033b8259614 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Sun, 27 Sep 2020 17:59:49 +0100 Subject: [PATCH] rbd-nbd: don't ignore namespace when unmapping by image spec Fixes: https://tracker.ceph.com/issues/47665 Signed-off-by: Mykola Golub (cherry picked from commit b360186eb6463811ce19f21e8d24ab7c44dc7279) --- qa/workunits/rbd/rbd-nbd.sh | 12 +++++++++++- src/tools/rbd_nbd/rbd-nbd.cc | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/qa/workunits/rbd/rbd-nbd.sh b/qa/workunits/rbd/rbd-nbd.sh index bcab06be9f846..fb1510851e5c2 100755 --- a/qa/workunits/rbd/rbd-nbd.sh +++ b/qa/workunits/rbd/rbd-nbd.sh @@ -107,7 +107,7 @@ unmap_device() for s in 0.5 1 2 4 8 16 32; do sleep ${s} rbd-nbd list-mapped | expect_false grep "^${pid}\\b" && - ! ps -p ${pid} -C rbd-nbd && + ps -C rbd-nbd | expect_false grep "^${pid}\\b" && return 0 done return 1 @@ -227,6 +227,16 @@ get_pid ${NS} unmap_device "${POOL}/${NS}/${IMAGE}@snap" ${PID} DEV= +# unmap by image name test 2 +DEV=`_sudo rbd-nbd map ${POOL}/${IMAGE}` +get_pid +pid=$PID +DEV=`_sudo rbd-nbd map ${POOL}/${NS}/${IMAGE}` +get_pid ${NS} +unmap_device ${POOL}/${NS}/${IMAGE} ${PID} +DEV= +unmap_device ${POOL}/${IMAGE} ${pid} + # auto unmap test DEV=`_sudo rbd-nbd map ${POOL}/${IMAGE}` get_pid diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index 77d8e82e29979..a2a911f40a1d1 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -1408,8 +1408,8 @@ static bool find_mapped_dev_by_spec(Config *cfg) { Config c; NBDListIterator it; while (it.get(&pid, &c)) { - if (c.poolname == cfg->poolname && c.imgname == cfg->imgname && - c.snapname == cfg->snapname) { + if (c.poolname == cfg->poolname && c.nsname == cfg->nsname && + c.imgname == cfg->imgname && c.snapname == cfg->snapname) { *cfg = c; return true; } -- 2.39.5