David, Here is another bisect result. commit 1247c74b4f3f3725a8bd8dc0bbd22baa2a9049ae Author: David Howells Date: Thu Sep 12 19:22:53 2013 +0100 VFS: Put a small type field into struct dentry::d_flags Put a type field into struct dentry::d_flags to indicate if the dentry is one of the following types that relate particularly to pathwalk: Miss (negative dentry) Directory "Automount" directory (defective - no i_op->lookup()) Symlink Other (regular, socket, fifo, device) The type field is set to one of the first five types on a dentry by calls to __d_instantiate() and d_obtain_alias() from information in the inode (if one is given). The type is cleared by dentry_unlink_inode() when it reconstitutes an existing dentry as a negative dentry. Accessors provided are: d_set_type(dentry, type) d_is_directory(dentry) d_is_autodir(dentry) d_is_symlink(dentry) d_is_file(dentry) d_is_negative(dentry) d_is_positive(dentry) A bunch of checks in pathname resolution switched to those. Signed-off-by: David Howells Signed-off-by: Al Viro =================================================== PARENT COMMIT NOT CLEAN. LOOK OUT FOR WRONG BISECT! =================================================== 9 /kernel/x86_64-randconfig-c9-1107/50235cd9727c20b09967b5c060025eac9d0c80bb create /kernel/x86_64-randconfig-c9-1107/50235cd9727c20b09967b5c060025eac9d0c80bb/boot-error-ids update /kernel/x86_64-randconfig-c9-1107/f0e07fb6dd3d533b6ea2d91e721b68d696d4e64c/boot-error-ids +-------------------------------------------------+--------------+--------------+ | | 50235cd9727c | f0e07fb6dd3d | +-------------------------------------------------+--------------+--------------+ | good_boots | 131 | | | has_kernel_error_warning | 9 | 19 | | BUG:kernel_early_hang_without_any_printk_output | 9 | | | INFO:possible_recursive_locking_detected | 0 | 19 | | BUG:spinlock_lockup_suspected_on_CPU | 0 | 19 | +-------------------------------------------------+--------------+--------------+ [ 0.020984] Mount-cache hash table entries: 256 [ 0.022182] [ 0.022487] ============================================= [ 0.026992] [ INFO: possible recursive locking detected ] [ 0.027977] 3.12.0-00784-gf0e07fb #314 Not tainted [ 0.028845] --------------------------------------------- [ 0.030000] swapper/0 is trying to acquire lock: [ 0.030000] (&sb->s_type->i_lock_key){+.+...}, at: [] d_flags_for_inode+0x3c/0xd0 [ 0.030000] [ 0.030000] but task is already holding lock: [ 0.030000] (&sb->s_type->i_lock_key){+.+...}, at: [] d_instantiate+0x34/0x70 [ 0.030000] [ 0.030000] other info that might help us debug this: [ 0.030000] Possible unsafe locking scenario: [ 0.030000] [ 0.030000] CPU0 [ 0.030000] ---- [ 0.030000] lock(&sb->s_type->i_lock_key); [ 0.030000] lock(&sb->s_type->i_lock_key); [ 0.030000] [ 0.030000] *** DEADLOCK *** [ 0.030000] [ 0.030000] May be due to missing lock nesting notation [ 0.030000] [ 0.030000] 2 locks held by swapper/0: [ 0.030000] #0: (&type->s_umount_key/1){+.+...}, at: [] sget+0x266/0x440 [ 0.030000] #1: (&sb->s_type->i_lock_key){+.+...}, at: [] d_instantiate+0x34/0x70 [ 0.030000] [ 0.030000] stack backtrace: [ 0.030000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.0-00784-gf0e07fb #314 [ 0.030000] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 0.030000] ffffffff82c998d0 ffffffff82401c18 ffffffff81c21540 ffffffff82401ce0 [ 0.030000] ffffffff81111fb7 ffffffff824134c0 0000000000000000 ffffffff82401c50 [ 0.030000] ffffffff82413af8 ffffffff00000000 00000000c406e037 ffffffff824134c0 [ 0.030000] Call Trace: [ 0.030000] [] dump_stack+0x19/0x1b [ 0.030000] [] __lock_acquire+0x12d7/0x1d60 [ 0.030000] [] ? __lock_acquire+0x1cec/0x1d60 [ 0.030000] [] ? __slab_alloc.constprop.61+0x3dc/0x3fa [ 0.030000] [] lock_acquire+0x19d/0x220 [ 0.030000] [] ? d_flags_for_inode+0x3c/0xd0 [ 0.030000] [] _raw_spin_lock+0x3b/0x70 [ 0.030000] [] ? d_flags_for_inode+0x3c/0xd0 [ 0.030000] [] d_flags_for_inode+0x3c/0xd0 [ 0.030000] [] __d_instantiate+0x1d/0xf0 [ 0.030000] [] d_instantiate+0x3f/0x70 [ 0.030000] [] d_make_root+0x32/0x60 [ 0.030000] [] sysfs_mount+0x178/0x220 [ 0.030000] [] mount_fs+0x73/0x190 [ 0.030000] [] vfs_kern_mount+0x65/0xf0 [ 0.030000] [] kern_mount_data+0x14/0x30 [ 0.030000] [] sysfs_init+0x54/0xb3 [ 0.030000] [] mnt_init+0xcd/0x1d6 [ 0.030000] [] vfs_caches_init+0x90/0x10e [ 0.030000] [] ? integrity_iintcache_init+0x23/0x38 [ 0.030000] [] ? security_init+0x35/0x47 [ 0.030000] [] start_kernel+0x456/0x49e [ 0.030000] [] ? repair_env_string+0x5e/0x5e [ 0.030000] [] ? early_idt_handlers+0x120/0x120 [ 0.030000] [] x86_64_start_reservations+0x2a/0x2c [ 0.030000] [] x86_64_start_kernel+0xf3/0x102 git bisect start f0e07fb6dd3d533b6ea2d91e721b68d696d4e64c 5e01dc7b26d9f24f39abace5da98ccbd6a5ceb52 -- git bisect good 2751f2b0a96446b2301a56dcf3b24128ffb4c7d7 # 09:25 20+ 0 Merge 'ntb/ntb' into devel-cairo-x86_64-201311070512 git bisect good 4796e8af60ee7d2922386ef9fd4389d21e2c1665 # 10:26 20+ 4 Bluetooth: Make mgmt_write_scan_failed() return void git bisect good cca34b785a21d220176038c45071ffe842e99fd3 # 10:52 20+ 2 Bluetooth: Remove link type check in hci_disconn_complete_evt() git bisect good 004e8957280a32f7b54766531c064412bda45e48 # 11:36 20+ 2 convert the rest of binfmt_elf_fdpic to dump_emit() git bisect bad b0d94facd7c81fae48e72f1e0b2a7e656ecde921 # 11:44 0- 2 exportfs: stop retrying once we race with rename/remove git bisect good 50235cd9727c20b09967b5c060025eac9d0c80bb # 12:05 20+ 2 elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo) git bisect bad 08196969532eee10cdeaa29fca37fa7a407b01ae # 12:11 0- 1 dcache: use IS_ROOT to decide where dentry is hashed git bisect bad 7717bf21e4a5e1d371e313a4404635f4775961d9 # 12:16 1- 2 vfs: split out vfs_getattr_nosec git bisect bad 520ef078eabdbe7eb6a33c1f56a65ac55d41e6ed # 12:24 2- 3 iget/iget5: don't bother with ->i_lock until we find a match git bisect bad 1247c74b4f3f3725a8bd8dc0bbd22baa2a9049ae # 12:29 0- 4 VFS: Put a small type field into struct dentry::d_flags git bisect good 50235cd9727c20b09967b5c060025eac9d0c80bb # 13:06 120+ 9 elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo) git bisect bad f0e07fb6dd3d533b6ea2d91e721b68d696d4e64c # 13:06 0- 19 Merge 'vfs/for-next' into devel-cairo-x86_64-201311070512 git bisect good e6eb46b3eee2c7211a56423dd026b88b9ce30ed5 # 13:21 120+ 9 Revert "VFS: Put a small type field into struct dentry::d_flags" git bisect good be408cd3e1fef73e9408b196a79b9934697fe3b1 # 13:33 120+ 3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Thanks, Fengguang