From: Dave Jones <davej@redhat.com>
To: Linux Kernel <linux-kernel@vger.kernel.org>
Cc: xfs@oss.sgi.com
Subject: xfs i_lock vs mmap_sem lockdep trace.
Date: Sat, 29 Mar 2014 18:31:09 -0400 [thread overview]
Message-ID: <20140329223109.GA24098@redhat.com> (raw)
Not sure if I've reported this already (it looks familiar, though I've not managed
to find it in my sent mail folder). This is rc8 + a diff to fix the stack usage reports
I was seeing (diff at http://paste.fedoraproject.org/89854/13210913/raw)
======================================================
[ INFO: possible circular locking dependency detected ]
3.14.0-rc8+ #153 Not tainted
-------------------------------------------------------
git/32710 is trying to acquire lock:
(&(&ip->i_lock)->mr_lock){++++.+}, at: [<ffffffffc03bd782>] xfs_ilock+0x122/0x250 [xfs]
but task is already holding lock:
(&mm->mmap_sem){++++++}, at: [<ffffffffae7b816a>] __do_page_fault+0x14a/0x610
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&mm->mmap_sem){++++++}:
[<ffffffffae0d1951>] lock_acquire+0x91/0x1c0
[<ffffffffae1a66dc>] might_fault+0x8c/0xb0
[<ffffffffae2016e1>] filldir+0x91/0x120
[<ffffffffc0359622>] xfs_dir2_leaf_getdents+0x332/0x450 [xfs]
[<ffffffffc035993e>] xfs_readdir+0x1fe/0x260 [xfs]
[<ffffffffc035c2ab>] xfs_file_readdir+0x2b/0x40 [xfs]
[<ffffffffae201528>] iterate_dir+0xa8/0xe0
[<ffffffffae2019ea>] SyS_getdents+0x9a/0x130
[<ffffffffae7bda64>] tracesys+0xdd/0xe2
-> #0 (&(&ip->i_lock)->mr_lock){++++.+}:
[<ffffffffae0d0dee>] __lock_acquire+0x181e/0x1bd0
[<ffffffffae0d1951>] lock_acquire+0x91/0x1c0
[<ffffffffae0ca852>] down_read_nested+0x52/0xa0
[<ffffffffc03bd782>] xfs_ilock+0x122/0x250 [xfs]
[<ffffffffc03bd8cf>] xfs_ilock_data_map_shared+0x1f/0x40 [xfs]
[<ffffffffc034dca7>] __xfs_get_blocks+0xc7/0x840 [xfs]
[<ffffffffc034e431>] xfs_get_blocks+0x11/0x20 [xfs]
[<ffffffffae2347a8>] do_mpage_readpage+0x4a8/0x6f0
[<ffffffffae234adb>] mpage_readpages+0xeb/0x160
[<ffffffffc034b62d>] xfs_vm_readpages+0x1d/0x20 [xfs]
[<ffffffffae188a6a>] __do_page_cache_readahead+0x2ea/0x390
[<ffffffffae1891e1>] ra_submit+0x21/0x30
[<ffffffffae17c085>] filemap_fault+0x395/0x420
[<ffffffffae1a684f>] __do_fault+0x7f/0x570
[<ffffffffae1aa6e7>] handle_mm_fault+0x217/0xc40
[<ffffffffae7b81ce>] __do_page_fault+0x1ae/0x610
[<ffffffffae7b864e>] do_page_fault+0x1e/0x70
[<ffffffffae7b4fd2>] page_fault+0x22/0x30
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&mm->mmap_sem);
lock(&(&ip->i_lock)->mr_lock);
lock(&mm->mmap_sem);
lock(&(&ip->i_lock)->mr_lock);
*** DEADLOCK ***
1 lock held by git/32710:
#0: (&mm->mmap_sem){++++++}, at: [<ffffffffae7b816a>] __do_page_fault+0x14a/0x610
stack backtrace:
CPU: 1 PID: 32710 Comm: git Not tainted 3.14.0-rc8+ #153
ffffffffaf69e650 000000005bc802c5 ffff88006bc9f768 ffffffffae7a8da2
ffffffffaf69e650 ffff88006bc9f7a8 ffffffffae7a4e66 ffff88006bc9f800
ffff880069c3dc30 0000000000000000 ffff880069c3dbf8 ffff880069c3dc30
Call Trace:
[<ffffffffae7a8da2>] dump_stack+0x4e/0x7a
[<ffffffffae7a4e66>] print_circular_bug+0x201/0x20f
[<ffffffffae0d0dee>] __lock_acquire+0x181e/0x1bd0
[<ffffffffae0d1951>] lock_acquire+0x91/0x1c0
[<ffffffffc03bd782>] ? xfs_ilock+0x122/0x250 [xfs]
[<ffffffffc03bd8cf>] ? xfs_ilock_data_map_shared+0x1f/0x40 [xfs]
[<ffffffffae0ca852>] down_read_nested+0x52/0xa0
[<ffffffffc03bd782>] ? xfs_ilock+0x122/0x250 [xfs]
[<ffffffffc03bd782>] xfs_ilock+0x122/0x250 [xfs]
[<ffffffffc03bd8cf>] xfs_ilock_data_map_shared+0x1f/0x40 [xfs]
[<ffffffffc034dca7>] __xfs_get_blocks+0xc7/0x840 [xfs]
[<ffffffffae18481c>] ? __alloc_pages_nodemask+0x1ac/0xbb0
[<ffffffffc034e431>] xfs_get_blocks+0x11/0x20 [xfs]
[<ffffffffae2347a8>] do_mpage_readpage+0x4a8/0x6f0
[<ffffffffc034e420>] ? __xfs_get_blocks+0x840/0x840 [xfs]
[<ffffffffae0ae61d>] ? get_parent_ip+0xd/0x50
[<ffffffffae7b8e0b>] ? preempt_count_sub+0x6b/0xf0
[<ffffffffae18acc5>] ? __lru_cache_add+0x65/0xc0
[<ffffffffae234adb>] mpage_readpages+0xeb/0x160
[<ffffffffc034e420>] ? __xfs_get_blocks+0x840/0x840 [xfs]
[<ffffffffc034e420>] ? __xfs_get_blocks+0x840/0x840 [xfs]
[<ffffffffae1cb256>] ? alloc_pages_current+0x106/0x1f0
[<ffffffffc034b62d>] xfs_vm_readpages+0x1d/0x20 [xfs]
[<ffffffffae188a6a>] __do_page_cache_readahead+0x2ea/0x390
[<ffffffffae1888a0>] ? __do_page_cache_readahead+0x120/0x390
[<ffffffffae1891e1>] ra_submit+0x21/0x30
[<ffffffffae17c085>] filemap_fault+0x395/0x420
[<ffffffffae1a684f>] __do_fault+0x7f/0x570
[<ffffffffae1aa6e7>] handle_mm_fault+0x217/0xc40
[<ffffffffae0cbd27>] ? __lock_is_held+0x57/0x80
[<ffffffffae7b81ce>] __do_page_fault+0x1ae/0x610
[<ffffffffae0cbdae>] ? put_lock_stats.isra.28+0xe/0x30
[<ffffffffae0cc706>] ? lock_release_holdtime.part.29+0xe6/0x160
[<ffffffffae0ae61d>] ? get_parent_ip+0xd/0x50
[<ffffffffae17880f>] ? context_tracking_user_exit+0x5f/0x190
[<ffffffffae7b864e>] do_page_fault+0x1e/0x70
[<ffffffffae7b4fd2>] page_fault+0x22/0x30
next reply other threads:[~2014-03-29 22:31 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-29 22:31 Dave Jones [this message]
2014-03-30 23:43 ` xfs i_lock vs mmap_sem lockdep trace Dave Chinner
2014-03-30 23:57 ` Al Viro
2014-03-31 0:40 ` Dave Chinner
2014-04-08 20:40 ` Sasha Levin
2014-04-10 22:52 ` Dave Chinner
2014-03-31 0:20 ` Dave Jones
2014-03-31 0:42 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140329223109.GA24098@redhat.com \
--to=davej@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox