Thread (11 messages) 11 messages, 4 authors, 2018-01-17

Re: Hang with v4.15-rc trying to swap back in

From: Minchan Kim <minchan@kernel.org>
Date: 2017-12-27 23:26:54

Hello James,

On Wed, Dec 27, 2017 at 12:50:17PM -0800, James Bottomley wrote:
Reverting these three patches fixes the problem:

commit aa8d22a11da933dbf880b4933b58931f4aefe91c
Author: Minchan Kim [off-list ref]
Date:   Wed Nov 15 17:33:11 2017 -0800

    mm: swap: SWP_SYNCHRONOUS_IO: skip swapcache only if swapped page
has no other reference

commit 0bcac06f27d7528591c27ac2b093ccd71c5d0168
Author: Minchan Kim [off-list ref]
Date:   Wed Nov 15 17:33:07 2017 -0800

    mm, swap: skip swapcache for swapin of synchronous device

Also need to revert:

commit e9a6effa500526e2a19d5ad042cb758b55b1ef93
Author: Huang Ying [off-list ref]
Date:   Wed Nov 15 17:33:15 2017 -0800

    mm, swap: fix false error message in __swp_swapcount()

(The latter is simply because it used a function that is eliminated by
one of the other reversions).  They came into the merge window via the
-mm tree as part of a 4 part series:

Subject:	[PATCH v2 0/4] skip swapcache for super fast device
Message-Id:	<1505886205-9671-1-git-send-email-minchan@kernel.org
quoted
James
Thanks for the report.
Patches are related to synchronous swap devices like brd, zram, nvdimm so

1. What swap device do you use among them?

2. Could you tell me how you can reproduce it?

Thanks.
On Wed, 2017-12-27 at 10:12 -0800, James Bottomley wrote:
quoted
I think I've seen this a lot shutting down systems, but never manged
to trace it before.  Now I can reproduce it starting kvm on a 4GB
system with 3GB of memory and booting up a linux OS.  What eventually
happens (after logging into the virtual system) is that kvm itself
hangs, although the stuck process is one of the kworkers in D wait
hung on this stack trace:

[<0>] io_schedule+0x12/0x40
[<0>] __lock_page_or_retry+0x2b8/0x300
[<0>] do_swap_page+0x1b9/0x910
[<0>] __handle_mm_fault+0x7ee/0xe20
[<0>] handle_mm_fault+0xce/0x1e0
[<0>] __get_user_pages+0x104/0x6c0
[<0>] get_user_pages_remote+0x84/0x1f0
[<0>] async_pf_execute+0x67/0x1a0 [kvm]
[<0>] process_one_work+0x13c/0x370
[<0>] worker_thread+0x44/0x3e0
[<0>] kthread+0xf5/0x130
[<0>] ret_from_fork+0x1f/0x30
[<0>] 0xffffffffffffffff

The async_pf_execute() is a kvm async callback, failure to execute it
appears to be causing the kvm hang.

Next to go is kswapd

[<0>] io_schedule+0x12/0x40
[<0>] __lock_page+0xec/0x120
[<0>] deferred_split_scan+0x21b/0x2a0
[<0>] shrink_slab+0x24a/0x460
[<0>] shrink_node+0x2e6/0x2f0
[<0>] kswapd+0x2ad/0x730
[<0>] kthread+0xf5/0x130
[<0>] ret_from_fork+0x1f/0x30
[<0>] 0xffffffffffffffff

And finally systemd-logind hangs making it very difficult to get into
the system (and impossible to shut it down)

[<0>] call_rwsem_down_write_failed+0x13/0x20
[<0>] register_shrinker+0x45/0xa0
[<0>] sget_userns+0x44d/0x480
[<0>] mount_nodev+0x2a/0xa0
[<0>] mount_fs+0x34/0x150
[<0>] vfs_kern_mount+0x62/0x120
[<0>] do_mount+0x1d7/0xbf0
[<0>] SyS_mount+0x7e/0xd0
[<0>] do_syscall_64+0x5b/0x100
[<0>] entry_SYSCALL64_slow_path+0x25/0x25
[<0>] 0xffffffffffffffff

I've seen this with -rc1 and -rc5, so I think it's some problem with
merge window code.

James
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help