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

io_uring: shuffle rarely used ctx fields



There is a bunch of scattered around ctx fields that are almost never
used, e.g. only on ring exit, plunge them to the end, better locality,
better aesthetically.

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


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 93d2bcd2
Loading
Loading
Loading
Loading
+17 −19
Original line number Diff line number Diff line
@@ -368,9 +368,6 @@ struct io_ring_ctx {
		unsigned		cached_cq_overflow;
		unsigned long		sq_check_overflow;

		/* hashed buffered write serialization */
		struct io_wq_hash	*hash_map;

		struct list_head	defer_list;
		struct list_head	timeout_list;
		struct list_head	cq_overflow_list;
@@ -387,9 +384,6 @@ struct io_ring_ctx {

	struct io_rings	*rings;

	/* Only used for accounting purposes */
	struct mm_struct	*mm_account;

	const struct cred	*sq_creds;	/* cred used for __io_sq_thread() */
	struct io_sq_data	*sq_data;	/* if using sq thread polling */

@@ -410,14 +404,6 @@ struct io_ring_ctx {
	unsigned		nr_user_bufs;
	struct io_mapped_ubuf	**user_bufs;

	struct user_struct	*user;

	struct completion	ref_comp;

#if defined(CONFIG_UNIX)
	struct socket		*ring_sock;
#endif

	struct xarray		io_buffers;

	struct xarray		personalities;
@@ -461,12 +447,24 @@ struct io_ring_ctx {

	struct io_restriction		restrictions;

	/* exit task_work */
	struct callback_head		*exit_task_work;

	/* Keep this last, we don't need it for the fast path */
	struct {
		#if defined(CONFIG_UNIX)
			struct socket		*ring_sock;
		#endif
		/* hashed buffered write serialization */
		struct io_wq_hash		*hash_map;

		/* Only used for accounting purposes */
		struct user_struct		*user;
		struct mm_struct		*mm_account;

		/* ctx exit and cancelation */
		struct callback_head		*exit_task_work;
		struct work_struct		exit_work;
		struct list_head		tctx_list;
		struct completion		ref_comp;
	};
};

struct io_uring_task {