diff options
author | Jens Axboe <axboe@kernel.dk> | 2024-05-01 14:03:41 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2024-05-01 14:03:41 -0600 |
commit | c0b16622fa645e148badecab00c4a9340a4c90e2 (patch) | |
tree | 8723c759a0eef17d0ebba544ae188ecc0f9c485b | |
parent | 149c7e1d715dbcb1b1c8f555e7428d64d33f215a (diff) | |
download | liburing-c0b16622fa645e148badecab00c4a9340a4c90e2.tar.gz |
test/buf-ring: skip on older kernels that don't support mmap'ed rings
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | test/buf-ring.c | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/test/buf-ring.c b/test/buf-ring.c index d6629a5f..f81aa622 100644 --- a/test/buf-ring.c +++ b/test/buf-ring.c @@ -303,16 +303,16 @@ static int test_running(int bgid, int entries, int loops, int use_mmap) ret = t_create_ring(1, &ring, 0); if (ret == T_SETUP_SKIP) - return 0; + return T_EXIT_SKIP; else if (ret != T_SETUP_OK) - return 1; + return T_EXIT_FAIL; if (!use_mmap) { br = io_uring_setup_buf_ring(&ring, entries, bgid, 0, &ret); if (!br) { /* by now should have checked if this is supported or not */ fprintf(stderr, "Buffer ring register failed %d\n", ret); - return 1; + return T_EXIT_FAIL; } } else { struct io_uring_buf_reg reg = { @@ -325,8 +325,10 @@ static int test_running(int bgid, int entries, int loops, int use_mmap) ret = io_uring_register_buf_ring(&ring, ®, 0); if (ret) { + if (ret == -EINVAL) + return T_EXIT_SKIP; fprintf(stderr, "mmap ring register failed %d\n", ret); - return 1; + return T_EXIT_FAIL; } off = IORING_OFF_PBUF_RING | @@ -336,17 +338,17 @@ static int test_running(int bgid, int entries, int loops, int use_mmap) MAP_SHARED | MAP_POPULATE, ring.ring_fd, off); if (br == MAP_FAILED) { perror("mmap"); - return 1; + return T_EXIT_FAIL; } } buffers = malloc(sizeof(bool) * entries); if (!buffers) - return 1; + return T_EXIT_SKIP; read_fd = open("/dev/zero", O_RDONLY); if (read_fd < 0) - return 1; + return T_EXIT_SKIP; for (loop = 0; loop < loops; loop++) { memset(buffers, 0, sizeof(bool) * entries); @@ -359,28 +361,28 @@ static int test_running(int bgid, int entries, int loops, int use_mmap) ret = test_one_read(read_fd, bgid, &ring); if (ret < 0) { fprintf(stderr, "bad run %d/%d = %d\n", loop, idx, ret); - return ret; + return T_EXIT_FAIL; } if (buffers[ret]) { fprintf(stderr, "reused buffer %d/%d = %d!\n", loop, idx, ret); - return 1; + return T_EXIT_FAIL; } if (buffer[0] != 0) { fprintf(stderr, "unexpected read %d %d/%d = %d!\n", (int)buffer[0], loop, idx, ret); - return 1; + return T_EXIT_FAIL; } if (buffer[1] != 1) { fprintf(stderr, "unexpected spilled read %d %d/%d = %d!\n", (int)buffer[1], loop, idx, ret); - return 1; + return T_EXIT_FAIL; } buffers[ret] = true; } ret = test_one_read(read_fd, bgid, &ring); if (ret != -ENOBUFS) { fprintf(stderr, "expected enobufs run %d = %d\n", loop, ret); - return 1; + return T_EXIT_FAIL; } } @@ -388,13 +390,13 @@ static int test_running(int bgid, int entries, int loops, int use_mmap) ret = io_uring_unregister_buf_ring(&ring, bgid); if (ret) { fprintf(stderr, "Buffer ring register failed %d\n", ret); - return 1; + return T_EXIT_FAIL; } close(read_fd); io_uring_queue_exit(&ring); free(buffers); - return 0; + return T_EXIT_PASS; } int main(int argc, char *argv[]) @@ -458,7 +460,9 @@ int main(int argc, char *argv[]) for (i = 0; !no_buf_ring && entries[i] != -1; i++) { ret = test_running(2, entries[i], 3, 1); - if (ret) { + if (ret == T_EXIT_SKIP) { + break; + } else if (ret != T_EXIT_PASS) { fprintf(stderr, "test_running(%d) mmap failed\n", entries[i]); return T_EXIT_FAIL; } |