On 3/23/21 3:15 AM, Hillf Danton wrote: > On Mon, 22 Mar 2021 12:00:59 Jens Axboe wrote: >> >> @@ -109,19 +110,16 @@ struct io_wq { >> free_work_fn *free_work; >> io_wq_work_fn *do_work; >> >> - struct task_struct *manager; >> - > [...] >> -static void io_wq_cancel_pending(struct io_wq *wq) > > No more caller on destroying wq? Should probably keep that for io_wq_destroy(), I'll add it. Thanks. >> -{ >> - struct io_cb_cancel_data match = { >> - .fn = io_wq_work_match_all, >> - .cancel_all = true, >> - }; >> - int node; >> - >> - for_each_node(node) >> - io_wqe_cancel_pending_work(wq->wqes[node], &match); >> -} > [...] >> static void io_wq_destroy_manager(struct io_wq *wq) > > s/io_wq_destroy_manager/__io_wq_destroy/ as manager is gone. Renamed - also missed another comment on having the manager create a worker, fixed that one up too. -- Jens Axboe