On Mon, Mar 15, 2021 at 04:41:38PM -0700, Andrew Morton wrote: > > When a buffer is added to the LRU list, a reference is taken which is > > not dropped until the buffer is evicted from the LRU list. This is the > > correct behavior, however this LRU reference will prevent the buffer > > from being dropped. This means that the buffer can't actually be dropped > > until it is selected for eviction. There's no bound on the time spent > > on the LRU list, which means that the buffer may be undroppable for > > very long periods of time. Given that migration involves dropping > > buffers, the associated page is now unmigratible for long periods of > > time as well. CMA relies on being able to migrate a specific range > > of pages, so these types of failures make CMA significantly > > less reliable, especially under high filesystem usage. > > It looks like patch this turns drop_buffers() into a very expensive > operation. And that expensive operation occurs under the > address_space-wide private_lock, which is more ouch. This patch set is obsoleted by Minchan Kim's more recent patch-set.