On Thu, Jun 08, 2017 at 03:35:10PM -0600, Chris Murphy wrote: > What's the status?
I rebased the patches on v4.9 back in November and ran into a circular locking issue between mmap_sem and i_rwsem. I never figured out how to resolve that. Christoph was the last one that I talked to about this, maybe he has some ideas. Latest code rebased on v4.12-rc4 is here: https://github.com/osandov/linux/tree/btrfs-swap. [ 991.245632] ====================================================== [ 991.246493] WARNING: possible circular locking dependency detected [ 991.246590] 4.12.0-rc4-00006-g0e2e3e2ba974 #3 Not tainted [ 991.246590] ------------------------------------------------------ [ 991.246590] swapme/626 is trying to acquire lock: [ 991.246590] (&sb->s_type->i_mutex_key#16){++++++}, at: [<ffffffffa02804ee>] nfs_start_io_direct+0x1e/0x70 [nfs] [ 991.246590] [ 991.246590] but task is already holding lock: [ 991.246590] (&mm->mmap_sem){++++++}, at: [<ffffffff8105bb0a>] __do_page_fault+0x17a/0x550 [ 991.246590] [ 991.246590] which lock already depends on the new lock. [ 991.246590] [ 991.246590] [ 991.246590] the existing dependency chain (in reverse order) is: [ 991.246590] [ 991.246590] -> #1 (&mm->mmap_sem){++++++}: [ 991.246590] lock_acquire+0xa5/0x250 [ 991.246590] __might_fault+0x68/0x90 [ 991.246590] copy_page_to_iter+0xc4/0x310 [ 991.246590] generic_file_read_iter+0x325/0x7d0 [ 991.246590] nfs_file_read+0x7c/0xa0 [nfs] [ 991.246590] __vfs_read+0xe1/0x130 [ 991.246590] vfs_read+0xa8/0x150 [ 991.246590] SyS_read+0x58/0xd0 [ 991.246590] entry_SYSCALL_64_fastpath+0x1f/0xbe [ 991.246590] [ 991.246590] -> #0 (&sb->s_type->i_mutex_key#16){++++++}: [ 991.246590] __lock_acquire+0x15e1/0x1940 [ 991.246590] lock_acquire+0xa5/0x250 [ 991.246590] down_read+0x3e/0x70 [ 991.246590] nfs_start_io_direct+0x1e/0x70 [nfs] [ 991.246590] nfs_file_direct_write+0x1b6/0x290 [nfs] [ 991.246590] nfs_file_write+0x169/0x1f0 [nfs] [ 991.246590] __swap_writepage+0x121/0x2f0 [ 991.246590] swap_writepage+0x34/0x90 [ 991.246590] pageout.isra.18+0xf8/0x3c0 [ 991.246590] shrink_page_list+0x779/0xac0 [ 991.246590] shrink_inactive_list+0x200/0x580 [ 991.246590] shrink_node_memcg+0x367/0x750 [ 991.246590] shrink_node+0xf7/0x2f0 [ 991.246590] do_try_to_free_pages+0xd7/0x350 [ 991.246590] try_to_free_mem_cgroup_pages+0x111/0x390 [ 991.246590] try_charge+0x14b/0xa20 [ 991.246590] mem_cgroup_try_charge+0x87/0x480 [ 991.246590] __handle_mm_fault+0xbc0/0x11b0 [ 991.246590] handle_mm_fault+0x174/0x340 [ 991.246590] __do_page_fault+0x290/0x550 [ 991.246590] trace_do_page_fault+0x9a/0x260 [ 991.246590] do_async_page_fault+0x4f/0x70 [ 991.246590] async_page_fault+0x28/0x30 [ 991.246590] [ 991.246590] other info that might help us debug this: [ 991.246590] [ 991.246590] Possible unsafe locking scenario: [ 991.246590] [ 991.246590] CPU0 CPU1 [ 991.246590] ---- ---- [ 991.246590] lock(&mm->mmap_sem); [ 991.246590] lock(&sb->s_type->i_mutex_key#16); [ 991.246590] lock(&mm->mmap_sem); [ 991.246590] lock(&sb->s_type->i_mutex_key#16); [ 991.246590] [ 991.246590] *** DEADLOCK *** [ 991.246590] [ 991.246590] 1 lock held by swapme/626: [ 991.246590] #0: (&mm->mmap_sem){++++++}, at: [<ffffffff8105bb0a>] __do_page_fault+0x17a/0x550 [ 991.246590] [ 991.246590] stack backtrace: [ 991.246590] CPU: 2 PID: 626 Comm: swapme Not tainted 4.12.0-rc4-00006-g0e2e3e2ba974 #3 [ 991.246590] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-20170228_101828-anatol 04/01/2014 [ 991.246590] Call Trace: [ 991.246590] dump_stack+0x8e/0xcd [ 991.246590] print_circular_bug+0x1f8/0x2e0 [ 991.246590] __lock_acquire+0x15e1/0x1940 [ 991.246590] lock_acquire+0xa5/0x250 [ 991.246590] ? lock_acquire+0xa5/0x250 [ 991.246590] ? nfs_start_io_direct+0x1e/0x70 [nfs] [ 991.246590] down_read+0x3e/0x70 [ 991.246590] ? nfs_start_io_direct+0x1e/0x70 [nfs] [ 991.246590] nfs_start_io_direct+0x1e/0x70 [nfs] [ 991.246590] nfs_file_direct_write+0x1b6/0x290 [nfs] [ 991.246590] nfs_file_write+0x169/0x1f0 [nfs] [ 991.246590] ? SyS_madvise+0x870/0x870 [ 991.246590] __swap_writepage+0x121/0x2f0 [ 991.246590] swap_writepage+0x34/0x90 [ 991.246590] pageout.isra.18+0xf8/0x3c0 [ 991.246590] shrink_page_list+0x779/0xac0 [ 991.246590] shrink_inactive_list+0x200/0x580 [ 991.246590] ? mark_lock+0x5d0/0x670 [ 991.246590] shrink_node_memcg+0x367/0x750 [ 991.246590] ? mem_cgroup_iter+0x1c1/0x760 [ 991.246590] shrink_node+0xf7/0x2f0 [ 991.246590] ? shrink_node+0xf7/0x2f0 [ 991.246590] do_try_to_free_pages+0xd7/0x350 [ 991.246590] try_to_free_mem_cgroup_pages+0x111/0x390 [ 991.246590] try_charge+0x14b/0xa20 [ 991.246590] ? get_mem_cgroup_from_mm+0xfc/0x2d0 [ 991.246590] mem_cgroup_try_charge+0x87/0x480 [ 991.246590] __handle_mm_fault+0xbc0/0x11b0 [ 991.246590] handle_mm_fault+0x174/0x340 [ 991.246590] __do_page_fault+0x290/0x550 [ 991.246590] trace_do_page_fault+0x9a/0x260 [ 991.246590] do_async_page_fault+0x4f/0x70 [ 991.246590] async_page_fault+0x28/0x30 [ 991.246590] RIP: 0033:0x400b72 [ 991.246590] RSP: 002b:00007fffa3a2ed60 EFLAGS: 00010206 [ 991.246590] RAX: 00007f78598cf000 RBX: 00007f78598cf000 RCX: 00007f787969fa8a [ 991.246590] RDX: 0000000000000000 RSI: 0000000000001000 RDI: 0000000000000000 [ 991.246590] RBP: 0000000000001000 R08: ffffffffffffffff R09: 0000000000000000 [ 991.246590] R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000040000 [ 991.246590] R13: 00007f78598d0000 R14: 00000000000001ff R15: 000000000001fee5 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html