]> git.baikalelectronics.ru Git - kernel.git/commit
io_uring: refactor rsrc refnode allocation
authorPavel Begunkov <asml.silence@gmail.com>
Fri, 19 Mar 2021 17:22:36 +0000 (17:22 +0000)
committerJens Axboe <axboe@kernel.dk>
Sun, 11 Apr 2021 23:41:58 +0000 (17:41 -0600)
commit654cf311c1106ebe8a90a837fe2d1163012808b2
treeba8a0d0bcafad64da1a705a929e9e77fb0a09d7b
parent53bc7a5bc8680065f3165a805ba4dd4d6f4566a7
io_uring: refactor rsrc refnode allocation

There are two problems:
1) we always allocate refnodes in advance and free them if those
haven't been used. It's expensive, takes two allocations, where one of
them is percpu. And it may be pretty common not actually using them.

2) Current API with allocating a refnode and setting some of the fields
is error prone, we don't ever want to have a file node runninng fixed
buffer callback...

Solve both with pre-init/get API. Pre-init just leaves the node for
later if not used, and for get (i.e. io_rsrc_refnode_get()), you need to
explicitly pass all arguments setting callbacks/etc., so it's more
resilient.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c