mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 12:14:10 +08:00
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: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/65bc876271fb16bf550a53a4c76c91aacd94e52e.1681395792.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
c732ea242d
commit
eef81fcaa6
@ -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) {
|
||||
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);
|
||||
wait_for_completion_interruptible(&data->done);
|
||||
mutex_lock(&ctx->uring_lock);
|
||||
ret = 0;
|
||||
} while (data->refs);
|
||||
data->quiesce = false;
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user