mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
io_uring: move iopoll ctx fields around
Move poll_multi_queue and iopoll_list to the submission cache line, it doesn't make much sense to keep them separately, and is better place for it in general. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/5b03cf7e6652e350e6e70a917eec72ba9f33b97b.1692916914.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
0aa7aa5f76
commit
644c4a7a72
@@ -256,6 +256,15 @@ struct io_ring_ctx {
|
|||||||
struct io_hash_table cancel_table_locked;
|
struct io_hash_table cancel_table_locked;
|
||||||
struct io_alloc_cache apoll_cache;
|
struct io_alloc_cache apoll_cache;
|
||||||
struct io_alloc_cache netmsg_cache;
|
struct io_alloc_cache netmsg_cache;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ->iopoll_list is protected by the ctx->uring_lock for
|
||||||
|
* io_uring instances that don't use IORING_SETUP_SQPOLL.
|
||||||
|
* For SQPOLL, only the single threaded io_sq_thread() will
|
||||||
|
* manipulate the list, hence no extra locking is needed there.
|
||||||
|
*/
|
||||||
|
struct io_wq_work_list iopoll_list;
|
||||||
|
bool poll_multi_queue;
|
||||||
} ____cacheline_aligned_in_smp;
|
} ____cacheline_aligned_in_smp;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
@@ -284,20 +293,6 @@ struct io_ring_ctx {
|
|||||||
struct wait_queue_head cq_wait;
|
struct wait_queue_head cq_wait;
|
||||||
} ____cacheline_aligned_in_smp;
|
} ____cacheline_aligned_in_smp;
|
||||||
|
|
||||||
struct {
|
|
||||||
spinlock_t completion_lock;
|
|
||||||
|
|
||||||
bool poll_multi_queue;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ->iopoll_list is protected by the ctx->uring_lock for
|
|
||||||
* io_uring instances that don't use IORING_SETUP_SQPOLL.
|
|
||||||
* For SQPOLL, only the single threaded io_sq_thread() will
|
|
||||||
* manipulate the list, hence no extra locking is needed there.
|
|
||||||
*/
|
|
||||||
struct io_wq_work_list iopoll_list;
|
|
||||||
} ____cacheline_aligned_in_smp;
|
|
||||||
|
|
||||||
/* timeouts */
|
/* timeouts */
|
||||||
struct {
|
struct {
|
||||||
spinlock_t timeout_lock;
|
spinlock_t timeout_lock;
|
||||||
@@ -308,6 +303,8 @@ struct io_ring_ctx {
|
|||||||
|
|
||||||
struct io_uring_cqe completion_cqes[16];
|
struct io_uring_cqe completion_cqes[16];
|
||||||
|
|
||||||
|
spinlock_t completion_lock;
|
||||||
|
|
||||||
/* IRQ completion list, under ->completion_lock */
|
/* IRQ completion list, under ->completion_lock */
|
||||||
struct io_wq_work_list locked_free_list;
|
struct io_wq_work_list locked_free_list;
|
||||||
unsigned int locked_free_nr;
|
unsigned int locked_free_nr;
|
||||||
|
|||||||
Reference in New Issue
Block a user