Hi all, I recently added io_uring to my main testing configuration, and a couple of things stood out to me: First, generic/616 and generic/617 are long soak test cases specifically for io_uring. Therefore, we ought to allow control via SOAK_DURATION. The second problem is nastier. If liburing is present, fsstress will /always/ try to use it, unlike fsx, which requires a -U argument. I think both tools should require explicit opt-in to facilitate A/B testing between the old IO paths and this new one, so I added a similar -U switch to fsstress and a new testcase for it. While I was doing that, I noticed quite a few regressions in fstests, which fell into two classes. The first class is umount failing with EBUSY. Apparently this is due to the kernel uring code hanging on to file references even after the userspace program exits. Tests that run fsstress and immediately unmount now fail due to the EBUSY. As a result, nearly all of the online fsck functional test cases and the metadata update stress tests now exhibit sporadic failures. Requiring explicit opt-in to uring makes that go away. The second problem I noticed is that fsstress now lodges complaints about sporadic heap corruption. I /think/ this is due to some kind of memory mishandling bug when uring is active but IO requests fail, but I haven't had the time to go figure out where that happens. If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. This has been running on the djcloud for months with no problems. Enjoy! Comments and questions are, as always, welcome. --D fstests git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=uring-tweaks --- ltp/fsstress.c | 17 ++++++++++++++--- tests/generic/1220 | 43 +++++++++++++++++++++++++++++++++++++++++++ tests/generic/1220.out | 2 ++ tests/generic/616 | 1 + tests/generic/617 | 1 + 5 files changed, 61 insertions(+), 3 deletions(-) create mode 100755 tests/generic/1220 create mode 100644 tests/generic/1220.out