tests: skip when large buf register fails
Registering lots of memory will fail for non-privileged users, so skip
tests if that happens.
Signed-off-by: Pavel Begunkov <[email protected]>
Link: https://lore.kernel.org/r/682c09c1d153cd4dfe505ded6069b294e98078e3.1629913874.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <[email protected]>
diff --git a/test/helpers.c b/test/helpers.c
index 930d82a..975e7cb 100644
--- a/test/helpers.c
+++ b/test/helpers.c
@@ -114,3 +114,22 @@
p.flags = flags;
return t_create_ring_params(depth, ring, &p);
}
+
+enum t_setup_ret t_register_buffers(struct io_uring *ring,
+ const struct iovec *iovecs,
+ unsigned nr_iovecs)
+{
+ int ret;
+
+ ret = io_uring_register_buffers(ring, iovecs, nr_iovecs);
+ if (!ret)
+ return T_SETUP_OK;
+
+ if ((ret == -EPERM || ret == -ENOMEM) && geteuid()) {
+ fprintf(stdout, "too large non-root buffer registration, skip\n");
+ return T_SETUP_SKIP;
+ }
+
+ fprintf(stderr, "buffer register failed: %s\n", strerror(-ret));
+ return ret;
+}