OSDN Git Service

percpu: make pcpu_nr_empty_pop_pages per chunk type
authorRoman Gushchin <guro@fb.com>
Thu, 8 Apr 2021 03:57:33 +0000 (20:57 -0700)
committerDennis Zhou <dennis@kernel.org>
Fri, 9 Apr 2021 13:58:38 +0000 (13:58 +0000)
commit0760fa3d8f7fceeea508b98899f1c826e10ffe78
treef4fffe3b9d2e2c9c6bcf7b64efed634f8e300d61
parente49d033bddf5b565044e2abe4241353959bc9120
percpu: make pcpu_nr_empty_pop_pages per chunk type

nr_empty_pop_pages is used to guarantee that there are some free
populated pages to satisfy atomic allocations. Accounted and
non-accounted allocations are using separate sets of chunks,
so both need to have a surplus of empty pages.

This commit makes pcpu_nr_empty_pop_pages and the corresponding logic
per chunk type.

[Dennis]
This issue came up as I was reviewing [1] and realized I missed this.
Simultaneously, it was reported btrfs was seeing failed atomic
allocations in fsstress tests [2] and [3].

[1] https://lore.kernel.org/linux-mm/20210324190626.564297-1-guro@fb.com/
[2] https://lore.kernel.org/linux-mm/20210401185158.3275.409509F4@e16-tech.com/
[3] https://lore.kernel.org/linux-mm/CAL3q7H5RNBjCi708GH7jnczAOe0BLnacT9C+OBgA-Dx9jhB6SQ@mail.gmail.com/

Fixes: 3c7be18ac9a0 ("mm: memcg/percpu: account percpu memory to memory cgroups")
Cc: stable@vger.kernel.org # 5.9+
Signed-off-by: Roman Gushchin <guro@fb.com>
Tested-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Dennis Zhou <dennis@kernel.org>
mm/percpu-internal.h
mm/percpu-stats.c
mm/percpu.c