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: v15.0.0~87^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=673673f53d0c258e6096a05d9de979b2c20adddf;p=ceph-ci.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 --- diff --git a/qa/workunits/rbd/krbd_fallocate.sh b/qa/workunits/rbd/krbd_fallocate.sh index 3982979919d..91c9a10f359 100755 --- a/qa/workunits/rbd/krbd_fallocate.sh +++ b/qa/workunits/rbd/krbd_fallocate.sh @@ -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 }