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
Kconfig -rw-r--r-- 15.0 KB
Makefile -rw-r--r-- 2.9 KB
altera_edac.c -rw-r--r-- 59.6 KB
altera_edac.h -rw-r--r-- 13.8 KB
amd64_edac.c -rw-r--r-- 88.9 KB
amd64_edac.h -rw-r--r-- 14.1 KB
amd64_edac_dbg.c -rw-r--r-- 1.5 KB
amd64_edac_inj.c -rw-r--r-- 6.2 KB
amd76x_edac.c -rw-r--r-- 9.3 KB
amd8111_edac.c -rw-r--r-- 16.5 KB
amd8111_edac.h -rw-r--r-- 4.1 KB
amd8131_edac.c -rw-r--r-- 10.7 KB
amd8131_edac.h -rw-r--r-- 3.7 KB
aspeed_edac.c -rw-r--r-- 10.2 KB
cell_edac.c -rw-r--r-- 7.7 KB
cpc925_edac.c -rw-r--r-- 31.2 KB
debugfs.c -rw-r--r-- 3.7 KB
e752x_edac.c -rw-r--r-- 40.7 KB
e7xxx_edac.c -rw-r--r-- 16.2 KB
edac_device.c -rw-r--r-- 17.8 KB
edac_device.h -rw-r--r-- 9.1 KB
edac_device_sysfs.c -rw-r--r-- 23.2 KB
edac_mc.c -rw-r--r-- 31.2 KB
edac_mc.h -rw-r--r-- 7.9 KB
edac_mc_sysfs.c -rw-r--r-- 26.8 KB
edac_module.c -rw-r--r-- 3.3 KB
edac_module.h -rw-r--r-- 4.6 KB
edac_pci.c -rw-r--r-- 7.6 KB
edac_pci.h -rw-r--r-- 6.8 KB
edac_pci_sysfs.c -rw-r--r-- 18.9 KB
fsl_ddr_edac.c -rw-r--r-- 15.5 KB
fsl_ddr_edac.h -rw-r--r-- 2.3 KB
ghes_edac.c -rw-r--r-- 14.1 KB
highbank_l2_edac.c -rw-r--r-- 3.9 KB
highbank_mc_edac.c -rw-r--r-- 7.4 KB
i10nm_base.c -rw-r--r-- 6.3 KB
i3000_edac.c -rw-r--r-- 13.8 KB
i3200_edac.c -rw-r--r-- 12.8 KB
i5000_edac.c -rw-r--r-- 42.2 KB
i5100_edac.c -rw-r--r-- 30.2 KB
i5400_edac.c -rw-r--r-- 40.0 KB
i7300_edac.c -rw-r--r-- 35.3 KB
i7core_edac.c -rw-r--r-- 61.5 KB
i82443bxgx_edac.c -rw-r--r-- 13.6 KB
i82860_edac.c -rw-r--r-- 9.1 KB
i82875p_edac.c -rw-r--r-- 14.6 KB
i82975x_edac.c -rw-r--r-- 18.1 KB
ie31200_edac.c -rw-r--r-- 16.5 KB
layerscape_edac.c -rw-r--r-- 1.6 KB
mce_amd.c -rw-r--r-- 28.0 KB
mce_amd.h -rw-r--r-- 1.7 KB
mpc85xx_edac.c -rw-r--r-- 20.1 KB
mpc85xx_edac.h -rw-r--r-- 3.0 KB
mv64x60_edac.c -rw-r--r-- 21.7 KB
mv64x60_edac.h -rw-r--r-- 3.2 KB
octeon_edac-l2c.c -rw-r--r-- 5.3 KB
octeon_edac-lmc.c -rw-r--r-- 8.5 KB
octeon_edac-pc.c -rw-r--r-- 3.5 KB
octeon_edac-pci.c -rw-r--r-- 2.7 KB
pasemi_edac.c -rw-r--r-- 8.6 KB
pnd2_edac.c -rw-r--r-- 43.1 KB
pnd2_edac.h -rw-r--r-- 6.0 KB
ppc4xx_edac.c -rw-r--r-- 39.3 KB
ppc4xx_edac.h -rw-r--r-- 7.2 KB
qcom_edac.c -rw-r--r-- 10.9 KB
r82600_edac.c -rw-r--r-- 11.7 KB
sb_edac.c -rw-r--r-- 94.2 KB
skx_base.c -rw-r--r-- 16.7 KB
skx_common.c -rw-r--r-- 16.4 KB
skx_common.h -rw-r--r-- 3.6 KB
synopsys_edac.c -rw-r--r-- 37.7 KB
thunderx_edac.c -rw-r--r-- 52.8 KB
ti_edac.c -rw-r--r-- 8.6 KB
wq.c -rw-r--r-- 782 bytes
x38_edac.c -rw-r--r-- 12.0 KB
xgene_edac.c -rw-r--r-- 59.7 KB

back to top