On Wed, 2019-04-24 at 08:49 -0700, James Bottomley wrote: +AD4 On Wed, 2019-04-24 at 08:32 -0700, Bart Van Assche wrote: +AD4 +AD4 Another concern is whether this change can cause a livelock. If the +AD4 +AD4 system is running out of memory and the page cache submits a write +AD4 +AD4 request with a scatterlist with more than two elements, if the +AD4 +AD4 kmalloc() for the scatterlist fails, will that prevent the page cache +AD4 +AD4 from making any progress with writeback? +AD4 +AD4 It's pool backed, as I said. Is the concern there isn't enough depth +AD4 in the pools for a large write? That memory pool is used by multiple drivers. Most but not all sg+AF8-alloc+AF8-table+AF8-chained() calls happen from inside .queue+AF8-rq() implementations. One sg+AF8-alloc+AF8-table+AF8-chained() call occurs in the NFS server code. I'm not sure whether it is guaranteed that an sg+AF8-alloc+AF8-table+AF8-chained() will succeed sooner or later under low memory conditions. Additionally, new sg+AF8-alloc+AF8-table+AF8-chained() could be added in drivers any time. Bart.