Commit 5fc11eeb authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: open code create_task_io_context in set_task_ioprio



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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20211209063131.18537-10-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 8472161b
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -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);