[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20150306234346.GG3556@wfg-t540p.sh.intel.com>
Date: Sat, 7 Mar 2015 07:43:46 +0800
From: Fengguang Wu <fengguang.wu@...el.com>
To: David Howells <dhowells@...hat.com>
Cc: fengguang.wu@...el.com, LKP <lkp@...org>,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [VFS] WARNING: CPU: 0 PID: 98 at fs/dcache.c:450 d_lru_shrink_move()
Hi David,
FYI, this is another warning type.
git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs file-pin-devel
commit 692ddb6c6808db7b70678b4cc3332781625c65f8
Author: David Howells <dhowells@...hat.com>
AuthorDate: Thu Mar 5 14:09:22 2015 +0000
Commit: David Howells <dhowells@...hat.com>
CommitDate: Fri Mar 6 15:25:07 2015 +0000
VFS: Impose ordering on accesses of d_inode and d_flags
Impose ordering on accesses of d_inode and d_flags to avoid the need to do
this:
if (!dentry->d_inode || d_is_negative(dentry)) {
when this:
if (d_is_negative(dentry)) {
should suffice.
This check is especially problematic if a dentry can have its type field set
to something other than DENTRY_MISS_TYPE when d_inode is NULL (as in
unionmount).
What we really need to do is stick a write barrier between setting d_inode and
setting d_flags and a read barrier between reading d_flags and reading
d_inode.
Signed-off-by: David Howells <dhowells@...hat.com>
+------------------------------------------------+------------+------------+------------+
| | 1dc0c0acc4 | 692ddb6c68 | 44a96f6567 |
+------------------------------------------------+------------+------------+------------+
| boot_successes | 1196 | 211 | 0 |
| boot_failures | 4 | 89 | 12 |
| BUG:kernel_boot_crashed | 4 | 3 | |
| WARNING:at_fs/dcache.c:#d_lru_shrink_move() | 0 | 86 | 12 |
| WARNING:at_fs/dcache.c:#shrink_dentry_list() | 0 | 86 | 12 |
| WARNING:at_fs/dcache.c:#dput() | 0 | 86 | 12 |
| BUG:kernel_test_hang | 0 | 53 | 3 |
| backtrace:do_mount | 0 | 86 | 12 |
| backtrace:SyS_mount | 0 | 86 | 12 |
| backtrace:do_unlinkat | 0 | 86 | 12 |
| backtrace:SyS_unlink | 0 | 86 | 12 |
| BUG:unable_to_handle_kernel | 0 | 27 | 5 |
| Oops | 0 | 27 | 5 |
| EIP_is_at__lock_acquire | 0 | 27 | 5 |
| Kernel_panic-not_syncing:Fatal_exception | 0 | 27 | 5 |
| EIP_is_at_ftrace_likely_update | 0 | 3 | |
| Kernel_panic-not_syncing:softlockup:hung_tasks | 0 | 6 | 4 |
| EIP_is_at_delay_tsc | 0 | 2 | |
| EIP_is_at_do_raw_spin_lock | 0 | 1 | |
| EIP_is_at_paravirt_read_tsc | 0 | 0 | 1 |
| EIP_is_at_do_raw_spin_unlock | 0 | 0 | 1 |
| EIP_is_at_raw_spin_unlock | 0 | 0 | 1 |
| EIP_is_at_check_preemption_disabled | 0 | 0 | 1 |
+------------------------------------------------+------------+------------+------------+
Starting Bootlog daemon: bootlogd: cannot find console device 4:64 under /dev
bootlogd.
[ 6.712498] ------------[ cut here ]------------
[ 6.713055] WARNING: CPU: 0 PID: 98 at fs/dcache.c:450 d_lru_shrink_move+0x6a/0xb1()
[ 6.714164] Modules linked in:
[ 6.714567] CPU: 0 PID: 98 Comm: mount Not tainted 4.0.0-rc1-00164-g692ddb6 #6
[ 6.715437] 00000000 00000000 cf949e68 c9ee5008 00000000 00000000 cf949e84 c9c3a9bb
[ 6.716561] 000001c2 c9d23284 d09b5f01 d09b5f40 00000001 cf949e94 c9c3aa45 00000009
[ 6.717662] 00000000 cf949eb4 c9d23284 cf949f14 c0148120 00000001 d09b5fcc d09b5f98
[ 6.718815] Call Trace:
[ 6.719150] [<c9ee5008>] dump_stack+0x4a/0x99
[ 6.735286] [<c9c3a9bb>] warn_slowpath_common+0x89/0xa0
[ 6.735861] [<c9d23284>] ? d_lru_shrink_move+0x6a/0xb1
[ 6.736461] [<c9c3aa45>] warn_slowpath_null+0x14/0x18
[ 6.737024] [<c9d23284>] d_lru_shrink_move+0x6a/0xb1
[ 6.737659] [<c9d2340e>] dentry_lru_isolate_shrink+0x2d/0x42
[ 6.738421] [<c9d233e1>] ? dentry_lru_isolate+0x116/0x116
[ 6.739140] [<c9cedb93>] __list_lru_walk_one+0x5f/0xf0
[ 6.739873] [<c9d233e1>] ? dentry_lru_isolate+0x116/0x116
[ 6.740573] [<c9cedc4f>] list_lru_walk_node+0x13/0x15
[ 6.741211] [<c9d2473d>] shrink_dcache_sb+0x37/0x57
[ 6.741829] [<c9d15544>] do_remount_sb+0x43/0x133
[ 6.761547] [<c9d2ca5c>] do_mount+0x286/0x7b6
[ 6.762134] [<c9d2d19a>] SyS_mount+0x71/0x97
[ 6.762709] [<c9eeb43e>] syscall_call+0x7/0x7
[ 6.763286] ---[ end trace 89f8c9a7dc385d41 ]---
[ 6.764346] ------------[ cut here ]------------
git bisect start 44a96f6567c25a2afcde6ceef6bbc48781d359ec 13a7a6ac0a11197edcd0f756a035f472b42cdf8b --
git bisect bad b1c25bc14556efcdb7ffbc1cafbc16ef6249952f # 00:53 14- 3 Merge 'dhowells-fs/file-pin' into devel-roam-rand-201503070003
git bisect good 269872b9c3258d66c0a87fc8f541b86aaa23497e # 00:58 66+ 0 0day base guard for 'devel-roam-rand-201503070003'
git bisect bad f0386755652a0bef81e2980e0ba7147094383d7b # 02:03 64- 2 VFS: (Scripted) Convert ->d_inode to d_inode() in fs/ncpfs/
git bisect bad eed88f7305fd820023b18f62275b5a9d072ce81c # 02:08 21- 1 VFS: (Scripted) Convert ->d_inode to d_inode() in fs/coda/
git bisect bad 692ddb6c6808db7b70678b4cc3332781625c65f8 # 02:11 15- 3 VFS: Impose ordering on accesses of d_inode and d_flags
git bisect good ab14d7bf58701a71e4d5fa4a35ae1be314815507 # 03:00 300+ 2 VFS: Fix up missed bits of reiserfs to use d_inode()
git bisect good abd729c4342d698950473b6be359e73111982c02 # 03:32 300+ 2 VFS: Fix up some ->d_inode accesses in the chelsio driver
git bisect good dabd8775d19de85a0eeacc08804608100056755f # 03:37 300+ 0 NFS: Don't use d_inode as a variable name
git bisect good 1dc0c0acc45f01542179009e73e3965870917bd2 # 03:50 300+ 2 VFS: Add owner-filesystem positive/negative dentry checks
# first bad commit: [692ddb6c6808db7b70678b4cc3332781625c65f8] VFS: Impose ordering on accesses of d_inode and d_flags
git bisect good 1dc0c0acc45f01542179009e73e3965870917bd2 # 03:57 900+ 4 VFS: Add owner-filesystem positive/negative dentry checks
# extra tests with DEBUG_INFO
git bisect good 692ddb6c6808db7b70678b4cc3332781625c65f8 # 04:50 900+ 900 VFS: Impose ordering on accesses of d_inode and d_flags
# extra tests on HEAD of linux-devel/devel-roam-rand-201503070003
git bisect bad 44a96f6567c25a2afcde6ceef6bbc48781d359ec # 04:50 0- 12 0day head guard for 'devel-roam-rand-201503070003'
# extra tests on tree/branch dhowells-fs/file-pin-devel
git bisect bad 692ddb6c6808db7b70678b4cc3332781625c65f8 # 04:51 0- 89 VFS: Impose ordering on accesses of d_inode and d_flags
# extra tests on tree/branch linus/master
git bisect good 5f237425f352487a2e3fdef2f0557eedcd97d898 # 05:03 900+ 4 Merge tag 'sound-4.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
# extra tests on tree/branch next/master
git bisect good 28855005be1d6a0a041de46fd2e61da2b796abff # 05:48 900+ 0 Add linux-next specific files for 20150306
This script may reproduce the error.
----------------------------------------------------------------------------
#!/bin/bash
kernel=$1
initrd=yocto-minimal-i386.cgz
wget --no-clobber https://github.com/fengguang/reproduce-kernel-bug/raw/master/initrd/$initrd
kvm=(
qemu-system-x86_64
-cpu kvm64
-enable-kvm
-kernel $kernel
-initrd $initrd
-m 320
-smp 1
-net nic,vlan=1,model=e1000
-net user,vlan=1
-boot order=nc
-no-reboot
-watchdog i6300esb
-rtc base=localtime
-serial stdio
-display none
-monitor null
)
append=(
hung_task_panic=1
earlyprintk=ttyS0,115200
rd.udev.log-priority=err
systemd.log_target=journal
systemd.log_level=warning
debug
apic=debug
sysrq_always_enabled
rcupdate.rcu_cpu_stall_timeout=100
panic=-1
softlockup_panic=1
nmi_watchdog=panic
oops=panic
load_ramdisk=2
prompt_ramdisk=0
console=ttyS0,115200
console=tty0
vga=normal
root=/dev/ram0
rw
drbd.minor_count=8
)
"${kvm[@]}" --append "${append[*]}"
----------------------------------------------------------------------------
Thanks,
Fengguang
View attachment "dmesg-yocto-client9-12:20150307031534:i386-randconfig-r2-0306:4.0.0-rc1-00164-g692ddb6:6" of type "text/plain" (83448 bytes)
View attachment "config-4.0.0-rc1-00164-g692ddb6" of type "text/plain" (77907 bytes)
Powered by blists - more mailing lists