Only [1] considerably affects performance (as by Roman Gershman), others are rather cleanups. [1-2] are on the surface cleanups following ->files changes. [3-5] address ->file grabbing [6-7] are some preparations around timeouts [8,9] are independent cleanups [10-12] toss around files_register() bits Pavel Begunkov (12): io_uring: don't io_prep_async_work() linked reqs io_uring: clean up ->files grabbing io_uring: kill extra check in fixed io_file_get() io_uring: simplify io_file_get() io_uring: improve submit_state.ios_left accounting io_uring: use a separate struct for timeout_remove io_uring: remove timeout.list after hrtimer cancel io_uring: clean leftovers after splitting issue io_uring: don't delay io_init_req() error check io_uring: clean file_data access in files_register io_uring: refactor *files_register()'s error paths io_uring: keep a pointer ref_node in file_data fs/io_uring.c | 275 ++++++++++++++++++++------------------------------ 1 file changed, 107 insertions(+), 168 deletions(-) -- 2.24.0