]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
fsstress: check io_uring_queue_init errno properly
authorZorro Lang <zlang@kernel.org>
Mon, 11 Mar 2024 16:20:27 +0000 (00:20 +0800)
committerZorro Lang <zlang@kernel.org>
Tue, 12 Mar 2024 03:39:52 +0000 (11:39 +0800)
As the manual of io_uring_queue_init says "io_uring_queue_init(3)
returns 0 on success and -errno on failure". We should check if the
return value is -ENOSYS, not the errno.

Fixes: d15b1721f284 ("ltp/fsstress: don't fail on io_uring ENOSYS")
Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
ltp/fsstress.c

index 63c757672e6fac29c58096695cc121995f19f20b..4fc50efb9bf18b113224858533b81c9968f372ed 100644 (file)
@@ -763,13 +763,17 @@ int main(int argc, char **argv)
 #ifdef URING
                        have_io_uring = true;
                        /* If ENOSYS, just ignore uring, other errors are fatal. */
-                       if (io_uring_queue_init(URING_ENTRIES, &ring, 0)) {
-                               if (errno == ENOSYS) {
-                                       have_io_uring = false;
-                               } else {
-                                       fprintf(stderr, "io_uring_queue_init failed\n");
-                                       exit(1);
-                               }
+                       c = io_uring_queue_init(URING_ENTRIES, &ring, 0);
+                       switch(c){
+                       case 0:
+                               have_io_uring = true;
+                               break;
+                       case -ENOSYS:
+                               have_io_uring = false;
+                               break;
+                       default:
+                               fprintf(stderr, "io_uring_queue_init failed\n");
+                               exit(1);
                        }
 #endif
                        for (i = 0; keep_looping(i, loops); i++)