From: Ilya Dryomov Date: Mon, 25 Mar 2019 19:59:29 +0000 (+0100) Subject: qa: krbd_fallocate.sh: zero can be munged to truncate X-Git-Tag: v12.2.13~179^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1073d4d5dda85a2f69aa618b77028663a8593c0f;p=ceph.git qa: krbd_fallocate.sh: zero can be munged to truncate 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 (cherry picked from commit 673673f53d0c258e6096a05d9de979b2c20adddf) --- diff --git a/qa/workunits/rbd/krbd_fallocate.sh b/qa/workunits/rbd/krbd_fallocate.sh index 05fc8a98c640..2081d33b6e71 100755 --- a/qa/workunits/rbd/krbd_fallocate.sh +++ b/qa/workunits/rbd/krbd_fallocate.sh @@ -71,7 +71,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 }