public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Caleb Sander Mateos <csander@purestorage.com>
Cc: Jens Axboe <axboe@kernel.dk>, Shuah Khan <shuah@kernel.org>,
	linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Stanley Zhang <stazhang@purestorage.com>,
	Uday Shankar <ushankar@purestorage.com>,
	"Martin K . Petersen" <martin.petersen@oracle.com>
Subject: Re: [PATCH v3 19/19] selftests: ublk: add end-to-end integrity test
Date: Wed, 7 Jan 2026 08:21:11 +0800	[thread overview]
Message-ID: <aV2m9yoxoTSxwCFN@fedora> (raw)
In-Reply-To: <CADUfDZofEg0Q=veyihy=M-XCxoga6fkueJmLdJ4CVd6KU=GdBg@mail.gmail.com>

On Tue, Jan 06, 2026 at 09:15:44AM -0800, Caleb Sander Mateos wrote:
> On Tue, Jan 6, 2026 at 6:10 AM Ming Lei <ming.lei@redhat.com> wrote:
> >
> > 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
> 
> Hmm, what are the initial contents of /dev/sdc? It looks like they are
> nonzero, as the reftag being read for logical block 0 is 128 rather
> than the expected 0 (the reftag would be read from bytes 60 to 63 of
> /dev/sdc). In general, though, the partition scan may be expected to
> fail the bio-integrity-auto checks if the integrity data hasn't been
> initialized. I don't think this is an issue, since the partition scan
> is looking for a partition table but there's no guarantee that one
> exists.
> You can disable the kernel integrity checks if you want by writing 0
> to /sys/block/ublkb1/integrity/read_verify. However, I'm not sure it's
> possible to do this soon enough to take effect before the partition
> scan.
> We could also use the UBLK_F_NO_AUTO_PART_SCAN feature, once it lands,
> to suppress the partition scan and these error messages.

UBLK_F_NO_AUTO_PART_SCAN can't avoid the following read failure.

I guess the issue can be avoided by adding small superblock to the meta
data file, then format it in the 1st time when superblock doesn't exist.

This way will make it usable from test/verify purpose.


Thanks,
Ming


  reply	other threads:[~2026-01-07  0:21 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-06  0:57 [PATCH v3 00/19] ublk: add support for integrity data Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 01/19] blk-integrity: take const pointer in blk_integrity_rq() Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 02/19] ublk: move ublk flag check functions earlier Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 03/19] ublk: support UBLK_PARAM_TYPE_INTEGRITY in device creation Caleb Sander Mateos
2026-01-06 13:09   ` Ming Lei
2026-01-06 16:32     ` Caleb Sander Mateos
2026-01-07  0:15       ` Ming Lei
2026-01-07  2:20         ` Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 04/19] ublk: set UBLK_IO_F_INTEGRITY in ublksrv_io_desc Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 05/19] ublk: add ublk_copy_user_bvec() helper Caleb Sander Mateos
2026-01-06 13:14   ` Ming Lei
2026-01-06  0:57 ` [PATCH v3 06/19] ublk: split out ublk_user_copy() helper Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 07/19] ublk: inline ublk_check_and_get_req() into ublk_user_copy() Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 08/19] ublk: move offset check out of __ublk_check_and_get_req() Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 09/19] ublk: implement integrity user copy Caleb Sander Mateos
2026-01-06 13:34   ` Ming Lei
2026-01-06 18:20     ` Caleb Sander Mateos
2026-01-07  0:28       ` Ming Lei
2026-01-08  1:50         ` Caleb Sander Mateos
2026-01-08  2:11           ` Ming Lei
2026-01-06 13:46   ` Ming Lei
2026-01-06  0:57 ` [PATCH v3 10/19] ublk: support UBLK_F_INTEGRITY Caleb Sander Mateos
2026-01-06 13:36   ` Ming Lei
2026-01-06  0:57 ` [PATCH v3 11/19] ublk: optimize ublk_user_copy() on daemon task Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 12/19] selftests: ublk: display UBLK_F_INTEGRITY support Caleb Sander Mateos
2026-01-06 13:38   ` Ming Lei
2026-01-06  0:57 ` [PATCH v3 13/19] selftests: ublk: add utility to get block device metadata size Caleb Sander Mateos
2026-01-06 13:50   ` Ming Lei
2026-01-06 17:18     ` Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 14/19] selftests: ublk: add kublk support for integrity params Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 15/19] selftests: ublk: implement integrity user copy in kublk Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 16/19] selftests: ublk: support non-O_DIRECT backing files Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 17/19] selftests: ublk: add integrity data support to loop target Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 18/19] selftests: ublk: add integrity params test Caleb Sander Mateos
2026-01-06  0:57 ` [PATCH v3 19/19] selftests: ublk: add end-to-end integrity test Caleb Sander Mateos
2026-01-06 14:10   ` Ming Lei
2026-01-06 17:15     ` Caleb Sander Mateos
2026-01-07  0:21       ` Ming Lei [this message]
2026-01-07  1:32         ` Caleb Sander Mateos
2026-01-07  1:49           ` Ming Lei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aV2m9yoxoTSxwCFN@fedora \
    --to=ming.lei@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=csander@purestorage.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=shuah@kernel.org \
    --cc=stazhang@purestorage.com \
    --cc=ushankar@purestorage.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox