]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: krbd_stable_pages_required.sh: add device mapper test cases
authorIlya Dryomov <idryomov@gmail.com>
Wed, 27 Mar 2019 19:29:56 +0000 (20:29 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Thu, 28 Mar 2019 18:34:15 +0000 (19:34 +0100)
device mapper core wasn't propagating BDI_CAP_STABLE_WRITES.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
qa/workunits/rbd/krbd_stable_pages_required.sh

index 46340a7d200e062828f2848e37798beae6db5a85..28b545f6dd83236394f2fb4dc8263403f2710701 100755 (executable)
 
 set -ex
 
+function assert_dm() {
+    local name=$1
+    local val=$2
+
+    local devno
+    devno=$(sudo dmsetup info -c --noheadings -o Major,Minor $name)
+    grep -q $val /sys/dev/block/$devno/bdi/stable_pages_required
+}
+
+function dmsetup_reload() {
+    local name=$1
+
+    local table
+    table=$(</dev/stdin)
+
+    sudo dmsetup suspend $name
+    echo "$table" | sudo dmsetup reload $name
+    sudo dmsetup resume $name
+}
+
 IMAGE_NAME="stable-pages-required-test"
 
 rbd create --size 1 $IMAGE_NAME
 DEV=$(sudo rbd map $IMAGE_NAME)
+
+fallocate -l 1M loopfile
+LOOP_DEV=$(sudo losetup -f --show loopfile)
+
 [[ $(blockdev --getsize64 $DEV) -eq 1048576 ]]
 grep -q 1 /sys/block/${DEV#/dev/}/bdi/stable_pages_required
 
 rbd resize --size 2 $IMAGE_NAME
 [[ $(blockdev --getsize64 $DEV) -eq 2097152 ]]
 grep -q 1 /sys/block/${DEV#/dev/}/bdi/stable_pages_required
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 0
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $DEV 0
+EOF
+assert_dm tbl 1
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $LOOP_DEV 0
+1024 2048 error
+EOF
+assert_dm tbl 0
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $DEV 0
+1024 2048 error
+EOF
+assert_dm tbl 1
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $LOOP_DEV 0
+1024 2048 linear $DEV 0
+EOF
+assert_dm tbl 1
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $DEV 0
+1024 2048 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 1
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 0
+cat <<EOF | dmsetup_reload tbl
+0 1024 linear $LOOP_DEV 0
+1024 2048 linear $DEV 0
+EOF
+assert_dm tbl 1
+cat <<EOF | dmsetup_reload tbl
+0 1024 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 0
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $DEV 0
+EOF
+assert_dm tbl 1
+cat <<EOF | dmsetup_reload tbl
+0 1024 linear $DEV 0
+1024 2048 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 1
+cat <<EOF | dmsetup_reload tbl
+0 1024 linear $DEV 0
+EOF
+assert_dm tbl 1
+sudo dmsetup remove tbl
+
+cat <<EOF | sudo dmsetup create tbl
+0 1024 linear $DEV 0
+EOF
+assert_dm tbl 1
+cat <<EOF | dmsetup_reload tbl
+0 1024 linear $DEV 0
+1024 2048 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 1
+cat <<EOF | dmsetup_reload tbl
+0 1024 error
+1024 2048 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 0
+cat <<EOF | dmsetup_reload tbl
+0 1024 linear $DEV 0
+1024 2048 linear $LOOP_DEV 0
+EOF
+assert_dm tbl 1
+cat <<EOF | dmsetup_reload tbl
+0 1024 linear $DEV 0
+EOF
+assert_dm tbl 1
+sudo dmsetup remove tbl
+
+sudo losetup -d $LOOP_DEV
+rm loopfile
+
 sudo rbd unmap $DEV
+rbd rm $IMAGE_NAME
 
 echo OK