[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20161020180400.GA2172@localhost.localdomain>
Date: Thu, 20 Oct 2016 14:04:00 -0400
From: Eric Whitney <enwlinux@...il.com>
To: linux-ext4@...r.kernel.org
Cc: jack@...e.cz, tytso@....edu
Subject: generic/095 triggers lockdep warning in 4.9-rc1
As reported in today's concall, generic/095 triggered a lockdep warning
during my regression run on a 4.9-rc1 kernel in the 4k test case using the
latest xfstests-bld test appliance. The warning is attached below, and
involves both ext4's direct I/O path and the quota code.
This failure is difficult to reproduce - 120 out of 120 subsequent trials in
the 4k test case completed successfully. No generic/095 failures occurred in
any other test appliance test case during regression. Also, I've not seen
this particular failure in regression runs prior to 4.9-rc1.
Eric
generic/095 [16:41:05][ 542.526101] run fstests generic/095 at 2016-10-17 16:41:05
[ 543.567531]
[ 543.567659] ======================================================
[ 543.568053] [ INFO: possible circular locking dependency detected ]
[ 543.568457] 4.9.0-rc1 #1 Not tainted
[ 543.568687] -------------------------------------------------------
[ 543.569095] fio/3576 is trying to acquire lock:
[ 543.569372] ([ 543.569466] &mm->mmap_sem
){++++++}[ 543.569934] , at:
[ 543.570191] [<ffffffff8120938f>] get_user_pages_unlocked+0x5f/0x1e0
[ 543.570549]
[ 543.570549] but task is already holding lock:
[ 543.570737] ([ 543.570737] &sb->s_type->i_mutex_key
#11[ 543.570737] ){++++++}
, at: [ 543.570737] [<ffffffff812f6be0>] ext4_direct_IO+0x140/0x740
[ 543.570737]
[ 543.570737] which lock already depends on the new lock.
[ 543.570737]
[ 543.570737]
[ 543.570737] the existing dependency chain (in reverse order) is:
[ 543.570737]
-> #3[ 543.570737] (
&sb->s_type->i_mutex_key[ 543.570737] #11
){++++++}[ 543.570737] :
[ 543.570737] [ 543.570737] [<ffffffff811192b9>] lock_acquire+0xf9/0x1e0
[ 543.570737] [ 543.570737] [<ffffffff817a9a26>] down_write+0x36/0x70
[ 543.570737] [ 543.570737] [<ffffffff812c2d75>] vfs_load_quota_inode+0x475/0x580
[ 543.570737] [ 543.570737] [<ffffffff812c3308>] dquot_quota_on+0x58/0x60
[ 543.570737] [ 543.570737] [<ffffffff813119f2>] ext4_quota_on+0x122/0x1c0
[ 543.570737] [ 543.570737] [<ffffffff812c79c5>] SyS_quotactl+0x6a5/0x890
[ 543.570737] [ 543.570737] [<ffffffff81002e50>] do_syscall_64+0x70/0x3d0
[ 543.570737] [ 543.570737] [<ffffffff817acdc9>] return_from_SYSCALL_64+0x0/0x7a
[ 543.570737]
-> #2[ 543.570737] (
&s->s_dquot.dqonoff_mutex[ 543.570737] ){+.+...}
[ 543.570737] :
[ 543.570737] [ 543.570737] [<ffffffff811192b9>] lock_acquire+0xf9/0x1e0
[ 543.570737] [ 543.570737] [<ffffffff817a771f>] mutex_lock_nested+0x4f/0x390
[ 543.570737] [ 543.578945] [<ffffffff812c11c8>] dquot_writeback_dquots+0x38/0x290
[ 543.578945] [ 543.578945] [<ffffffff8130b8bd>] ext4_sync_fs+0x5d/0x270
[ 543.578945] [ 543.578945] [<ffffffff8128c1b2>] sync_filesystem+0x42/0xa0
[ 543.578945] [ 543.578945] [<ffffffff81255aba>] freeze_super+0xaa/0x190
[ 543.578945] [ 543.578945] [<ffffffff812691e3>] do_vfs_ioctl+0x533/0x6a0
[ 543.578945] [ 543.578945] [<ffffffff812693c9>] SyS_ioctl+0x79/0x90
[ 543.578945] [ 543.578945] [<ffffffff81002e50>] do_syscall_64+0x70/0x3d0
[ 543.578945] [ 543.578945] [<ffffffff817acdc9>] return_from_SYSCALL_64+0x0/0x7a
[ 543.578945]
-> #1[ 543.578945] (
sb_pagefaults[ 543.582788] ){++++..}
[ 543.582788] :
[ 543.582788] [ 543.582788] [<ffffffff811192b9>] lock_acquire+0xf9/0x1e0
[ 543.582788] [ 543.582788] [<ffffffff81256199>] __sb_start_write+0x119/0x1d0
[ 543.582788] [ 543.582788] [<ffffffff812f8bb1>] ext4_page_mkwrite+0x51/0x450
[ 543.582788] [ 543.582788] [<ffffffff81209f65>] do_page_mkwrite+0x65/0xc0
[ 543.582788] [ 543.582788] [<ffffffff8120f15e>] handle_mm_fault+0x5ce/0xf50
[ 543.582788] [ 543.582788] [<ffffffff810a9e82>] __do_page_fault+0x222/0x4f0
[ 543.582788] [ 543.582788] [<ffffffff810aa22d>] trace_do_page_fault+0x5d/0x290
[ 543.582788] [ 543.582788] [<ffffffff810a505a>] do_async_page_fault+0x1a/0xa0
[ 543.582788] [ 543.582788] [<ffffffff817ade88>] async_page_fault+0x28/0x30
[ 543.582788]
-> #0[ 543.582788] (
&mm->mmap_sem[ 543.582788] ){++++++}
[ 543.582788] :
[ 543.582788] [ 543.582788] [<ffffffff81118ba6>] __lock_acquire+0x1406/0x1680
[ 543.582788] [ 543.582788] [<ffffffff811192b9>] lock_acquire+0xf9/0x1e0
[ 543.582788] [ 543.582788] [<ffffffff817a99c9>] down_read+0x39/0x60
[ 543.582788] [ 543.582788] [<ffffffff8120938f>] get_user_pages_unlocked+0x5f/0x1e0
[ 543.582788] [ 543.582788] [<ffffffff810b0969>] get_user_pages_fast+0x79/0x160
[ 543.582788] [ 543.582788] [<ffffffff813ea665>] iov_iter_get_pages+0xb5/0x2b0
[ 543.582788] [ 543.582788] [<ffffffff81298f4e>] do_blockdev_direct_IO+0x1e1e/0x26f0
[ 543.582788] [ 543.582788] [<ffffffff8129985a>] __blockdev_direct_IO+0x3a/0x40
[ 543.582788] [ 543.582788] [<ffffffff812f6c33>] ext4_direct_IO+0x193/0x740
[ 543.582788] [ 543.582788] [<ffffffff811d985b>] generic_file_read_iter+0x3cb/0x730
[ 543.582788] [ 543.582788] [<ffffffff8125264d>] __vfs_read+0xbd/0x110
[ 543.582788] [ 543.582788] [<ffffffff81252d43>] vfs_read+0x93/0x130
[ 543.582788] [ 543.582788] [<ffffffff81254169>] SyS_read+0x49/0xa0
[ 543.582788] [ 543.582788] [<ffffffff81002e50>] do_syscall_64+0x70/0x3d0
[ 543.582788] [ 543.582788] [<ffffffff817acdc9>] return_from_SYSCALL_64+0x0/0x7a
[ 543.582788]
[ 543.582788] other info that might help us debug this:
[ 543.582788]
[ 543.582788] Chain exists of:
[ 543.582788] &mm->mmap_sem
--> [ 543.582788] &s->s_dquot.dqonoff_mutex
--> [ 543.582788] &sb->s_type->i_mutex_key
#11[ 543.582788]
[ 543.582788]
[ 543.582788] Possible unsafe locking scenario:
[ 543.582788]
[ 543.582788] CPU0 CPU1
[ 543.582788] ---- ----
[ 543.582788] lock([ 543.582788] &sb->s_type->i_mutex_key
#11[ 543.582788] );
[ 543.582788] lock([ 543.582788] &s->s_dquot.dqonoff_mutex
[ 543.582788] );
[ 543.582788] lock([ 543.582788] &sb->s_type->i_mutex_key
#11[ 543.582788] );
[ 543.582788] lock([ 543.582788] &mm->mmap_sem
[ 543.582788] );
[ 543.582788]
[ 543.582788] *** DEADLOCK ***
[ 543.582788]
[ 543.582788] 1 lock held by fio/3576:
[ 543.582788] #0: [ 543.582788] (
&sb->s_type->i_mutex_key[ 543.582788] #11
){++++++}[ 543.582788] , at:
[ 543.582788] [<ffffffff812f6be0>] ext4_direct_IO+0x140/0x740
[ 543.582788]
[ 543.582788] stack backtrace:
[ 543.582788] CPU: 1 PID: 3576 Comm: fio Not tainted 4.9.0-rc1 #1
[ 543.582788] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014
[ 543.582788] ffffc900037db800 ffffffff813d7a13 ffffffff825d38c0 ffffffff825e8da0
[ 543.582788] ffffc900037db840 ffffffff81115fcf ffffc900037db8b0 ffff88007a2ea480
[ 543.582788] ffff88007a2ead00 ffff88007a2eacd8 0000000000000001 0000000000000001
[ 543.582788] Call Trace:
[ 543.582788] [<ffffffff813d7a13>] dump_stack+0x85/0xc2
[ 543.582788] [<ffffffff81115fcf>] print_circular_bug+0x1cf/0x230
[ 543.582788] [<ffffffff81118ba6>] __lock_acquire+0x1406/0x1680
[ 543.582788] [<ffffffff811192b9>] lock_acquire+0xf9/0x1e0
[ 543.582788] [<ffffffff8120938f>] ? get_user_pages_unlocked+0x5f/0x1e0
[ 543.582788] [<ffffffff817a99c9>] down_read+0x39/0x60
[ 543.582788] [<ffffffff8120938f>] ? get_user_pages_unlocked+0x5f/0x1e0
[ 543.582788] [<ffffffff8120938f>] get_user_pages_unlocked+0x5f/0x1e0
[ 543.582788] [<ffffffff8111723d>] ? mark_held_locks+0x6d/0x90
[ 543.582788] [<ffffffff810b0969>] get_user_pages_fast+0x79/0x160
[ 543.582788] [<ffffffff813ea665>] iov_iter_get_pages+0xb5/0x2b0
[ 543.582788] [<ffffffff81298f4e>] do_blockdev_direct_IO+0x1e1e/0x26f0
[ 543.582788] [<ffffffff8118d38d>] ? delayacct_end+0x5d/0x70
[ 543.582788] [<ffffffff817a55bd>] ? io_schedule_timeout+0xfd/0x140
[ 543.582788] [<ffffffff812f1780>] ? ext4_dio_get_block_unwritten_sync+0x90/0x90
[ 543.582788] [<ffffffff812f1780>] ? ext4_dio_get_block_unwritten_sync+0x90/0x90
[ 543.582788] [<ffffffff8129985a>] __blockdev_direct_IO+0x3a/0x40
[ 543.582788] [<ffffffff812f6c33>] ext4_direct_IO+0x193/0x740
[ 543.582788] [<ffffffff81274944>] ? __atime_needs_update+0x74/0x180
[ 543.582788] [<ffffffff811d985b>] generic_file_read_iter+0x3cb/0x730
[ 543.582788] [<ffffffff8125264d>] __vfs_read+0xbd/0x110
[ 543.582788] [<ffffffff81252d43>] vfs_read+0x93/0x130
[ 543.582788] [<ffffffff81254169>] SyS_read+0x49/0xa0
[ 543.582788] [<ffffffff81002e50>] do_syscall_64+0x70/0x3d0
[ 543.582788] [<ffffffff817acdc9>] entry_SYSCALL64_slow_path+0x25/0x25
[16:41:13] [failed, exit status 1] - output mismatch (see /results/ext4/results-4k/generic/095.out.bad)
--- tests/generic/095.out 2016-09-05 18:22:48.000000000 +0000
+++ /results/ext4/results-4k/generic/095.out.bad 2016-10-17 16:41:13.311594618 +0000
@@ -1,2 +1,3 @@
QA output created by 095
Silence is golden
+_check_dmesg: something found in dmesg (see /results/ext4/results-4k/generic/095.dmesg)
...
(Run 'diff -u tests/generic/095.out /results/ext4/results-4k/generic/095.out.bad' to see the entire diff)
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists