On 3/2/2020 6:12 PM, Jens Axboe wrote: > 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. Great, it'll go into v2 as well. -- Pavel Begunkov