On Thu 09-12-21 07:31:29, Christoph Hellwig wrote: > The flow in set_task_ioprio can be simplified by simply open coding > create_task_io_context, which removes a refcount roundtrip on the I/O > context. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> OK, why not :). Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > block/blk-ioc.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/block/blk-ioc.c b/block/blk-ioc.c > index 1ba7cfedca2d9..cff0e3bdae53c 100644 > --- a/block/blk-ioc.c > +++ b/block/blk-ioc.c > @@ -291,12 +291,18 @@ int set_task_ioprio(struct task_struct *task, int ioprio) > struct io_context *ioc; > > task_unlock(task); > - ioc = create_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE); > - if (ioc) { > - ioc->ioprio = ioprio; > - put_io_context(ioc); > + > + ioc = alloc_io_context(GFP_ATOMIC, NUMA_NO_NODE); > + if (!ioc) > + return -ENOMEM; > + > + task_lock(task); > + if (task->io_context || (task->flags & PF_EXITING)) { > + kmem_cache_free(iocontext_cachep, ioc); > + ioc = task->io_context; > + } else { > + task->io_context = ioc; > } > - return 0; > } > task->io_context->ioprio = ioprio; > task_unlock(task); > -- > 2.30.2 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR