Re: [PATCH 9/9] io_uring: pass submission ref to async

From: Jens Axboe
Date: Mon Mar 02 2020 - 10:12:47 EST


On 3/2/20 8:08 AM, Pavel Begunkov wrote:
> On 3/2/2020 12:39 AM, Pavel Begunkov wrote:
>> On 01/03/2020 19:18, Pavel Begunkov wrote:
>>> Currenlty, every async work handler accepts a submission reference,
>>> which it should put. Also there is a reference grabbed in io_get_work()
>>> and dropped in io_put_work(). This patch merge them together.
>>>
>>> - So, ownership of the submission reference passed to io-wq, and it'll
>>> be put in io_put_work().
>>> - io_get_put() doesn't take a ref now and so deleted.
>>> - async handlers don't put the submission ref anymore.
>>> - make cancellation bits of io-wq to call {get,put}_work() handlers
>>
>> Hmm, it makes them more like {init,fini}_work() and unbalanced/unpaired. May be
>> no a desirable thing.
>
> Any objections against replacing {get,put}_work() with
> io_finilise_work()? It will be called once and only once, and a work
> must not go away until it happened. It will be enough for now, but not
> sure whether you have some plans for this get/put pinning.

I have no further plans there, the get/put work only exist to ensure that
the work item stays valid in case of cancelation lookups.

--
Jens Axboe