X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Ftest%2Fcli-integration%2Frbd%2Funmap.t;fp=src%2Fceph%2Fsrc%2Ftest%2Fcli-integration%2Frbd%2Funmap.t;h=d122b7d46d52e84b33254f4a1a19e059ce9288ce;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/test/cli-integration/rbd/unmap.t b/src/ceph/src/test/cli-integration/rbd/unmap.t new file mode 100644 index 0000000..d122b7d --- /dev/null +++ b/src/ceph/src/test/cli-integration/rbd/unmap.t @@ -0,0 +1,467 @@ + +Setup +===== + + $ rbd create --size 1 img + $ rbd snap create img@snap + $ rbd create --size 1 anotherimg + $ ceph osd pool create custom 8 >/dev/null 2>&1 + $ rbd pool init custom + $ rbd create --size 1 custom/img + $ rbd snap create custom/img@snap + $ rbd snap create custom/img@anothersnap + +Spell out device instead of using $DEV - sfdisk is not a joke. + + $ DEV=$(sudo rbd map img) + $ cat </dev/null 2>&1 + > unit: sectors + > /dev/rbd0p1 : start= 2, size= 2, Id=83 + > /dev/rbd0p2 : start= 5, size= 2043, Id= 5 + > /dev/rbd0p3 : start= 0, size= 0, Id= 0 + > /dev/rbd0p4 : start= 0, size= 0, Id= 0 + > /dev/rbd0p5 : start= 7, size= 2, Id=83 + > EOF + + +Unmap by device +=============== + +Unmap by device (img is already mapped): + + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap $DEV + $ rbd showmapped + +Unmap by device partition: + + $ DEV=$(sudo rbd map img) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap ${DEV}p1 + $ rbd showmapped + + $ DEV=$(sudo rbd map img) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap ${DEV}p5 + $ rbd showmapped + +Not a block device - random junk prefixed with /dev/ (so it's not +interpreted as a spec): + + $ sudo rbd unmap /dev/foobar + rbd: '/dev/foobar' is not a block device + rbd: unmap failed: (22) Invalid argument + [22] + +Not a block device - device that's just been unmapped: + + $ DEV=$(sudo rbd map img) + $ sudo rbd unmap $DEV + $ sudo rbd unmap $DEV + rbd: '/dev/rbd?' is not a block device (glob) + rbd: unmap failed: (22) Invalid argument + [22] + +A block device, but not rbd: + + $ sudo rbd unmap /dev/[sv]da + rbd: '/dev/?da' is not an rbd device (glob) + rbd: unmap failed: (22) Invalid argument + [22] + + +Unmap by spec +============= + +img: + + $ sudo rbd map img + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap img + $ rbd showmapped + + $ sudo rbd map img + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd --image img unmap + $ rbd showmapped + +img@snap: + + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap img@snap + $ rbd showmapped + + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd --snap snap unmap img + $ rbd showmapped + + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd --image img --snap snap unmap + $ rbd showmapped + +pool/img@snap, default pool: + + $ sudo rbd map rbd/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap rbd/img@snap + $ rbd showmapped + + $ sudo rbd map rbd/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd --pool rbd unmap img@snap + $ rbd showmapped + + $ sudo rbd map rbd/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd --pool rbd --snap snap unmap img + $ rbd showmapped + + $ sudo rbd map rbd/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd --pool rbd --image img --snap snap unmap + $ rbd showmapped + +pool/img@snap, custom pool: + + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@snap + $ rbd showmapped + + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + $ sudo rbd --pool custom unmap img@snap + $ rbd showmapped + + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + $ sudo rbd --pool custom --snap snap unmap img + $ rbd showmapped + + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + $ sudo rbd --pool custom --image img --snap snap unmap + $ rbd showmapped + +Not a mapped spec - random junk (which gets interpreted as a spec): + + $ sudo rbd unmap foobar + rbd: rbd/foobar@-: not a mapped image or snapshot + rbd: unmap failed: (22) Invalid argument + [22] + + $ sudo rbd --image foobar unmap + rbd: rbd/foobar@-: not a mapped image or snapshot + rbd: unmap failed: (22) Invalid argument + [22] + +Not a mapped spec - spec that's just been unmapped: + + $ sudo rbd map img + /dev/rbd? (glob) + $ sudo rbd unmap img + $ sudo rbd unmap img + rbd: rbd/img@-: not a mapped image or snapshot + rbd: unmap failed: (22) Invalid argument + [22] + + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ sudo rbd unmap img@snap + $ sudo rbd unmap img@snap + rbd: rbd/img@snap: not a mapped image or snapshot + rbd: unmap failed: (22) Invalid argument + [22] + +Need an arg: + + $ sudo rbd unmap + rbd: unmap requires either image name or device path + [22] + + +Two images +========== + +Unmap img first: + + $ sudo rbd map img + /dev/rbd? (glob) + $ sudo rbd map anotherimg + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + ? rbd anotherimg - /dev/rbd? (glob) + $ sudo rbd unmap img + $ rbd showmapped + id pool image snap device + ? rbd anotherimg - /dev/rbd? (glob) + $ sudo rbd unmap anotherimg + $ rbd showmapped + +Unmap anotherimg first: + + $ sudo rbd map img + /dev/rbd? (glob) + $ sudo rbd map anotherimg + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + ? rbd anotherimg - /dev/rbd? (glob) + $ sudo rbd unmap anotherimg + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap img + $ rbd showmapped + + +Image and its snap +================== + +Unmap the image first: + + $ sudo rbd map img + /dev/rbd? (glob) + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap img + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap img@snap + $ rbd showmapped + +Unmap the snap first: + + $ sudo rbd map img + /dev/rbd? (glob) + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap img@snap + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap img + $ rbd showmapped + + +Two snaps of the same image +=========================== + +Unmap snap first: + + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ sudo rbd map custom/img@anothersnap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + ? custom img anothersnap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@snap + $ rbd showmapped + id pool image snap device + ? custom img anothersnap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@anothersnap + $ rbd showmapped + +Unmap anothersnap first: + + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ sudo rbd map custom/img@anothersnap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + ? custom img anothersnap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@anothersnap + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@snap + $ rbd showmapped + + +Same img and snap in different pools +==================================== + +img: + + $ sudo rbd map img + /dev/rbd? (glob) + $ sudo rbd map custom/img + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + ? custom img - /dev/rbd? (glob) + $ sudo rbd unmap img + $ rbd showmapped + id pool image snap device + ? custom img - /dev/rbd? (glob) + $ sudo rbd unmap custom/img + $ rbd showmapped + +img@snap: + + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + ? custom img snap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@snap + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap img@snap + $ rbd showmapped + + +Same spec mapped twice +====================== + +img: + + $ sudo rbd map img + /dev/rbd? (glob) + $ sudo rbd map img + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap img + rbd: rbd/img@-: mapped more than once, unmapping /dev/rbd? only (glob) + $ rbd showmapped + id pool image snap device + ? rbd img - /dev/rbd? (glob) + $ sudo rbd unmap img + $ rbd showmapped + +img@snap: + + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ sudo rbd map img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap img@snap + rbd: rbd/img@snap: mapped more than once, unmapping /dev/rbd? only (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap img@snap + $ rbd showmapped + +pool/img@snap, default pool: + + $ sudo rbd map rbd/img@snap + /dev/rbd? (glob) + $ sudo rbd map rbd/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap rbd/img@snap + rbd: rbd/img@snap: mapped more than once, unmapping /dev/rbd? only (glob) + $ rbd showmapped + id pool image snap device + ? rbd img snap /dev/rbd? (glob) + $ sudo rbd unmap rbd/img@snap + $ rbd showmapped + +pool/img@snap, custom pool: + + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ sudo rbd map custom/img@snap + /dev/rbd? (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + ? custom img snap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@snap + rbd: custom/img@snap: mapped more than once, unmapping /dev/rbd? only (glob) + $ rbd showmapped + id pool image snap device + ? custom img snap /dev/rbd? (glob) + $ sudo rbd unmap custom/img@snap + $ rbd showmapped + + +Teardown +======== + + $ ceph osd pool delete custom custom --yes-i-really-really-mean-it >/dev/null 2>&1 + $ rbd snap purge anotherimg >/dev/null 2>&1 + $ rbd rm anotherimg >/dev/null 2>&1 + $ rbd snap purge img >/dev/null 2>&1 + $ rbd rm img >/dev/null 2>&1 +