]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
qa: krbd_fallocate.sh: zero can be munged to truncate
authorIlya Dryomov <idryomov@gmail.com>
Mon, 25 Mar 2019 19:59:29 +0000 (20:59 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 25 Mar 2019 21:06:14 +0000 (22:06 +0100)
The test case is issuing discards that span two objects: the tail of
the first object is truncated, the head of the second object is zeroed.
These discards aren't serial, so there is a race:

  discard i ~ i + 1: truncate i, zero i + 1
  discard i + 1 ~ i + 2: truncate i + 1, zero i + 2

can be executed as

  truncate i + 1, zero i + 2, truncate i, zero i + 1

For object i + 1, the sequence ends up being truncate tail, then zero
head.  This zero op is munged to truncate on the OSD, resulting in size
0 instead of OBJECT_SIZE / 2.

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

index 3982979919dfc64632e03eb3b173982bbd8c9e36..91c9a10f359b40c7a14d6806b568634fa5552510 100755 (executable)
@@ -77,7 +77,7 @@ $(printf %x $IMAGE_SIZE)
 EOF
     [[ $(rados -p rbd ls | grep -c rbd_data.$IMAGE_ID) -eq $num_objects_expected ]]
     for ((i = 0; i < $num_objects_expected; i++)); do
-        rados -p rbd stat rbd_data.$IMAGE_ID.$(printf %016x $i) | grep "size $((OBJECT_SIZE / 2))"
+        rados -p rbd stat rbd_data.$IMAGE_ID.$(printf %016x $i) | egrep "(size $((OBJECT_SIZE / 2)))|(size 0)"
     done
 }