Use scsi_debug's dif/dix to cover block layer's integrity function test, then it can serve as block integrity regeression test. Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> --- tests/block/028 | 42 ++++++++++++++++++++++++++++++++++++++++++ tests/block/028.out | 9 +++++++++ 2 files changed, 51 insertions(+) create mode 100755 tests/block/028 create mode 100644 tests/block/028.out diff --git a/tests/block/028 b/tests/block/028 new file mode 100755 index 000000000000..9b76b93d9eb6 --- /dev/null +++ b/tests/block/028 @@ -0,0 +1,42 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0+ +# Copyright (C) 2019 Ming Lei <ming.lei@xxxxxxxxxx> +# +# Test basic DIF/DIX test. Regression test for commit 7809167da5c86fd6 +# ("block: don't lose track of REQ_INTEGRITY flag") + +. tests/block/rc +. common/scsi_debug + +DESCRIPTION="do scsi_debug dif/dix function test" + +requires() { + _have_scsi_debug +} + +test_pi() { + if ! _init_scsi_debug dev_size_mb=128 dix=$1 dif=$2 delay=0; then + return 1 + fi + + local dev="/dev/${SCSI_DEBUG_DEVICES[0]}" + local nr_sects=`blockdev --getsz $dev` + + dd if=/dev/urandom of=$dev bs=512 count=$nr_sects status=none + dd if=$dev of=/dev/null bs=512 status=none + + _exit_scsi_debug +} + +test() { + echo "Running ${TEST_NAME}" + + for ((dix = 0; dix <= 1; dix++)); do + for ((dif = 0; dif <= 3; dif++)); do + test_pi $dix $dif + echo "Test(dix:$dix dif:$dif) complete" + done + done + + rm -f "$FULL" +} diff --git a/tests/block/028.out b/tests/block/028.out new file mode 100644 index 000000000000..d2512334b9f5 --- /dev/null +++ b/tests/block/028.out @@ -0,0 +1,9 @@ +Running block/028 +Test(dix:0 dif:0) complete +Test(dix:0 dif:1) complete +Test(dix:0 dif:2) complete +Test(dix:0 dif:3) complete +Test(dix:1 dif:0) complete +Test(dix:1 dif:1) complete +Test(dix:1 dif:2) complete +Test(dix:1 dif:3) complete -- 2.9.5