On Wed, Mar 19, 2025 at 07:51:02AM -0600, Jens Axboe wrote: > On 3/19/25 7:47 AM, Jens Axboe wrote: > > On 3/19/25 3:26 AM, Ming Lei wrote: > >> Hi Jens, > >> > >> The 1st patch removes the liburing ublk test source, and the 2nd patch > >> adds the test back with the kernel ublk selftest source. > >> > >> The original test case is covered, and io_uring kernel fixed buffer and > >> ublk zero copy is covered too. > >> > >> Now the ublk source code is one generic ublk server implementation, and > >> test code is shell script, this way is flexible & easy to add new tests. > > > > Fails locally here, I think you'll need a few ifdefs for having a not > > completely uptodate header: > > > > ublk//kublk.c: In function ?cmd_dev_get_features?: > > ublk//kublk.c:997:30: error: ?UBLK_F_USER_RECOVERY_FAIL_IO? undeclared (first use in this function); did you mean ?UBLK_F_USER_RECOVERY_REISSUE?? > > 997 | [const_ilog2(UBLK_F_USER_RECOVERY_FAIL_IO)] = "RECOVERY_FAIL_IO", > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > With > > > > #ifndef UBLK_F_USER_RECOVERY_FAIL_IO > > #define UBLK_F_USER_RECOVERY_FAIL_IO (1ULL << 9) > > #endif > > > > added it works as expected for me, but might not be a bad idea to > > include a few more? Looks like there's a good spot for it in kublk.h > > where there's already something for UBLK_U_IO_REGISTER_IO_BUF. > > > > Outside of that, when running this in my usual vm testing, I see: > > > > Running test ublk/test_stress_02.sh modprobe: FATAL: Module ublk_drv not found in directory /lib/modules/6.14.0-rc7-00360-ge07e8363c5e8 > > > > as I have ublk built-in. The test still runs, but would be nice to > > get rid of that complaint. > > Oh, and looks like it should also skip the test if an argument is > passed in. My usual setup has 4-5 devices/paths defined for > testing, and tests that don't take a file argument should just > skip. > > Forgot to mention, that unifying the selftests and liburing test > is a really good idea! Will make it easier to sync them up and > get coverage both ways. Yeah, the kernel selftest side can be thought as upstream, :-) I just sent three ublk kernel selftest patches, which covers all the above problems. With the three changes, only three lines of code change on test_common.sh is needed for liburing test: ``` #liburing UBLK_TEST_SHOW_RESULT=0 UBLK_SKIP_CODE=77 [ $# -ne 0 ] && exit "$UBLK_SKIP_CODE" ``` Thanks, Ming