Commit 221aa924 authored by Pavel Begunkov's avatar Pavel Begunkov Committed by Jens Axboe

io_uring: simplify io_rsrc_node_ref_zero

Replace queue_delayed_work() with mod_delayed_work() in
io_rsrc_node_ref_zero() as the later one can schedule a new work, and
cleanup it further for better readability.
Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/3b2b23e3a1ea4bbf789cd61815d33e05d9ff945e.1617287883.git.asml.silence@gmail.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent b895c9a6
...@@ -7583,7 +7583,7 @@ static void io_rsrc_node_ref_zero(struct percpu_ref *ref) ...@@ -7583,7 +7583,7 @@ static void io_rsrc_node_ref_zero(struct percpu_ref *ref)
struct io_rsrc_data *data = node->rsrc_data; struct io_rsrc_data *data = node->rsrc_data;
struct io_ring_ctx *ctx = data->ctx; struct io_ring_ctx *ctx = data->ctx;
bool first_add = false; bool first_add = false;
int delay = HZ; int delay;
io_rsrc_ref_lock(ctx); io_rsrc_ref_lock(ctx);
node->done = true; node->done = true;
...@@ -7599,13 +7599,9 @@ static void io_rsrc_node_ref_zero(struct percpu_ref *ref) ...@@ -7599,13 +7599,9 @@ static void io_rsrc_node_ref_zero(struct percpu_ref *ref)
} }
io_rsrc_ref_unlock(ctx); io_rsrc_ref_unlock(ctx);
if (percpu_ref_is_dying(&data->refs)) delay = percpu_ref_is_dying(&data->refs) ? 0 : HZ;
delay = 0; if (first_add || !delay)
mod_delayed_work(system_wq, &ctx->rsrc_put_work, delay);
if (!delay)
mod_delayed_work(system_wq, &ctx->rsrc_put_work, 0);
else if (first_add)
queue_delayed_work(system_wq, &ctx->rsrc_put_work, delay);
} }
static struct io_rsrc_node *io_rsrc_node_alloc(struct io_ring_ctx *ctx) static struct io_rsrc_node *io_rsrc_node_alloc(struct io_ring_ctx *ctx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment