mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 15:51:30 -05:00
io_uring/timeout: Switch to use hrtimer_setup()
hrtimer_setup() takes the callback function pointer as argument and initializes the timer completely. Replace hrtimer_init() and the open coded initialization of hrtimer::function with the new setup mechanism. Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/all/80ca8d959f2cc67c75f6d61008e3bebfe7fbc30a.1738746821.git.namcao@linutronix.de
This commit is contained in:
@@ -407,8 +407,7 @@ static int io_linked_timeout_update(struct io_ring_ctx *ctx, __u64 user_data,
|
||||
io = req->async_data;
|
||||
if (hrtimer_try_to_cancel(&io->timer) == -1)
|
||||
return -EALREADY;
|
||||
hrtimer_init(&io->timer, io_timeout_get_clock(io), mode);
|
||||
io->timer.function = io_link_timeout_fn;
|
||||
hrtimer_setup(&io->timer, io_link_timeout_fn, io_timeout_get_clock(io), mode);
|
||||
hrtimer_start(&io->timer, timespec64_to_ktime(*ts), mode);
|
||||
return 0;
|
||||
}
|
||||
@@ -430,8 +429,7 @@ static int io_timeout_update(struct io_ring_ctx *ctx, __u64 user_data,
|
||||
data->ts = *ts;
|
||||
|
||||
list_add_tail(&timeout->list, &ctx->timeout_list);
|
||||
hrtimer_init(&data->timer, io_timeout_get_clock(data), mode);
|
||||
data->timer.function = io_timeout_fn;
|
||||
hrtimer_setup(&data->timer, io_timeout_fn, io_timeout_get_clock(data), mode);
|
||||
hrtimer_start(&data->timer, timespec64_to_ktime(data->ts), mode);
|
||||
return 0;
|
||||
}
|
||||
@@ -557,7 +555,6 @@ static int __io_timeout_prep(struct io_kiocb *req,
|
||||
return -EINVAL;
|
||||
|
||||
data->mode = io_translate_timeout_mode(flags);
|
||||
hrtimer_init(&data->timer, io_timeout_get_clock(data), data->mode);
|
||||
|
||||
if (is_timeout_link) {
|
||||
struct io_submit_link *link = &req->ctx->submit_state.link;
|
||||
@@ -568,6 +565,10 @@ static int __io_timeout_prep(struct io_kiocb *req,
|
||||
return -EINVAL;
|
||||
timeout->head = link->last;
|
||||
link->last->flags |= REQ_F_ARM_LTIMEOUT;
|
||||
hrtimer_setup(&data->timer, io_link_timeout_fn, io_timeout_get_clock(data),
|
||||
data->mode);
|
||||
} else {
|
||||
hrtimer_setup(&data->timer, io_timeout_fn, io_timeout_get_clock(data), data->mode);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -627,7 +628,6 @@ int io_timeout(struct io_kiocb *req, unsigned int issue_flags)
|
||||
}
|
||||
add:
|
||||
list_add(&timeout->list, entry);
|
||||
data->timer.function = io_timeout_fn;
|
||||
hrtimer_start(&data->timer, timespec64_to_ktime(data->ts), data->mode);
|
||||
raw_spin_unlock_irq(&ctx->timeout_lock);
|
||||
return IOU_ISSUE_SKIP_COMPLETE;
|
||||
@@ -646,7 +646,6 @@ void io_queue_linked_timeout(struct io_kiocb *req)
|
||||
if (timeout->head) {
|
||||
struct io_timeout_data *data = req->async_data;
|
||||
|
||||
data->timer.function = io_link_timeout_fn;
|
||||
hrtimer_start(&data->timer, timespec64_to_ktime(data->ts),
|
||||
data->mode);
|
||||
list_add_tail(&timeout->list, &ctx->ltimeout_list);
|
||||
|
||||
Reference in New Issue
Block a user