Commit c899a5d7 authored by Pavel Begunkov's avatar Pavel Begunkov Committed by Jens Axboe
Browse files

io_uring/rsrc: refactor io_queue_rsrc_removal



We can queue up a rsrc into a list in io_queue_rsrc_removal() while
allocating io_rsrc_put and so simplify the function.

Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/36bd708ee25c0e2e7992dc19b17db166eea9ac40.1681395792.git.asml.silence@gmail.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent c87fd583
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -685,7 +685,6 @@ int io_queue_rsrc_removal(struct io_rsrc_data *data, unsigned idx,
{
	u64 *tag_slot = io_get_tag_slot(data, idx);
	struct io_rsrc_put *prsrc;
	bool inline_item = true;

	if (!node->inline_items) {
		prsrc = &node->item;
@@ -694,14 +693,12 @@ int io_queue_rsrc_removal(struct io_rsrc_data *data, unsigned idx,
		prsrc = kzalloc(sizeof(*prsrc), GFP_KERNEL);
		if (!prsrc)
			return -ENOMEM;
		inline_item = false;
		list_add(&prsrc->list, &node->item_list);
	}

	prsrc->tag = *tag_slot;
	*tag_slot = 0;
	prsrc->rsrc = rsrc;
	if (!inline_item)
		list_add(&prsrc->list, &node->item_list);
	return 0;
}