According to the manual of io_uring_queue_init, it doesn't set errno but return the -errno on failure. So we should check the return value of io_uring_queue_init, to make sure if the io_uring is supported by kernel. We've left this problem in xfstests/ltp/fsstress.c long time. (Refer to PATCH 1/3) And besides kernel build without CONFIG_IO_URING, a system can disable the io_uring supporting manually, by set sysctl kernel.io_uring_disabled=2. The former cause io_uring_queue_init return ENOSYS, but the latter will return EPERM. So I let fsstress to deal with both situations. (Refer to PATCH 2/3) A question is if we should do "sysctl -w kernel.io_uring_disabled=0 &> /dev/null" at the beginning of each test case (e.g. do that in common/config ?), or leave this decision to the testers (in their test wrapper). Now I only do that in _require_io_uring(). If anyone has any opinions, feel free to reply. (Refer to PATCH 3/3) Thanks, Zorro