Both patches are really nice. However, 1/2 doesn't apply and looks it needs small stylistic changes, see nits below On 14/03/2021 11:15, Stefan Metzmacher wrote: > --- > fs/io-wq.h | 10 +++++++++- > fs/io_uring.c | 16 ++++++++++++++++ > include/linux/io_uring.h | 25 ------------------------- > 3 files changed, 25 insertions(+), 26 deletions(-) > > diff --git a/fs/io-wq.h b/fs/io-wq.h > index 1ac2f3248088..80d590564ff9 100644 > --- a/fs/io-wq.h > +++ b/fs/io-wq.h > @@ -2,7 +2,6 @@ > #define INTERNAL_IO_WQ_H > #include <linux/refcount.h> > -#include <linux/io_uring.h> > struct io_wq; > @@ -21,6 +20,15 @@ enum io_wq_cancel { > IO_WQ_CANCEL_NOTFOUND, /* work not found */ > }; newline (nl)? > +struct io_wq_work_node { > + struct io_wq_work_node *next; > +}; > + > +struct io_wq_work_list { > + struct io_wq_work_node *first; > + struct io_wq_work_node *last; > +}; > + > static inline void wq_list_add_after(struct io_wq_work_node *node, > struct io_wq_work_node *pos, > struct io_wq_work_list *list) > diff --git a/fs/io_uring.c b/fs/io_uring.c > index 642ad08d8964..fd0807a3c9c3 100644 > --- a/fs/io_uring.c > +++ b/fs/io_uring.c > @@ -454,6 +454,22 @@ struct io_ring_ctx { > struct list_head tctx_list; > }; nl > +struct io_uring_task { > + /* submission side */ > + struct xarray xa; > + struct wait_queue_head wait; > + void *last; > + void *io_wq; > + struct percpu_counter inflight; > + atomic_t in_idle; > + bool sqpoll; > + > + spinlock_t task_lock; > + struct io_wq_work_list task_list; > + unsigned long task_state; > + struct callback_head task_work; > +}; > + > /* > * First field must be the file pointer in all the > * iocb unions! See also 'struct kiocb' in <linux/fs.h> > diff --git a/include/linux/io_uring.h b/include/linux/io_uring.h > index 9761a0ec9f95..79cde9906be0 100644 > --- a/include/linux/io_uring.h > +++ b/include/linux/io_uring.h > @@ -5,31 +5,6 @@ > #include <linux/sched.h> > #include <linux/xarray.h> > -struct io_wq_work_node { > - struct io_wq_work_node *next; > -}; > - > -struct io_wq_work_list { > - struct io_wq_work_node *first; > - struct io_wq_work_node *last; > -}; > - > -struct io_uring_task { > - /* submission side */ > - struct xarray xa; > - struct wait_queue_head wait; > - void *last; > - void *io_wq; > - struct percpu_counter inflight; > - atomic_t in_idle; > - bool sqpoll; > - > - spinlock_t task_lock; > - struct io_wq_work_list task_list; > - unsigned long task_state; > - struct callback_head task_work; > -}; > - nl > #if defined(CONFIG_IO_URING) > struct sock *io_uring_get_socket(struct file *file); > void __io_uring_task_cancel(void); > -- Pavel Begunkov