Re: [PATCH] nvme: Drop WQ_MEM_RECLAIM flag from core workqueues

2021-04-13 Thread Jason Gunthorpe
On Tue, Apr 13, 2021 at 10:54:04AM +0200, Daniel Wagner wrote: > Hmm, I am struggling with your last statement. If a worker does an > allocation it might block. I understand this is something which a worker > in a WQ_MEM_RECLAIM context is not allowed to do. > > My aim is still to get rid of the

Re: [PATCH] nvme: Drop WQ_MEM_RECLAIM flag from core workqueues

2021-04-13 Thread Daniel Wagner
On Mon, Apr 12, 2021 at 10:04:02AM -0300, Jason Gunthorpe wrote: > Basically the allocation of importance in the workqueue is assigning a > worker, so pre-allocating a worker ensures the work can continue to > progress without becoming dependent on allocations. Ah okay, got it. I didn't really und

Re: [PATCH] nvme: Drop WQ_MEM_RECLAIM flag from core workqueues

2021-04-12 Thread Jason Gunthorpe
On Mon, Apr 12, 2021 at 02:49:09PM +0200, Daniel Wagner wrote: > I've grepped through the code and didn't find anything which supports > the guarantee claim. Neither mm nor schedule seems to care about this > flag nor workqueue.c (except the early init bits). Or I must miss > something. It is pre

Re: [PATCH] nvme: Drop WQ_MEM_RECLAIM flag from core workqueues

2021-04-12 Thread Daniel Wagner
Hi Jason, On Mon, Apr 12, 2021 at 09:31:49AM -0300, Jason Gunthorpe wrote: > What does early init have to do with WQ_MEM_RECLAIM? 40c17f75dfa9 ("workqueue: allow WQ_MEM_RECLAIM on early init workqueues") Workqueues can be created early during boot before workqueue subsystem in fully onli

Re: [PATCH] nvme: Drop WQ_MEM_RECLAIM flag from core workqueues

2021-04-12 Thread Jason Gunthorpe
On Mon, Apr 12, 2021 at 02:23:30PM +0200, Daniel Wagner wrote: > Drop the WQ_MEM_RECLAIM flag as it is not needed and introduces > warnings. > > The documentation says "all wq which might be used in the memory > reclaim paths MUST have this flag set. The wq is guaranteed to have at > least one exe

[PATCH] nvme: Drop WQ_MEM_RECLAIM flag from core workqueues

2021-04-12 Thread Daniel Wagner
Drop the WQ_MEM_RECLAIM flag as it is not needed and introduces warnings. The documentation says "all wq which might be used in the memory reclaim paths MUST have this flag set. The wq is guaranteed to have at least one execution context regardless of memory pressure." By setting WQ_MEM_RECLAIM t