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

io_uring/rsrc: refactor io_rsrc_ref_quiesce



Refactor io_rsrc_ref_quiesce() by moving the first mutex_unlock(),
so we don't have to have a second mutex_unlock() further in the loop.
It prepares us to the next patch.

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


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent c732ea24
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -272,8 +272,8 @@ __cold static int io_rsrc_ref_quiesce(struct io_rsrc_data *data,
		return 0;

	data->quiesce = true;
	mutex_unlock(&ctx->uring_lock);
	do {
		mutex_unlock(&ctx->uring_lock);
		ret = io_run_task_work_sig(ctx);
		if (ret < 0) {
			mutex_lock(&ctx->uring_lock);
@@ -285,18 +285,10 @@ __cold static int io_rsrc_ref_quiesce(struct io_rsrc_data *data,
			}
			break;
		}
		ret = wait_for_completion_interruptible(&data->done);
		if (!ret) {
		wait_for_completion_interruptible(&data->done);
		mutex_lock(&ctx->uring_lock);
			if (!data->refs)
				break;
			/*
			 * it has been revived by another thread while
			 * we were unlocked
			 */
			mutex_unlock(&ctx->uring_lock);
		}
	} while (1);
		ret = 0;
	} while (data->refs);
	data->quiesce = false;

	return ret;