From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755552AbXD0KJK (ORCPT ); Fri, 27 Apr 2007 06:09:10 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755551AbXD0KJK (ORCPT ); Fri, 27 Apr 2007 06:09:10 -0400 Received: from ns2.suse.de ([195.135.220.15]:53397 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755553AbXD0KJH (ORCPT ); Fri, 27 Apr 2007 06:09:07 -0400 Date: Fri, 27 Apr 2007 12:09:03 +0200 Message-ID: From: Takashi Iwai To: Andrew Morton Cc: David Brownell , Linux Kernel list , reiserfs-dev@namesys.com Subject: Re: 2.6.21 reiserfs -- cicular locking? In-Reply-To: <20070426224408.fd525b46.akpm@linux-foundation.org> References: <200704261640.15068.david-b@pacbell.net> <20070426224408.fd525b46.akpm@linux-foundation.org> User-Agent: Wanderlust/2.12.0 (Your Wildest Dreams) SEMI/1.14.6 (Maruoka) FLIM/1.14.7 (=?ISO-8859-4?Q?Sanj=F2?=) APEL/10.6 MULE XEmacs/21.5 (beta27) (fiddleheads) (+CVS-20060704) (i386-suse-linux) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org At Thu, 26 Apr 2007 22:44:08 -0700, Andrew Morton wrote: > > On Thu, 26 Apr 2007 16:40:14 -0700 David Brownell wrote: > > > This might be a Heisenberg, but I figure it's worth posting > > in case anyone else sees similar oddness. Never seen it > > before or since. It's as if a gremlin got annoyed with me > > for switching a filesystem from reiser to ext3. :) > > > > - Dave > > > > > > ======================================================= > > [ INFO: possible circular locking dependency detected ] > > 2.6.21-git #6 > > ------------------------------------------------------- > > vi/4556 is trying to acquire lock: > > (&REISERFS_SB(s)->xattr_dir_sem){..--}, at: [] reiserfs_chown_xattrs+0x5b/0x128 > > > > but task is already holding lock: > > (&inode->i_mutex){--..}, at: [] chown_common+0x93/0xb3 > > > > which lock already depends on the new lock. > > > > > > the existing dependency chain (in reverse order) is: > > > > -> #1 (&inode->i_mutex){--..}: > > [] __lock_acquire+0x9f7/0xbaa > > [] get_xa_root+0x49/0x107 > > [] lock_acquire+0x7b/0x9f > > [] get_xa_root+0x49/0x107 > > [] save_trace+0x40/0x9e > > [] __mutex_lock_slowpath+0xd8/0x281 > > [] _spin_unlock_irq+0x24/0x4a > > [] get_xa_root+0x49/0x107 > > [] open_xa_dir+0x1c/0xf8 > > [] __down_read+0x34/0x9d > > [] reiserfs_delete_xattrs+0x64/0x185 > > [] _atomic_dec_and_lock+0x14/0x34 > > [] reiserfs_delete_inode+0x38/0xae > > [] generic_delete_inode+0x64/0xf5 > > [] reiserfs_delete_inode+0x0/0xae > > [] generic_delete_inode+0x7a/0xf5 > > [] do_unlinkat+0xd9/0x14f > > [] trace_hardirqs_on+0x123/0x14d > > [] trace_hardirqs_on_thunk+0x35/0x37 > > [] system_call+0x7e/0x83 > > [] 0xffffffffffffffff > > > > -> #0 (&REISERFS_SB(s)->xattr_dir_sem){..--}: > > [] print_circular_bug_header+0xcc/0xd3 > > [] __lock_acquire+0x8f3/0xbaa > > [] reiserfs_chown_xattrs+0x5b/0x128 > > [] lock_acquire+0x7b/0x9f > > [] reiserfs_chown_xattrs+0x5b/0x128 > > [] down_read+0x32/0x3b > > [] reiserfs_chown_xattrs+0x5b/0x128 > > [] __capable+0x9/0x1d > > [] reiserfs_setattr+0x11e/0x1ec > > [] current_fs_time+0x35/0x3a > > [] notify_change+0x122/0x231 > > [] chown_common+0x9e/0xb3 > > [] fget+0x88/0xa7 > > [] sys_fchown+0x30/0x47 > > [] system_call+0x7e/0x83 > > [] 0xffffffffffffffff > > > > other info that might help us debug this: > > > > 1 lock held by vi/4556: > > #0: (&inode->i_mutex){--..}, at: [] chown_common+0x93/0xb3 > > > > stack backtrace: > > > > Call Trace: > > [] print_circular_bug_tail+0x69/0x72 > > [] print_circular_bug_header+0xcc/0xd3 > > [] __lock_acquire+0x8f3/0xbaa > > [] reiserfs_chown_xattrs+0x5b/0x128 > > [] lock_acquire+0x7b/0x9f > > [] reiserfs_chown_xattrs+0x5b/0x128 > > [] down_read+0x32/0x3b > > [] reiserfs_chown_xattrs+0x5b/0x128 > > [] __capable+0x9/0x1d > > [] reiserfs_setattr+0x11e/0x1ec > > [] current_fs_time+0x35/0x3a > > [] notify_change+0x122/0x231 > > [] chown_common+0x9e/0xb3 > > [] fget+0x88/0xa7 > > [] sys_fchown+0x30/0x47 > > [] system_call+0x7e/0x83 > > > > cc added. This was also reported againt -rc7-mm1 (or 2) I got a similar bug right now at the fresh boot of 2.6.21. ReiserFS: sda2: found reiserfs format "3.6" with standard journal ReiserFS: sda2: using ordered data mode ReiserFS: sda2: journal params: device sda2, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30 ReiserFS: sda2: checking transaction log (sda2) ReiserFS: sda2: Using r5 hash to sort names ReiserFS: sda2: Removing [3613 1354701 0x0 SD]..done ReiserFS: sda2: There were 1 uncompleted unlinks/truncates. Completed ======================================================= [ INFO: possible circular locking dependency detected ] 2.6.21-work #1 ------------------------------------------------------- mktemp/1459 is trying to acquire lock: (&REISERFS_I(inode)->xattr_sem){..--}, at: [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] but task is already holding lock: (&inode->i_mutex){--..}, at: [] open_namei+0xe2/0x5a2 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (&inode->i_mutex){--..}: [] __lock_acquire+0xa27/0xbbb [] get_xa_root+0x42/0xfc [reiserfs] [] lock_acquire+0x67/0x81 [] get_xa_root+0x42/0xfc [reiserfs] [] __mutex_lock_slowpath+0xe3/0x241 [] get_xa_root+0x42/0xfc [reiserfs] [] get_xa_root+0x42/0xfc [reiserfs] [] reiserfs_delete_inode+0x0/0xa1 [reiserfs] [] open_xa_dir+0x16/0xd9 [reiserfs] [] reiserfs_delete_xattrs+0x4b/0x15b [reiserfs] [] reiserfs_delete_inode+0x0/0xa1 [reiserfs] [] down_read+0x3d/0x4e [] reiserfs_delete_inode+0x0/0xa1 [reiserfs] [] reiserfs_delete_xattrs+0x57/0x15b [reiserfs] [] reiserfs_delete_inode+0x0/0xa1 [reiserfs] [] reiserfs_delete_inode+0x0/0xa1 [reiserfs] [] reiserfs_delete_inode+0x35/0xa1 [reiserfs] [] _atomic_dec_and_lock+0x2a/0x48 [] reiserfs_delete_inode+0x0/0xa1 [reiserfs] [] generic_delete_inode+0x75/0xdd [] iput+0x60/0x62 [] finish_unfinished+0x2ee/0x350 [reiserfs] [] lookup_one_len+0x21/0x59 [] reiserfs_xattr_init+0x8f/0x1f6 [reiserfs] [] reiserfs_fill_super+0x95e/0xab6 [reiserfs] [] rcu_barrier+0x5a/0x6a [] dump_trace+0x89/0x93 [] save_stack_trace+0x1c/0x37 [] save_trace+0x40/0x92 [] sget+0x1f/0x33b [] __lock_acquire+0xb27/0xbbb [] sget+0x1f/0x33b [] vsnprintf+0x450/0x48c [] snprintf+0x1f/0x22 [] disk_name+0x7e/0x88 [] get_sb_bdev+0xe6/0x130 [] get_super_block+0x20/0x25 [reiserfs] [] reiserfs_fill_super+0x0/0xab6 [reiserfs] [] vfs_kern_mount+0x83/0xf6 [] do_kern_mount+0x2d/0x3e [] do_mount+0x612/0x685 [] __handle_mm_fault+0x50c/0x902 [] __handle_mm_fault+0x4d5/0x902 [] _spin_unlock+0x14/0x1c [] __handle_mm_fault+0x8cb/0x902 [] get_page_from_freelist+0x1fd/0x31d [] trace_hardirqs_on+0x126/0x150 [] up_read+0x14/0x27 [] __alloc_pages+0x68/0x2aa [] copy_mount_options+0x26/0x109 [] sys_mount+0x77/0xae [] syscall_call+0x7/0xb [] 0xffffffff -> #1 (&REISERFS_SB(s)->xattr_dir_sem){..--}: [] __lock_acquire+0xa27/0xbbb [] reiserfs_listxattr+0x5a/0x11e [reiserfs] [] lock_acquire+0x67/0x81 [] reiserfs_listxattr+0x5a/0x11e [reiserfs] [] down_read+0x3d/0x4e [] reiserfs_listxattr+0x5a/0x11e [reiserfs] [] reiserfs_listxattr+0x5a/0x11e [reiserfs] [] trace_hardirqs_on+0x126/0x150 [] reiserfs_listxattr+0x0/0x11e [reiserfs] [] vfs_listxattr+0x46/0x7c [] listxattr+0x44/0x87 [] sys_llistxattr+0x33/0x44 [] up_read+0x14/0x27 [] restore_nocheck+0x12/0x15 [] syscall_call+0x7/0xb [] 0xffffffff -> #0 (&REISERFS_I(inode)->xattr_sem){..--}: [] print_stack_trace+0x4e/0x5c [] __lock_acquire+0x913/0xbbb [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] new_inode+0x24/0x8a [] lock_acquire+0x67/0x81 [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] down_read+0x3d/0x4e [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] reiserfs_create+0x3d/0x1bc [reiserfs] [] reiserfs_permission+0x0/0x21 [reiserfs] [] permission+0xc8/0xdb [] vfs_create+0x9c/0x106 [] open_namei+0x177/0x5a2 [] do_filp_open+0x25/0x39 [] _spin_unlock+0x14/0x1c [] get_unused_fd+0xb3/0xbd [] do_sys_open+0x42/0xbe [] sys_open+0x1c/0x1e [] syscall_call+0x7/0xb [] 0xffffffff other info that might help us debug this: 1 lock held by mktemp/1459: #0: (&inode->i_mutex){--..}, at: [] open_namei+0xe2/0x5a2 stack backtrace: [] print_circular_bug_tail+0x5f/0x67 [] __lock_acquire+0x913/0xbbb [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] new_inode+0x24/0x8a [] lock_acquire+0x67/0x81 [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] down_read+0x3d/0x4e [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs] [] reiserfs_create+0x3d/0x1bc [reiserfs] [] reiserfs_permission+0x0/0x21 [reiserfs] [] permission+0xc8/0xdb [] vfs_create+0x9c/0x106 [] open_namei+0x177/0x5a2 [] do_filp_open+0x25/0x39 [] _spin_unlock+0x14/0x1c [] get_unused_fd+0xb3/0xbd [] do_sys_open+0x42/0xbe [] sys_open+0x1c/0x1e [] syscall_call+0x7/0xb ======================= Takashi