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 understood this part. So the WQ_MEM_RECLAIM is 'just' avoiding a new worker creation. > This is why work under the WQ_MEM_RECLAIM cannot recurse back into the > allocator as it would get a rescurer thread stuck at a point when all > other threads are already stuck. > > To remove WQ_MEM_RECLAIM you have to make assertions about the calling > contexts and blocking contexts of the workqueue, not what the work > itself is doing. 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 warning triggered by the rdma code. Anyway, thanks for explaining.