public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* xfs: possible irq lock inversion dependency detected
@ 2014-06-26 18:20 Jeff Layton
  2014-06-26 22:58 ` Dave Chinner
  0 siblings, 1 reply; 3+ messages in thread
From: Jeff Layton @ 2014-06-26 18:20 UTC (permalink / raw)
  To: xfs; +Cc: linux-fsdevel

While testing some knfsd patches on XFS today, I got this lockdep
splatter. The kernel is a stock -rc2 kernel with a pile of knfsd
patches on top. There are a couple of others in other areas, but
nothing that would affect this.

Nothing crashed or seems to be hung, so I'm not sure if it's a real
problem or not...

----------------------------[snip]-------------------------

[ 1136.235445] =========================================================
[ 1136.236081] [ INFO: possible irq lock inversion dependency detected ]
[ 1136.236081] 3.16.0-rc2.jlayton.2+ #9 Tainted: G           OE
[ 1136.236081] ---------------------------------------------------------
[ 1136.236081] kswapd0/53 just changed the state of lock:
[ 1136.236081]  (&xfs_dir_ilock_class){++++-+}, at: [<ffffffffa035e1a5>] xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081] but this lock took another, RECLAIM_FS-unsafe lock in the past:
[ 1136.236081]  (&mm->mmap_sem){++++++}

and interrupts could create inverse lock ordering between them.

[ 1136.236081] 
other info that might help us debug this:
[ 1136.236081]  Possible interrupt unsafe locking scenario:

[ 1136.236081]        CPU0                    CPU1
[ 1136.236081]        ----                    ----
[ 1136.236081]   lock(&mm->mmap_sem);
[ 1136.236081]                                local_irq_disable();
[ 1136.236081]                                lock(&xfs_dir_ilock_class);
[ 1136.236081]                                lock(&mm->mmap_sem);
[ 1136.236081]   <Interrupt>
[ 1136.236081]     lock(&xfs_dir_ilock_class);
[ 1136.236081] 
 *** DEADLOCK ***

[ 1136.236081] 3 locks held by kswapd0/53:
[ 1136.236081]  #0:  (shrinker_rwsem){++++..}, at: [<ffffffff811d0e9f>] shrink_slab+0x3f/0x180
[ 1136.236081]  #1:  (&type->s_umount_key#50){.+.+.+}, at: [<ffffffff81244224>] grab_super_passive+0x44/0x90
[ 1136.236081]  #2:  (&pag->pag_ici_reclaim_lock){+.+...}, at: [<ffffffffa0310437>] xfs_reclaim_inodes_ag+0xc7/0x510 [xfs]
[ 1136.236081] 
the shortest dependencies between 2nd lock and 1st lock:
[ 1136.236081]  -> (&mm->mmap_sem){++++++} ops: 503241 {
[ 1136.236081]     HARDIRQ-ON-W at:
[ 1136.236081]                       [<ffffffff810fd5d0>] __lock_acquire+0x670/0x1ca0
[ 1136.236081]                       [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                       [<ffffffff817f864e>] down_write+0x4e/0xc0
[ 1136.236081]                       [<ffffffff812485e8>] do_execve_common.isra.25+0x418/0x8f0
[ 1136.236081]                       [<ffffffff81248ad8>] do_execve+0x18/0x20
[ 1136.236081]                       [<ffffffff8100202b>] run_init_process+0x2b/0x30
[ 1136.236081]                       [<ffffffff817e0522>] kernel_init+0x42/0xf0
[ 1136.236081]                       [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]     HARDIRQ-ON-R at:
[ 1136.236081]                       [<ffffffff810fd4ba>] __lock_acquire+0x55a/0x1ca0
[ 1136.236081]                       [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                       [<ffffffff811ea5ec>] might_fault+0x8c/0xb0
[ 1136.236081]                       [<ffffffff813e1d47>] __clear_user+0x17/0x60
[ 1136.236081]                       [<ffffffff813e1dbf>] clear_user+0x2f/0x40
[ 1136.236081]                       [<ffffffff817ef0c1>] padzero+0x23/0x30
[ 1136.236081]                       [<ffffffff812a0ffe>] load_elf_binary+0x9ee/0x18e0
[ 1136.236081]                       [<ffffffff812474d4>] search_binary_handler+0x94/0x1b0
[ 1136.236081]                       [<ffffffff81248841>] do_execve_common.isra.25+0x671/0x8f0
[ 1136.236081]                       [<ffffffff81248ad8>] do_execve+0x18/0x20
[ 1136.236081]                       [<ffffffff8100202b>] run_init_process+0x2b/0x30
[ 1136.236081]                       [<ffffffff817e0522>] kernel_init+0x42/0xf0
[ 1136.236081]                       [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]     SOFTIRQ-ON-W at:
[ 1136.236081]                       [<ffffffff810fd4eb>] __lock_acquire+0x58b/0x1ca0
[ 1136.236081]                       [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                       [<ffffffff817f864e>] down_write+0x4e/0xc0
[ 1136.236081]                       [<ffffffff812485e8>] do_execve_common.isra.25+0x418/0x8f0
[ 1136.236081]                       [<ffffffff81248ad8>] do_execve+0x18/0x20
[ 1136.236081]                       [<ffffffff8100202b>] run_init_process+0x2b/0x30
[ 1136.236081]                       [<ffffffff817e0522>] kernel_init+0x42/0xf0
[ 1136.236081]                       [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]     SOFTIRQ-ON-R at:
[ 1136.236081]                       [<ffffffff810fd4eb>] __lock_acquire+0x58b/0x1ca0
[ 1136.236081]                       [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                       [<ffffffff811ea5ec>] might_fault+0x8c/0xb0
[ 1136.236081]                       [<ffffffff813e1d47>] __clear_user+0x17/0x60
[ 1136.236081]                       [<ffffffff813e1dbf>] clear_user+0x2f/0x40
[ 1136.236081]                       [<ffffffff817ef0c1>] padzero+0x23/0x30
[ 1136.236081]                       [<ffffffff812a0ffe>] load_elf_binary+0x9ee/0x18e0
[ 1136.236081]                       [<ffffffff812474d4>] search_binary_handler+0x94/0x1b0
[ 1136.236081]                       [<ffffffff81248841>] do_execve_common.isra.25+0x671/0x8f0
[ 1136.236081]                       [<ffffffff81248ad8>] do_execve+0x18/0x20
[ 1136.236081]                       [<ffffffff8100202b>] run_init_process+0x2b/0x30
[ 1136.236081]                       [<ffffffff817e0522>] kernel_init+0x42/0xf0
[ 1136.236081]                       [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]     RECLAIM_FS-ON-W at:
[ 1136.236081]                          [<ffffffff810fc9b5>] mark_held_locks+0x75/0xa0
[ 1136.236081]                          [<ffffffff810ffdea>] lockdep_trace_alloc+0x7a/0xe0
[ 1136.236081]                          [<ffffffff811c6560>] __alloc_pages_nodemask+0xa0/0xcd0
[ 1136.236081]                          [<ffffffff8120f33a>] alloc_pages_current+0x11a/0x1f0
[ 1136.236081]                          [<ffffffff810686c7>] pte_alloc_one+0x17/0x80
[ 1136.236081]                          [<ffffffff811eb493>] __pte_alloc+0x23/0x180
[ 1136.236081]                          [<ffffffff811f7eea>] move_page_tables+0x58a/0x730
[ 1136.236081]                          [<ffffffff8124662c>] shift_arg_pages+0xcc/0x1e0
[ 1136.236081]                          [<ffffffff8124694b>] setup_arg_pages+0x20b/0x240
[ 1136.236081]                          [<ffffffff812a0a3e>] load_elf_binary+0x42e/0x18e0
[ 1136.236081]                          [<ffffffff812474d4>] search_binary_handler+0x94/0x1b0
[ 1136.236081]                          [<ffffffff81248841>] do_execve_common.isra.25+0x671/0x8f0
[ 1136.236081]                          [<ffffffff81248ad8>] do_execve+0x18/0x20
[ 1136.236081]                          [<ffffffff8100202b>] run_init_process+0x2b/0x30
[ 1136.236081]                          [<ffffffff817e0522>] kernel_init+0x42/0xf0
[ 1136.236081]                          [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]     RECLAIM_FS-ON-R at:
[ 1136.236081]                          [<ffffffff810fc9b5>] mark_held_locks+0x75/0xa0
[ 1136.236081]                          [<ffffffff810ffdea>] lockdep_trace_alloc+0x7a/0xe0
[ 1136.236081]                          [<ffffffff811c6560>] __alloc_pages_nodemask+0xa0/0xcd0
[ 1136.236081]                          [<ffffffff8120f33a>] alloc_pages_current+0x11a/0x1f0
[ 1136.236081]                          [<ffffffff811edc94>] __pmd_alloc+0x24/0x1c0
[ 1136.236081]                          [<ffffffff811ef779>] handle_mm_fault+0xf19/0x10d0
[ 1136.236081]                          [<ffffffff810633d1>] __do_page_fault+0x201/0x5f0
[ 1136.236081]                          [<ffffffff81063827>] trace_do_page_fault+0x37/0x230
[ 1136.236081]                          [<ffffffff8105ed88>] do_async_page_fault+0x28/0xa0
[ 1136.236081]                          [<ffffffff817fcae8>] async_page_fault+0x28/0x30
[ 1136.236081]                          [<ffffffff813e1dbf>] clear_user+0x2f/0x40
[ 1136.236081]                          [<ffffffff817ef0c1>] padzero+0x23/0x30
[ 1136.236081]                          [<ffffffff812a0ffe>] load_elf_binary+0x9ee/0x18e0
[ 1136.236081]                          [<ffffffff812474d4>] search_binary_handler+0x94/0x1b0
[ 1136.236081]                          [<ffffffff81248841>] do_execve_common.isra.25+0x671/0x8f0
[ 1136.236081]                          [<ffffffff81248ad8>] do_execve+0x18/0x20
[ 1136.236081]                          [<ffffffff8100202b>] run_init_process+0x2b/0x30
[ 1136.236081]                          [<ffffffff817e0522>] kernel_init+0x42/0xf0
[ 1136.236081]                          [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]     INITIAL USE at:
[ 1136.236081]                      [<ffffffff810fd26a>] __lock_acquire+0x30a/0x1ca0
[ 1136.236081]                      [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                      [<ffffffff817f864e>] down_write+0x4e/0xc0
[ 1136.236081]                      [<ffffffff812485e8>] do_execve_common.isra.25+0x418/0x8f0
[ 1136.236081]                      [<ffffffff81248ad8>] do_execve+0x18/0x20
[ 1136.236081]                      [<ffffffff8100202b>] run_init_process+0x2b/0x30
[ 1136.236081]                      [<ffffffff817e0522>] kernel_init+0x42/0xf0
[ 1136.236081]                      [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]   }
[ 1136.236081]   ... key      at: [<ffffffff823ff490>] __key.51205+0x0/0x8
[ 1136.236081]   ... acquired at:
[ 1136.236081]    [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]    [<ffffffff811ea5ec>] might_fault+0x8c/0xb0
[ 1136.236081]    [<ffffffff81256001>] filldir+0x91/0x120
[ 1136.236081]    [<ffffffffa03084e8>] xfs_dir2_sf_getdents.isra.11+0x208/0x270 [xfs]
[ 1136.236081]    [<ffffffffa03089b6>] xfs_readdir+0x1e6/0x250 [xfs]
[ 1136.236081]    [<ffffffffa030b03b>] xfs_file_readdir+0x2b/0x40 [xfs]
[ 1136.236081]    [<ffffffff81255dee>] iterate_dir+0xae/0x140
[ 1136.236081]    [<ffffffff8125630a>] SyS_getdents+0x9a/0x130
[ 1136.236081]    [<ffffffff817fa9a9>] system_call_fastpath+0x16/0x1b

[ 1136.236081] -> (&xfs_dir_ilock_class){++++-+} ops: 130281 {
[ 1136.236081]    HARDIRQ-ON-W at:
[ 1136.236081]                     [<ffffffff810fd5d0>] __lock_acquire+0x670/0x1ca0
[ 1136.236081]                     [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                     [<ffffffff810f8494>] down_write_nested+0x54/0xd0
[ 1136.236081]                     [<ffffffffa035e1a5>] xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]                     [<ffffffffa0317df5>] xfs_setattr_nonsize+0x225/0x630 [xfs]
[ 1136.236081]                     [<ffffffffa03186a9>] xfs_vn_setattr+0x29/0x70 [xfs]
[ 1136.236081]                     [<ffffffff81260d31>] notify_change+0x241/0x390
[ 1136.236081]                     [<ffffffff8123d6c6>] chmod_common+0x96/0x150
[ 1136.236081]                     [<ffffffff8123efc7>] SyS_fchmodat+0x57/0xc0
[ 1136.236081]                     [<ffffffff817fa9a9>] system_call_fastpath+0x16/0x1b
[ 1136.236081]    HARDIRQ-ON-R at:
[ 1136.236081]                     [<ffffffff810fd4ba>] __lock_acquire+0x55a/0x1ca0
[ 1136.236081]                     [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                     [<ffffffff810f83f7>] down_read_nested+0x57/0xa0
[ 1136.236081]                     [<ffffffffa035e1c2>] xfs_ilock+0xf2/0x1c0 [xfs]
[ 1136.236081]                     [<ffffffffa035e2af>] xfs_ilock_data_map_shared+0x1f/0x40 [xfs]
[ 1136.236081]                     [<ffffffffa035f918>] xfs_lookup+0x108/0x1f0 [xfs]
[ 1136.236081]                     [<ffffffffa0316fbb>] xfs_vn_lookup+0x7b/0xd0 [xfs]
[ 1136.236081]                     [<ffffffff8124a8dd>] lookup_real+0x1d/0x50
[ 1136.236081]                     [<ffffffff8124b092>] __lookup_hash+0x42/0x60
[ 1136.236081]                     [<ffffffff8124ef5e>] lookup_one_len+0xee/0x140
[ 1136.236081]                     [<ffffffffa018f763>] nfsd_lookup_dentry+0x133/0x4c0 [nfsd]
[ 1136.236081]                     [<ffffffffa018fb79>] nfsd_lookup+0x89/0x150 [nfsd]
[ 1136.236081]                     [<ffffffffa019dc6a>] nfsd4_lookup+0x1a/0x20 [nfsd]
[ 1136.236081]                     [<ffffffffa01a0507>] nfsd4_proc_compound+0x4e7/0x800 [nfsd]
[ 1136.236081]                     [<ffffffffa0189edb>] nfsd_dispatch+0xbb/0x200 [nfsd]
[ 1136.236081]                     [<ffffffffa0100ba3>] svc_process_common+0x453/0x6f0 [sunrpc]
[ 1136.236081]                     [<ffffffffa0100f47>] svc_process+0x107/0x170 [sunrpc]
[ 1136.236081]                     [<ffffffffa0189263>] nfsd+0xe3/0x170 [nfsd]
[ 1136.236081]                     [<ffffffff810c710f>] kthread+0xff/0x120
[ 1136.236081]                     [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]    SOFTIRQ-ON-W at:
[ 1136.236081]                     [<ffffffff810fd4eb>] __lock_acquire+0x58b/0x1ca0
[ 1136.236081]                     [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                     [<ffffffff810f8494>] down_write_nested+0x54/0xd0
[ 1136.236081]                     [<ffffffffa035e1a5>] xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]                     [<ffffffffa0317df5>] xfs_setattr_nonsize+0x225/0x630 [xfs]
[ 1136.236081]                     [<ffffffffa03186a9>] xfs_vn_setattr+0x29/0x70 [xfs]
[ 1136.236081]                     [<ffffffff81260d31>] notify_change+0x241/0x390
[ 1136.236081]                     [<ffffffff8123d6c6>] chmod_common+0x96/0x150
[ 1136.236081]                     [<ffffffff8123efc7>] SyS_fchmodat+0x57/0xc0
[ 1136.236081]                     [<ffffffff817fa9a9>] system_call_fastpath+0x16/0x1b
[ 1136.236081]    SOFTIRQ-ON-R at:
[ 1136.236081]                     [<ffffffff810fd4eb>] __lock_acquire+0x58b/0x1ca0
[ 1136.236081]                     [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                     [<ffffffff810f83f7>] down_read_nested+0x57/0xa0
[ 1136.236081]                     [<ffffffffa035e1c2>] xfs_ilock+0xf2/0x1c0 [xfs]
[ 1136.236081]                     [<ffffffffa035e2af>] xfs_ilock_data_map_shared+0x1f/0x40 [xfs]
[ 1136.236081]                     [<ffffffffa035f918>] xfs_lookup+0x108/0x1f0 [xfs]
[ 1136.236081]                     [<ffffffffa0316fbb>] xfs_vn_lookup+0x7b/0xd0 [xfs]
[ 1136.236081]                     [<ffffffff8124a8dd>] lookup_real+0x1d/0x50
[ 1136.236081]                     [<ffffffff8124b092>] __lookup_hash+0x42/0x60
[ 1136.236081]                     [<ffffffff8124ef5e>] lookup_one_len+0xee/0x140
[ 1136.236081]                     [<ffffffffa018f763>] nfsd_lookup_dentry+0x133/0x4c0 [nfsd]
[ 1136.236081]                     [<ffffffffa018fb79>] nfsd_lookup+0x89/0x150 [nfsd]
[ 1136.236081]                     [<ffffffffa019dc6a>] nfsd4_lookup+0x1a/0x20 [nfsd]
[ 1136.236081]                     [<ffffffffa01a0507>] nfsd4_proc_compound+0x4e7/0x800 [nfsd]
[ 1136.236081]                     [<ffffffffa0189edb>] nfsd_dispatch+0xbb/0x200 [nfsd]
[ 1136.236081]                     [<ffffffffa0100ba3>] svc_process_common+0x453/0x6f0 [sunrpc]
[ 1136.236081]                     [<ffffffffa0100f47>] svc_process+0x107/0x170 [sunrpc]
[ 1136.236081]                     [<ffffffffa0189263>] nfsd+0xe3/0x170 [nfsd]
[ 1136.236081]                     [<ffffffff810c710f>] kthread+0xff/0x120
[ 1136.236081]                     [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]    IN-RECLAIM_FS-W at:
[ 1136.236081]                        [<ffffffff810fd44c>] __lock_acquire+0x4ec/0x1ca0
[ 1136.236081]                        [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                        [<ffffffff810f8494>] down_write_nested+0x54/0xd0
[ 1136.236081]                        [<ffffffffa035e1a5>] xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]                        [<ffffffffa0310125>] xfs_reclaim_inode+0x115/0x360 [xfs]
[ 1136.236081]                        [<ffffffffa0310657>] xfs_reclaim_inodes_ag+0x2e7/0x510 [xfs]
[ 1136.236081]                        [<ffffffffa0311aa3>] xfs_reclaim_inodes_nr+0x33/0x40 [xfs]
[ 1136.236081]                        [<ffffffffa031d615>] xfs_fs_free_cached_objects+0x15/0x20 [xfs]
[ 1136.236081]                        [<ffffffff812443dc>] super_cache_scan+0x16c/0x180
[ 1136.236081]                        [<ffffffff811d0b4b>] shrink_slab_node+0x14b/0x430
[ 1136.236081]                        [<ffffffff811d0eee>] shrink_slab+0x8e/0x180
[ 1136.236081]                        [<ffffffff811d3ddd>] kswapd_shrink_zone+0x14d/0x1f0
[ 1136.236081]                        [<ffffffff811d54b1>] balance_pgdat+0x2e1/0x4a0
[ 1136.236081]                        [<ffffffff811d5821>] kswapd+0x1b1/0x640
[ 1136.236081]                        [<ffffffff810c710f>] kthread+0xff/0x120
[ 1136.236081]                        [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]    RECLAIM_FS-ON-R at:
[ 1136.236081]                        [<ffffffff810fc9b5>] mark_held_locks+0x75/0xa0
[ 1136.236081]                        [<ffffffff810ffdea>] lockdep_trace_alloc+0x7a/0xe0
[ 1136.236081]                        [<ffffffff811c6560>] __alloc_pages_nodemask+0xa0/0xcd0
[ 1136.236081]                        [<ffffffff81211995>] alloc_pages_vma+0x105/0x1d0
[ 1136.236081]                        [<ffffffff811ef544>] handle_mm_fault+0xce4/0x10d0
[ 1136.236081]                        [<ffffffff810633d1>] __do_page_fault+0x201/0x5f0
[ 1136.236081]                        [<ffffffff81063827>] trace_do_page_fault+0x37/0x230
[ 1136.236081]                        [<ffffffff8105ed88>] do_async_page_fault+0x28/0xa0
[ 1136.236081]                        [<ffffffff817fcae8>] async_page_fault+0x28/0x30
[ 1136.236081]                        [<ffffffffa030870e>] xfs_dir2_block_getdents.isra.12+0x1be/0x220 [xfs]
[ 1136.236081]                        [<ffffffffa030896f>] xfs_readdir+0x19f/0x250 [xfs]
[ 1136.236081]                        [<ffffffffa030b03b>] xfs_file_readdir+0x2b/0x40 [xfs]
[ 1136.236081]                        [<ffffffff81255dee>] iterate_dir+0xae/0x140
[ 1136.236081]                        [<ffffffff8125630a>] SyS_getdents+0x9a/0x130
[ 1136.236081]                        [<ffffffff817fa9a9>] system_call_fastpath+0x16/0x1b
[ 1136.236081]    INITIAL USE at:
[ 1136.236081]                    [<ffffffff810fd26a>] __lock_acquire+0x30a/0x1ca0
[ 1136.236081]                    [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]                    [<ffffffff810f8494>] down_write_nested+0x54/0xd0
[ 1136.236081]                    [<ffffffffa035e1a5>] xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]                    [<ffffffffa0317df5>] xfs_setattr_nonsize+0x225/0x630 [xfs]
[ 1136.236081]                    [<ffffffffa03186a9>] xfs_vn_setattr+0x29/0x70 [xfs]
[ 1136.236081]                    [<ffffffff81260d31>] notify_change+0x241/0x390
[ 1136.236081]                    [<ffffffff8123d6c6>] chmod_common+0x96/0x150
[ 1136.236081]                    [<ffffffff8123efc7>] SyS_fchmodat+0x57/0xc0
[ 1136.236081]                    [<ffffffff817fa9a9>] system_call_fastpath+0x16/0x1b
[ 1136.236081]  }
[ 1136.236081]  ... key      at: [<ffffffffa03bcc68>] xfs_dir_ilock_class+0x0/0xfffffffffffcf398 [xfs]
[ 1136.236081]  ... acquired at:
[ 1136.236081]    [<ffffffff810fbfca>] check_usage_forwards+0x16a/0x180
[ 1136.236081]    [<ffffffff810fc837>] mark_lock+0x1a7/0x2b0
[ 1136.236081]    [<ffffffff810fd44c>] __lock_acquire+0x4ec/0x1ca0
[ 1136.236081]    [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]    [<ffffffff810f8494>] down_write_nested+0x54/0xd0
[ 1136.236081]    [<ffffffffa035e1a5>] xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]    [<ffffffffa0310125>] xfs_reclaim_inode+0x115/0x360 [xfs]
[ 1136.236081]    [<ffffffffa0310657>] xfs_reclaim_inodes_ag+0x2e7/0x510 [xfs]
[ 1136.236081]    [<ffffffffa0311aa3>] xfs_reclaim_inodes_nr+0x33/0x40 [xfs]
[ 1136.236081]    [<ffffffffa031d615>] xfs_fs_free_cached_objects+0x15/0x20 [xfs]
[ 1136.236081]    [<ffffffff812443dc>] super_cache_scan+0x16c/0x180
[ 1136.236081]    [<ffffffff811d0b4b>] shrink_slab_node+0x14b/0x430
[ 1136.236081]    [<ffffffff811d0eee>] shrink_slab+0x8e/0x180
[ 1136.236081]    [<ffffffff811d3ddd>] kswapd_shrink_zone+0x14d/0x1f0
[ 1136.236081]    [<ffffffff811d54b1>] balance_pgdat+0x2e1/0x4a0
[ 1136.236081]    [<ffffffff811d5821>] kswapd+0x1b1/0x640
[ 1136.236081]    [<ffffffff810c710f>] kthread+0xff/0x120
[ 1136.236081]    [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0

[ 1136.236081] 
stack backtrace:
[ 1136.236081] CPU: 2 PID: 53 Comm: kswapd0 Tainted: G           OE 3.16.0-rc2.jlayton.2+ #9
[ 1136.236081] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[ 1136.236081]  0000000000000000 0000000044b6ed70 ffff8801186fb5e8 ffffffff817f06ad
[ 1136.236081]  ffffffff82fbb100 ffff8801186fb628 ffffffff817eb75c ffffffff81c62438
[ 1136.236081]  0000000000000000 ffff8801186f0c10 ffff8801186f0000 ffffffff81c62438
[ 1136.236081] Call Trace:
[ 1136.236081]  [<ffffffff817f06ad>] dump_stack+0x4d/0x66
[ 1136.236081]  [<ffffffff817eb75c>] print_irq_inversion_bug.part.42+0x1ac/0x1b8
[ 1136.236081]  [<ffffffff810fbfca>] check_usage_forwards+0x16a/0x180
[ 1136.236081]  [<ffffffff810fbe60>] ? check_usage_backwards+0x180/0x180
[ 1136.236081]  [<ffffffff810fc837>] mark_lock+0x1a7/0x2b0
[ 1136.236081]  [<ffffffff810fd44c>] __lock_acquire+0x4ec/0x1ca0
[ 1136.236081]  [<ffffffff810fcae5>] ? trace_hardirqs_on_caller+0x105/0x1d0
[ 1136.236081]  [<ffffffff810fcbbd>] ? trace_hardirqs_on+0xd/0x10
[ 1136.236081]  [<ffffffff810ff3f2>] lock_acquire+0xa2/0x1d0
[ 1136.236081]  [<ffffffffa035e1a5>] ? xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]  [<ffffffffa0310125>] ? xfs_reclaim_inode+0x115/0x360 [xfs]
[ 1136.236081]  [<ffffffff810f8494>] down_write_nested+0x54/0xd0
[ 1136.236081]  [<ffffffffa035e1a5>] ? xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]  [<ffffffffa035e1a5>] xfs_ilock+0xd5/0x1c0 [xfs]
[ 1136.236081]  [<ffffffffa0310125>] xfs_reclaim_inode+0x115/0x360 [xfs]
[ 1136.236081]  [<ffffffffa0310657>] xfs_reclaim_inodes_ag+0x2e7/0x510 [xfs]
[ 1136.236081]  [<ffffffffa0310468>] ? xfs_reclaim_inodes_ag+0xf8/0x510 [xfs]
[ 1136.236081]  [<ffffffff810fc9b5>] ? mark_held_locks+0x75/0xa0
[ 1136.236081]  [<ffffffff817f9ba6>] ? _raw_spin_unlock_irqrestore+0x36/0x70
[ 1136.236081]  [<ffffffff810fcae5>] ? trace_hardirqs_on_caller+0x105/0x1d0
[ 1136.236081]  [<ffffffff810fcbbd>] ? trace_hardirqs_on+0xd/0x10
[ 1136.236081]  [<ffffffff810dbad3>] ? try_to_wake_up+0x103/0x3e0
[ 1136.236081]  [<ffffffff810dbdd3>] ? wake_up_process+0x23/0x40
[ 1136.236081]  [<ffffffffa0311aa3>] xfs_reclaim_inodes_nr+0x33/0x40 [xfs]
[ 1136.236081]  [<ffffffffa031d615>] xfs_fs_free_cached_objects+0x15/0x20 [xfs]
[ 1136.236081]  [<ffffffff812443dc>] super_cache_scan+0x16c/0x180
[ 1136.236081]  [<ffffffff811d0b4b>] shrink_slab_node+0x14b/0x430
[ 1136.236081]  [<ffffffff811d0e9f>] ? shrink_slab+0x3f/0x180
[ 1136.236081]  [<ffffffff811d0eee>] shrink_slab+0x8e/0x180
[ 1136.236081]  [<ffffffff811d3ddd>] kswapd_shrink_zone+0x14d/0x1f0
[ 1136.236081]  [<ffffffff811d54b1>] balance_pgdat+0x2e1/0x4a0
[ 1136.236081]  [<ffffffff811d5821>] kswapd+0x1b1/0x640
[ 1136.236081]  [<ffffffff810f2f20>] ? abort_exclusive_wait+0xb0/0xb0
[ 1136.236081]  [<ffffffff811d5670>] ? balance_pgdat+0x4a0/0x4a0
[ 1136.236081]  [<ffffffff810c710f>] kthread+0xff/0x120
[ 1136.236081]  [<ffffffff810c7010>] ? insert_kthread_work+0x80/0x80
[ 1136.236081]  [<ffffffff817fa8fc>] ret_from_fork+0x7c/0xb0
[ 1136.236081]  [<ffffffff810c7010>] ? insert_kthread_work+0x80/0x80


-- 
Jeff Layton <jlayton@primarydata.com>

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: xfs: possible irq lock inversion dependency detected
  2014-06-26 18:20 xfs: possible irq lock inversion dependency detected Jeff Layton
@ 2014-06-26 22:58 ` Dave Chinner
  2014-06-26 23:03   ` Jeff Layton
  0 siblings, 1 reply; 3+ messages in thread
From: Dave Chinner @ 2014-06-26 22:58 UTC (permalink / raw)
  To: Jeff Layton; +Cc: linux-fsdevel, xfs

On Thu, Jun 26, 2014 at 02:20:04PM -0400, Jeff Layton wrote:
> While testing some knfsd patches on XFS today, I got this lockdep
> splatter. The kernel is a stock -rc2 kernel with a pile of knfsd
> patches on top. There are a couple of others in other areas, but
> nothing that would affect this.
> 
> Nothing crashed or seems to be hung, so I'm not sure if it's a real
> problem or not...

Known false positive. the problem is that lockdep is too stupid to
realise you can't mmap a directory inode, but it sees unused
directory inodes from memory reclaim in page faults (i.e. under the
mmap_sem) and so therefore thinks that taking a page fault in
readdir() while holding a directory inode lock on a referenced
directory inode will deadlock....

Teaching lockdep the intricacies of locking heirarchies is difficult
and painful. Fixing this one (and all the other stupidities lockdep
reports because of this) can't be done through annotations - it
requires rewriting a bunch of directory code to use different locks.
And, well, it ain't actually broken right now and there's other more
important issues to be fixed, so unless someone else beats me to
rewriting the readdir readahead code, lockdep is going to remain
unhappy about XFS.

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: xfs: possible irq lock inversion dependency detected
  2014-06-26 22:58 ` Dave Chinner
@ 2014-06-26 23:03   ` Jeff Layton
  0 siblings, 0 replies; 3+ messages in thread
From: Jeff Layton @ 2014-06-26 23:03 UTC (permalink / raw)
  To: Dave Chinner; +Cc: linux-fsdevel, Jeff Layton, xfs

On Fri, 27 Jun 2014 08:58:57 +1000
Dave Chinner <david@fromorbit.com> wrote:

> On Thu, Jun 26, 2014 at 02:20:04PM -0400, Jeff Layton wrote:
> > While testing some knfsd patches on XFS today, I got this lockdep
> > splatter. The kernel is a stock -rc2 kernel with a pile of knfsd
> > patches on top. There are a couple of others in other areas, but
> > nothing that would affect this.
> > 
> > Nothing crashed or seems to be hung, so I'm not sure if it's a real
> > problem or not...
> 
> Known false positive. the problem is that lockdep is too stupid to
> realise you can't mmap a directory inode, but it sees unused
> directory inodes from memory reclaim in page faults (i.e. under the
> mmap_sem) and so therefore thinks that taking a page fault in
> readdir() while holding a directory inode lock on a referenced
> directory inode will deadlock....
> 
> Teaching lockdep the intricacies of locking heirarchies is difficult
> and painful. Fixing this one (and all the other stupidities lockdep
> reports because of this) can't be done through annotations - it
> requires rewriting a bunch of directory code to use different locks.
> And, well, it ain't actually broken right now and there's other more
> important issues to be fixed, so unless someone else beats me to
> rewriting the readdir readahead code, lockdep is going to remain
> unhappy about XFS.
> 
> Cheers,
> 
> Dave.

No problem. Just figured I'd report it in case it were something new.
I'll just keep ignoring it.

Thanks!
-- 
Jeff Layton <jlayton@primarydata.com>

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-06-26 23:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-26 18:20 xfs: possible irq lock inversion dependency detected Jeff Layton
2014-06-26 22:58 ` Dave Chinner
2014-06-26 23:03   ` Jeff Layton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox