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-- 27.3 KB
Makefile -rw-r--r-- 2.4 KB
mac-celtic.c -rw-r--r-- 30.5 KB
mac-centeuro.c -rw-r--r-- 26.4 KB
mac-croatian.c -rw-r--r-- 30.5 KB
mac-cyrillic.c -rw-r--r-- 24.3 KB
mac-gaelic.c -rw-r--r-- 28.4 KB
mac-greek.c -rw-r--r-- 24.3 KB
mac-iceland.c -rw-r--r-- 30.5 KB
mac-inuit.c -rw-r--r-- 26.4 KB
mac-roman.c -rw-r--r-- 32.6 KB
mac-romanian.c -rw-r--r-- 30.5 KB
mac-turkish.c -rw-r--r-- 30.5 KB
nls_ascii.c -rw-r--r-- 5.7 KB
nls_base.c -rw-r--r-- 15.6 KB
nls_cp1250.c -rw-r--r-- 15.0 KB
nls_cp1251.c -rw-r--r-- 12.4 KB
nls_cp1255.c -rw-r--r-- 17.0 KB
nls_cp437.c -rw-r--r-- 17.1 KB
nls_cp737.c -rw-r--r-- 15.1 KB
nls_cp775.c -rw-r--r-- 13.2 KB
nls_cp850.c -rw-r--r-- 13.1 KB
nls_cp852.c -rw-r--r-- 14.5 KB
nls_cp855.c -rw-r--r-- 12.1 KB
nls_cp857.c -rw-r--r-- 12.4 KB
nls_cp860.c -rw-r--r-- 15.8 KB
nls_cp861.c -rw-r--r-- 17.1 KB
nls_cp862.c -rw-r--r-- 19.0 KB
nls_cp863.c -rw-r--r-- 16.8 KB
nls_cp864.c -rw-r--r-- 18.6 KB
nls_cp865.c -rw-r--r-- 17.1 KB
nls_cp866.c -rw-r--r-- 12.3 KB
nls_cp869.c -rw-r--r-- 13.1 KB
nls_cp874.c -rw-r--r-- 10.7 KB
nls_cp932.c -rw-r--r-- 479.7 KB
nls_cp936.c -rw-r--r-- 681.9 KB
nls_cp949.c -rw-r--r-- 854.7 KB
nls_cp950.c -rw-r--r-- 579.9 KB
nls_euc-jp.c -rw-r--r-- 23.8 KB
nls_iso8859-1.c -rw-r--r-- 10.0 KB
nls_iso8859-13.c -rw-r--r-- 11.5 KB
nls_iso8859-14.c -rw-r--r-- 14.5 KB
nls_iso8859-15.c -rw-r--r-- 12.6 KB
nls_iso8859-2.c -rw-r--r-- 12.8 KB
nls_iso8859-3.c -rw-r--r-- 12.8 KB
nls_iso8859-4.c -rw-r--r-- 12.8 KB
nls_iso8859-5.c -rw-r--r-- 10.6 KB
nls_iso8859-6.c -rw-r--r-- 10.2 KB
nls_iso8859-7.c -rw-r--r-- 13.2 KB
nls_iso8859-9.c -rw-r--r-- 10.8 KB
nls_koi8-r.c -rw-r--r-- 13.5 KB
nls_koi8-ru.c -rw-r--r-- 1.6 KB
nls_koi8-u.c -rw-r--r-- 13.9 KB
nls_utf8.c -rw-r--r-- 1.2 KB

back to top