Hi, Pretty much what the subject line says, it's about 25k to 40k times faster to provide a way to duplicate an existing rings buffer registration than it is manually map/pin/register the buffers again with a new ring. Patch 1 is just a prep patch, patch 2 adds refs to struct io_mapped_ubuf, patch 3 abstracts out a helper, and patch 4 finally adds the register opcode to allow a ring to duplicate the registered mappings from one ring to another. This came about from discussing overhead from the varnish cache project for cases with more dynamic ring/thread creation. Also see the buf-copy liburing branch for support and test code: https://git.kernel.dk/cgit/liburing/log/?h=buf-copy include/uapi/linux/io_uring.h | 13 +++++ io_uring/register.c | 60 ++++++++++++++-------- io_uring/register.h | 1 + io_uring/rsrc.c | 96 ++++++++++++++++++++++++++++++++++- io_uring/rsrc.h | 2 + 5 files changed, 150 insertions(+), 22 deletions(-) Since v2: - Ensure that it works for registered rings (both src/dst) - Little cleanups -- Jens Axboe