From: Ming Lei <ming.lei@redhat.com>
To: Caleb Sander Mateos <csander@purestorage.com>
Cc: Shuah Khan <shuah@kernel.org>,
linux-block@vger.kernel.org, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 8/8] selftests: ublk: add user copy test cases
Date: Fri, 12 Dec 2025 06:35:18 +0800 [thread overview]
Message-ID: <aTtHJm_qcQIYkXcy@fedora> (raw)
In-Reply-To: <CADUfDZr3WZHwZSMidQKH5p8yMDM6yWwbdyEJcvS6YBHSfFY_RA@mail.gmail.com>
On Thu, Dec 11, 2025 at 10:46:41AM -0800, Caleb Sander Mateos wrote:
> On Thu, Dec 11, 2025 at 1:17 AM Ming Lei <ming.lei@redhat.com> wrote:
> >
> > On Wed, Dec 10, 2025 at 10:16:03PM -0700, Caleb Sander Mateos wrote:
> > > The ublk selftests cover every data copy mode except user copy. Add
> > > tests for user copy based on the existing test suite:
> > > - generic_14 ("basic recover function verification (user copy)") based
> > > on generic_04 and generic_05
> > > - null_03 ("basic IO test with user copy") based on null_01 and null_02
> > > - loop_06 ("write and verify over user copy") based on loop_01 and
> > > loop_03
> > > - loop_07 ("mkfs & mount & umount with user copy") based on loop_02 and
> > > loop_04
> > > - stripe_05 ("write and verify test on user copy") based on stripe_03
> > > - stripe_06 ("mkfs & mount & umount on user copy") based on stripe_02
> > > and stripe_04
> > > - Added test cases to stress_05 ("run IO and remove device with recovery
> > > enabled") for user copy
> > > - stress_06 ("run IO and remove device (user copy)") based on stress_01
> > > and stress_03
> > > - stress_07 ("run IO and kill ublk server (user copy)") based on
> > > stress_02 and stress_04
> > >
> > > Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
> > > ---
> > > tools/testing/selftests/ublk/Makefile | 8 ++++
> > > .../testing/selftests/ublk/test_generic_14.sh | 40 +++++++++++++++++++
> > > tools/testing/selftests/ublk/test_loop_06.sh | 25 ++++++++++++
> > > tools/testing/selftests/ublk/test_loop_07.sh | 21 ++++++++++
> > > tools/testing/selftests/ublk/test_null_03.sh | 24 +++++++++++
> > > .../testing/selftests/ublk/test_stress_05.sh | 7 ++++
> > > .../testing/selftests/ublk/test_stress_06.sh | 39 ++++++++++++++++++
> > > .../testing/selftests/ublk/test_stress_07.sh | 39 ++++++++++++++++++
> > > .../testing/selftests/ublk/test_stripe_05.sh | 26 ++++++++++++
> > > .../testing/selftests/ublk/test_stripe_06.sh | 21 ++++++++++
> > > 10 files changed, 250 insertions(+)
> > > create mode 100755 tools/testing/selftests/ublk/test_generic_14.sh
> > > create mode 100755 tools/testing/selftests/ublk/test_loop_06.sh
> > > create mode 100755 tools/testing/selftests/ublk/test_loop_07.sh
> > > create mode 100755 tools/testing/selftests/ublk/test_null_03.sh
> > > create mode 100755 tools/testing/selftests/ublk/test_stress_06.sh
> > > create mode 100755 tools/testing/selftests/ublk/test_stress_07.sh
> > > create mode 100755 tools/testing/selftests/ublk/test_stripe_05.sh
> > > create mode 100755 tools/testing/selftests/ublk/test_stripe_06.sh
> > >
> > > diff --git a/tools/testing/selftests/ublk/Makefile b/tools/testing/selftests/ublk/Makefile
> > > index 770269efe42a..837977b62417 100644
> > > --- a/tools/testing/selftests/ublk/Makefile
> > > +++ b/tools/testing/selftests/ublk/Makefile
> > > @@ -19,28 +19,36 @@ TEST_PROGS += test_generic_08.sh
> > > TEST_PROGS += test_generic_09.sh
> > > TEST_PROGS += test_generic_10.sh
> > > TEST_PROGS += test_generic_11.sh
> > > TEST_PROGS += test_generic_12.sh
> > > TEST_PROGS += test_generic_13.sh
> > > +TEST_PROGS += test_generic_14.sh
> > >
> > > TEST_PROGS += test_null_01.sh
> > > TEST_PROGS += test_null_02.sh
> > > +TEST_PROGS += test_null_03.sh
> > > TEST_PROGS += test_loop_01.sh
> > > 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_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
> > > +TEST_PROGS += test_stripe_06.sh
> > >
> > > TEST_PROGS += test_stress_01.sh
> > > TEST_PROGS += test_stress_02.sh
> > > TEST_PROGS += test_stress_03.sh
> > > TEST_PROGS += test_stress_04.sh
> > > TEST_PROGS += test_stress_05.sh
> > > +TEST_PROGS += test_stress_06.sh
> > > +TEST_PROGS += test_stress_07.sh
> > >
> > > TEST_GEN_PROGS_EXTENDED = kublk
> > >
> > > include ../lib.mk
> > >
> > > diff --git a/tools/testing/selftests/ublk/test_generic_14.sh b/tools/testing/selftests/ublk/test_generic_14.sh
> > > new file mode 100755
> > > index 000000000000..cd9b44b97c24
> > > --- /dev/null
> > > +++ b/tools/testing/selftests/ublk/test_generic_14.sh
> > > @@ -0,0 +1,40 @@
> > > +#!/bin/bash
> > > +# SPDX-License-Identifier: GPL-2.0
> > > +
> > > +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh
> > > +
> > > +TID="generic_14"
> > > +ERR_CODE=0
> > > +
> > > +ublk_run_recover_test()
> > > +{
> > > + run_io_and_recover 256M "kill_daemon" "$@"
> > > + ERR_CODE=$?
> > > + if [ ${ERR_CODE} -ne 0 ]; then
> > > + echo "$TID failure: $*"
> > > + _show_result $TID $ERR_CODE
> > > + fi
> > > +}
> > > +
> > > +if ! _have_program fio; then
> > > + exit "$UBLK_SKIP_CODE"
> > > +fi
> > > +
> > > +_prep_test "recover" "basic recover function verification (user copy)"
> > > +
> > > +_create_backfile 0 256M
> > > +_create_backfile 1 128M
> > > +_create_backfile 2 128M
> > > +
> > > +ublk_run_recover_test -t null -q 2 -r 1 -u &
> > > +ublk_run_recover_test -t loop -q 2 -r 1 -u "${UBLK_BACKFILES[0]}" &
> > > +ublk_run_recover_test -t stripe -q 2 -r 1 -u "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" &
> > > +wait
> > > +
> > > +ublk_run_recover_test -t null -q 2 -r 1 -u -i 1 &
> > > +ublk_run_recover_test -t loop -q 2 -r 1 -u -i 1 "${UBLK_BACKFILES[0]}" &
> > > +ublk_run_recover_test -t stripe -q 2 -r 1 -u -i 1 "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" &
> > > +wait
> > > +
> > > +_cleanup_test "recover"
> > > +_show_result $TID $ERR_CODE
> > > diff --git a/tools/testing/selftests/ublk/test_loop_06.sh b/tools/testing/selftests/ublk/test_loop_06.sh
> > > new file mode 100755
> > > index 000000000000..1d1a8a725502
> > > --- /dev/null
> > > +++ b/tools/testing/selftests/ublk/test_loop_06.sh
> > > @@ -0,0 +1,25 @@
> > > +#!/bin/bash
> > > +# SPDX-License-Identifier: GPL-2.0
> > > +
> > > +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh
> > > +
> > > +TID="loop_06"
> > > +ERR_CODE=0
> > > +
> > > +if ! _have_program fio; then
> > > + exit "$UBLK_SKIP_CODE"
> > > +fi
> > > +
> > > +_prep_test "loop" "write and verify over user copy"
> > > +
> > > +_create_backfile 0 256M
> > > +dev_id=$(_add_ublk_dev -t loop -u "${UBLK_BACKFILES[0]}")
> > > +_check_add_dev $TID $?
> > > +
> > > +# run fio over the ublk disk
> > > +_run_fio_verify_io --filename=/dev/ublkb"${dev_id}" --size=256M
> > > +ERR_CODE=$?
> > > +
> > > +_cleanup_test "loop"
> > > +
> > > +_show_result $TID $ERR_CODE
> > > diff --git a/tools/testing/selftests/ublk/test_loop_07.sh b/tools/testing/selftests/ublk/test_loop_07.sh
> > > new file mode 100755
> > > index 000000000000..493f3fb611a5
> > > --- /dev/null
> > > +++ b/tools/testing/selftests/ublk/test_loop_07.sh
> > > @@ -0,0 +1,21 @@
> > > +#!/bin/bash
> > > +# SPDX-License-Identifier: GPL-2.0
> > > +
> > > +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh
> > > +
> > > +TID="loop_07"
> > > +ERR_CODE=0
> > > +
> > > +_prep_test "loop" "mkfs & mount & umount with user copy"
> > > +
> > > +_create_backfile 0 256M
> > > +
> > > +dev_id=$(_add_ublk_dev -t loop -u "${UBLK_BACKFILES[0]}")
> > > +_check_add_dev $TID $?
> > > +
> > > +_mkfs_mount_test /dev/ublkb"${dev_id}"
> > > +ERR_CODE=$?
> > > +
> > > +_cleanup_test "loop"
> > > +
> > > +_show_result $TID $ERR_CODE
> > > diff --git a/tools/testing/selftests/ublk/test_null_03.sh b/tools/testing/selftests/ublk/test_null_03.sh
> > > new file mode 100755
> > > index 000000000000..0051067b4686
> > > --- /dev/null
> > > +++ b/tools/testing/selftests/ublk/test_null_03.sh
> > > @@ -0,0 +1,24 @@
> > > +#!/bin/bash
> > > +# SPDX-License-Identifier: GPL-2.0
> > > +
> > > +. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh
> > > +
> > > +TID="null_03"
> > > +ERR_CODE=0
> > > +
> > > +if ! _have_program fio; then
> > > + exit "$UBLK_SKIP_CODE"
> > > +fi
> > > +
> > > +_prep_test "null" "basic IO test with user copy"
> > > +
> > > +dev_id=$(_add_ublk_dev -t null -u)
> > > +_check_add_dev $TID $?
> > > +
> > > +# run fio over the two disks
> > > +fio --name=job1 --filename=/dev/ublkb"${dev_id}" --ioengine=libaio --rw=readwrite --iodepth=32 --size=256M > /dev/null 2>&1
> > > +ERR_CODE=$?
> > > +
> > > +_cleanup_test "null"
> > > +
> > > +_show_result $TID $ERR_CODE
> > > diff --git a/tools/testing/selftests/ublk/test_stress_05.sh b/tools/testing/selftests/ublk/test_stress_05.sh
> > > index 09b94c36f2ba..cb8203957d1d 100755
> > > --- a/tools/testing/selftests/ublk/test_stress_05.sh
> > > +++ b/tools/testing/selftests/ublk/test_stress_05.sh
> > > @@ -78,7 +78,14 @@ if _have_feature "PER_IO_DAEMON"; then
> > > ublk_io_and_remove 256M -t loop -q 4 --nthreads 8 --per_io_tasks -r 1 -i "$reissue" "${UBLK_BACKFILES[0]}" &
> > > ublk_io_and_remove 8G -t null -q 4 --nthreads 8 --per_io_tasks -r 1 -i "$reissue" &
> > > fi
> > > wait
> > >
> > > +for reissue in $(seq 0 1); do
> > > + ublk_io_and_remove 8G -t null -q 4 -u -r 1 -i "$reissue" &
> > > + ublk_io_and_remove 256M -t loop -q 4 -u -r 1 -i "$reissue" "${UBLK_BACKFILES[1]}" &
> > > + ublk_io_and_remove 8G -t null -q 4 -u -r 1 -i "$reissue" &
> > > + wait
> > > +done
> >
> > I'd suggest to not add new test coverage in old stress tests until default
> > timeout is overrided, now it is close to default 45 seconds timeout.
>
> Okay, I can just drop the changes in test_stress_05.sh if that sounds
> good to you?
Yeah, it is fine to drop it in test_stress_05.sh.
Thanks,
Ming
prev parent reply other threads:[~2025-12-11 22:35 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-11 5:15 [PATCH 0/8] selftests: ublk: add user copy test cases Caleb Sander Mateos
2025-12-11 5:15 ` [PATCH 1/8] selftests: ublk: correct last_rw map type in seq_io.bt Caleb Sander Mateos
2025-12-11 8:58 ` Ming Lei
2025-12-11 5:15 ` [PATCH 2/8] selftests: ublk: remove unused ios map " Caleb Sander Mateos
2025-12-11 8:58 ` Ming Lei
2025-12-11 5:15 ` [PATCH 3/8] selftests: ublk: fix fio arguments in run_io_and_recover() Caleb Sander Mateos
2025-12-11 9:03 ` Ming Lei
2025-12-11 5:15 ` [PATCH 4/8] selftests: ublk: use auto_zc for PER_IO_DAEMON tests in stress_04 Caleb Sander Mateos
2025-12-11 9:06 ` Ming Lei
2025-12-11 18:33 ` Caleb Sander Mateos
2025-12-11 22:30 ` Ming Lei
2025-12-12 2:57 ` Caleb Sander Mateos
2025-12-12 3:06 ` Ming Lei
2025-12-11 5:16 ` [PATCH 5/8] selftests: ublk: don't share backing files between ublk servers Caleb Sander Mateos
2025-12-11 9:07 ` Ming Lei
2025-12-11 5:16 ` [PATCH 6/8] selftests: ublk: forbid multiple data copy modes Caleb Sander Mateos
2025-12-11 9:09 ` Ming Lei
2025-12-11 18:45 ` Caleb Sander Mateos
2025-12-11 23:04 ` Ming Lei
2025-12-12 2:06 ` Caleb Sander Mateos
2025-12-12 2:38 ` Ming Lei
2025-12-12 4:59 ` Caleb Sander Mateos
2025-12-12 5:13 ` Ming Lei
2025-12-12 5:21 ` Caleb Sander Mateos
2025-12-12 11:30 ` Ming Lei
2025-12-12 17:02 ` Caleb Sander Mateos
2025-12-11 5:16 ` [PATCH 7/8] selftests: ublk: add support for user copy to kublk Caleb Sander Mateos
2025-12-11 5:16 ` [PATCH 8/8] selftests: ublk: add user copy test cases Caleb Sander Mateos
2025-12-11 9:17 ` Ming Lei
2025-12-11 18:46 ` Caleb Sander Mateos
2025-12-11 22:35 ` Ming Lei [this message]
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=aTtHJm_qcQIYkXcy@fedora \
--to=ming.lei@redhat.com \
--cc=csander@purestorage.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=shuah@kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).