Re: [PATCH V2] io_uring: introduce inline reqs for IORING_SETUP_IOPOLL

From: Christoph Hellwig
Date: Tue Apr 09 2019 - 05:37:33 EST


On Tue, Apr 09, 2019 at 01:21:54PM +0800, Jianchao Wang wrote:
> For the IORING_SETUP_IOPOLL case, all of the submission and
> completion are handled under ctx->uring_lock or in SQ poll thread
> context, so io_get_req and io_put_req has been serialized well.
> The only exception is the asynchronous workqueue context where could
> free the io_kiocb for error. To overcome this, we allocate a new
> io_kiocb and free the previous inlined one.
>
> Based on this, we introduce the preallocated reqs list per ctx and
> needn't to provide any lock to serialize the updating of list. The
> performacne benefits from this. The test result of following fio
> command

I really don't like the idea of exposing this to userspace. Is
there any good reason to not simply always allocate inline request
up to a certain ring size?