On Mon, Jan 05, 2026 at 05:57:51PM -0700, Caleb Sander Mateos wrote:
Add test case loop_08 to verify the ublk integrity data flow. It uses the kublk loop target to create a ublk device with integrity on top of backing data and integrity files. It then writes to the whole device with fio configured to generate integrity data. Then it reads back the whole device with fio configured to verify the integrity data. It also verifies that injected guard, reftag, and apptag corruptions are correctly detected.
Signed-off-by: Caleb Sander Mateos csander@purestorage.com
tools/testing/selftests/ublk/Makefile | 1 + tools/testing/selftests/ublk/test_loop_08.sh | 111 +++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100755 tools/testing/selftests/ublk/test_loop_08.sh
diff --git a/tools/testing/selftests/ublk/Makefile b/tools/testing/selftests/ublk/Makefile index bfd68ae64142..ab745443fd58 100644 --- a/tools/testing/selftests/ublk/Makefile +++ b/tools/testing/selftests/ublk/Makefile @@ -33,10 +33,11 @@ TEST_PROGS += test_loop_02.sh TEST_PROGS += test_loop_03.sh TEST_PROGS += test_loop_04.sh TEST_PROGS += test_loop_05.sh TEST_PROGS += test_loop_06.sh TEST_PROGS += test_loop_07.sh +TEST_PROGS += test_loop_08.sh TEST_PROGS += test_stripe_01.sh TEST_PROGS += test_stripe_02.sh TEST_PROGS += test_stripe_03.sh TEST_PROGS += test_stripe_04.sh TEST_PROGS += test_stripe_05.sh diff --git a/tools/testing/selftests/ublk/test_loop_08.sh b/tools/testing/selftests/ublk/test_loop_08.sh new file mode 100755 index 000000000000..ca289cfb2ad4 --- /dev/null +++ b/tools/testing/selftests/ublk/test_loop_08.sh @@ -0,0 +1,111 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0
+. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh
+if ! _have_program fio; then
- exit $UBLK_SKIP_CODE
+fi
+fio_version=$(fio --version) +if [[ "$fio_version" =~ fio-[0-9]+.[0-9]+$ ]]; then
- echo "Requires development fio version with https://github.com/axboe/fio/pull/1992"
- exit $UBLK_SKIP_CODE
+fi
+TID=loop_08
+_prep_test "loop" "end-to-end integrity"
+_create_backfile 0 256M +_create_backfile 1 32M # 256M * (64 integrity bytes / 512 data bytes) +integrity_params="--integrity_capable --integrity_reftag
--metadata_size 64 --pi_offset 56 --csum_type t10dif"+dev_id=$(_add_ublk_dev -t loop -u $integrity_params "${UBLK_BACKFILES[@]}")
I tried above setting:
./kublk add -t loop --integrity_capable --integrity_reftag --metadata_size 64 --pi_offset 56 --csum_type t10dif --foreground -u /dev/sdb /dev/sdc dev id 1: nr_hw_queues 2 queue_depth 128 block size 512 dev_capacity 8388608 max rq size 1048576 daemon pid 38295 flags 0x160c2 state LIVE queue 0: affinity(0 ) queue 1: affinity(8 )
However, IO error is always triggered:
[ 9202.316382] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.317171] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.319478] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.319983] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.326332] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.326974] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.327570] ldm_validate_partition_table(): Disk read failed. [ 9202.336539] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.337228] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.339247] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.339779] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.344306] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.344948] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.347067] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.347558] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.348100] Dev ublkb1: unable to read RDB block 0 [ 9202.350159] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.350642] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.354977] ublkb1: ref tag error at location 0 (rcvd 128) [ 9202.355539] Buffer I/O error on dev ublkb1, logical block 0, async page read [ 9202.356280] ublkb1: unable to read partition table
Thanks, Ming