Revision 64165b1affc5bc16231ac971e66aae7d68d57f2c authored by Hugh Dickins on 19 April 2019, 00:50:09 UTC, committed by Linus Torvalds on 19 April 2019, 16:46:04 UTC
The old try_to_unuse() implementation was driven by find_next_to_unuse(),
which terminated as soon as all the swap had been freed.

Add inuse_pages checks now (alongside signal_pending()) to stop scanning
mms and swap_map once finished.

The same ought to be done in shmem_unuse() too, but never was before,
and needs a different interface: so leave it as is for now.

Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1904081258200.1523@eggly.anvils
Fixes: b56a2d8af914 ("mm: rid swapoff of quadratic complexity")
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
Cc: Huang Ying <ying.huang@intel.com>
Cc: Kelley Nielsen <kelleynnn@gmail.com>
Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Cc: Rik van Riel <riel@surriel.com>
Cc: Vineeth Pillai <vpillai@digitalocean.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent dd862de
History
File Mode Size
firmware_loader
power
regmap
test
Kconfig -rw-r--r-- 6.6 KB
Makefile -rw-r--r-- 955 bytes
arch_topology.c -rw-r--r-- 6.5 KB
attribute_container.c -rw-r--r-- 11.9 KB
base.h -rw-r--r-- 6.4 KB
bus.c -rw-r--r-- 30.8 KB
cacheinfo.c -rw-r--r-- 16.9 KB
class.c -rw-r--r-- 14.8 KB
component.c -rw-r--r-- 20.5 KB
container.c -rw-r--r-- 814 bytes
core.c -rw-r--r-- 87.1 KB
cpu.c -rw-r--r-- 14.1 KB
dd.c -rw-r--r-- 31.6 KB
devcon.c -rw-r--r-- 4.8 KB
devcoredump.c -rw-r--r-- 9.3 KB
devres.c -rw-r--r-- 27.1 KB
devtmpfs.c -rw-r--r-- 9.1 KB
driver.c -rw-r--r-- 5.8 KB
firmware.c -rw-r--r-- 606 bytes
hypervisor.c -rw-r--r-- 536 bytes
init.c -rw-r--r-- 768 bytes
isa.c -rw-r--r-- 3.8 KB
map.c -rw-r--r-- 3.3 KB
memory.c -rw-r--r-- 19.9 KB
module.c -rw-r--r-- 2.0 KB
node.c -rw-r--r-- 18.4 KB
pinctrl.c -rw-r--r-- 2.7 KB
platform-msi.c -rw-r--r-- 10.6 KB
platform.c -rw-r--r-- 37.5 KB
property.c -rw-r--r-- 32.8 KB
soc.c -rw-r--r-- 6.2 KB
swnode.c -rw-r--r-- 16.1 KB
syscore.c -rw-r--r-- 3.2 KB
topology.c -rw-r--r-- 3.2 KB
transport_class.c -rw-r--r-- 9.3 KB

back to top