linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6.21 reiserfs -- cicular locking?
@ 2007-04-26 23:40 David Brownell
  2007-04-27  5:44 ` Andrew Morton
  0 siblings, 1 reply; 10+ messages in thread
From: David Brownell @ 2007-04-26 23:40 UTC (permalink / raw)
  To: Linux Kernel list

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: [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128

but task is already holding lock:
 (&inode->i_mutex){--..}, at: [<ffffffff8026c4fa>] chown_common+0x93/0xb3

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (&inode->i_mutex){--..}:
       [<ffffffff802405f4>] __lock_acquire+0x9f7/0xbaa
       [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
       [<ffffffff80240822>] lock_acquire+0x7b/0x9f
       [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
       [<ffffffff8023dee0>] save_trace+0x40/0x9e
       [<ffffffff8041e1db>] __mutex_lock_slowpath+0xd8/0x281
       [<ffffffff8041ff18>] _spin_unlock_irq+0x24/0x4a
       [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
       [<ffffffff802ca2a8>] open_xa_dir+0x1c/0xf8
       [<ffffffff8041f34b>] __down_read+0x34/0x9d
       [<ffffffff802cb50a>] reiserfs_delete_xattrs+0x64/0x185
       [<ffffffff802fd620>] _atomic_dec_and_lock+0x14/0x34
       [<ffffffff802b252e>] reiserfs_delete_inode+0x38/0xae
       [<ffffffff8027f6bc>] generic_delete_inode+0x64/0xf5
       [<ffffffff802b24f6>] reiserfs_delete_inode+0x0/0xae
       [<ffffffff8027f6d2>] generic_delete_inode+0x7a/0xf5
       [<ffffffff80276b95>] do_unlinkat+0xd9/0x14f
       [<ffffffff8023f75f>] trace_hardirqs_on+0x123/0x14d
       [<ffffffff8041f4d1>] trace_hardirqs_on_thunk+0x35/0x37
       [<ffffffff8020954e>] system_call+0x7e/0x83
       [<ffffffffffffffff>] 0xffffffffffffffff

-> #0 (&REISERFS_SB(s)->xattr_dir_sem){..--}:
       [<ffffffff8023ee6f>] print_circular_bug_header+0xcc/0xd3
       [<ffffffff802404f0>] __lock_acquire+0x8f3/0xbaa
       [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
       [<ffffffff80240822>] lock_acquire+0x7b/0x9f
       [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
       [<ffffffff8023bb03>] down_read+0x32/0x3b
       [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
       [<ffffffff8022e285>] __capable+0x9/0x1d
       [<ffffffff802b2828>] reiserfs_setattr+0x11e/0x1ec
       [<ffffffff8022bd6b>] current_fs_time+0x35/0x3a
       [<ffffffff802803a1>] notify_change+0x122/0x231
       [<ffffffff8026c505>] chown_common+0x9e/0xb3
       [<ffffffff8026e7a6>] fget+0x88/0xa7
       [<ffffffff8026c54a>] sys_fchown+0x30/0x47
       [<ffffffff8020954e>] system_call+0x7e/0x83
       [<ffffffffffffffff>] 0xffffffffffffffff

other info that might help us debug this:

1 lock held by vi/4556:
 #0:  (&inode->i_mutex){--..}, at: [<ffffffff8026c4fa>] chown_common+0x93/0xb3

stack backtrace:

Call Trace:
 [<ffffffff8023eacc>] print_circular_bug_tail+0x69/0x72
 [<ffffffff8023ee6f>] print_circular_bug_header+0xcc/0xd3
 [<ffffffff802404f0>] __lock_acquire+0x8f3/0xbaa
 [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
 [<ffffffff80240822>] lock_acquire+0x7b/0x9f
 [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
 [<ffffffff8023bb03>] down_read+0x32/0x3b
 [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
 [<ffffffff8022e285>] __capable+0x9/0x1d
 [<ffffffff802b2828>] reiserfs_setattr+0x11e/0x1ec
 [<ffffffff8022bd6b>] current_fs_time+0x35/0x3a
 [<ffffffff802803a1>] notify_change+0x122/0x231
 [<ffffffff8026c505>] chown_common+0x9e/0xb3
 [<ffffffff8026e7a6>] fget+0x88/0xa7
 [<ffffffff8026c54a>] sys_fchown+0x30/0x47
 [<ffffffff8020954e>] system_call+0x7e/0x83


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-26 23:40 2.6.21 reiserfs -- cicular locking? David Brownell
@ 2007-04-27  5:44 ` Andrew Morton
  2007-04-27 10:09   ` Takashi Iwai
  0 siblings, 1 reply; 10+ messages in thread
From: Andrew Morton @ 2007-04-27  5:44 UTC (permalink / raw)
  To: David Brownell; +Cc: Linux Kernel list, reiserfs-dev

On Thu, 26 Apr 2007 16:40:14 -0700 David Brownell <david-b@pacbell.net> 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: [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> 
> but task is already holding lock:
>  (&inode->i_mutex){--..}, at: [<ffffffff8026c4fa>] chown_common+0x93/0xb3
> 
> which lock already depends on the new lock.
> 
> 
> the existing dependency chain (in reverse order) is:
> 
> -> #1 (&inode->i_mutex){--..}:
>        [<ffffffff802405f4>] __lock_acquire+0x9f7/0xbaa
>        [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
>        [<ffffffff80240822>] lock_acquire+0x7b/0x9f
>        [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
>        [<ffffffff8023dee0>] save_trace+0x40/0x9e
>        [<ffffffff8041e1db>] __mutex_lock_slowpath+0xd8/0x281
>        [<ffffffff8041ff18>] _spin_unlock_irq+0x24/0x4a
>        [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
>        [<ffffffff802ca2a8>] open_xa_dir+0x1c/0xf8
>        [<ffffffff8041f34b>] __down_read+0x34/0x9d
>        [<ffffffff802cb50a>] reiserfs_delete_xattrs+0x64/0x185
>        [<ffffffff802fd620>] _atomic_dec_and_lock+0x14/0x34
>        [<ffffffff802b252e>] reiserfs_delete_inode+0x38/0xae
>        [<ffffffff8027f6bc>] generic_delete_inode+0x64/0xf5
>        [<ffffffff802b24f6>] reiserfs_delete_inode+0x0/0xae
>        [<ffffffff8027f6d2>] generic_delete_inode+0x7a/0xf5
>        [<ffffffff80276b95>] do_unlinkat+0xd9/0x14f
>        [<ffffffff8023f75f>] trace_hardirqs_on+0x123/0x14d
>        [<ffffffff8041f4d1>] trace_hardirqs_on_thunk+0x35/0x37
>        [<ffffffff8020954e>] system_call+0x7e/0x83
>        [<ffffffffffffffff>] 0xffffffffffffffff
> 
> -> #0 (&REISERFS_SB(s)->xattr_dir_sem){..--}:
>        [<ffffffff8023ee6f>] print_circular_bug_header+0xcc/0xd3
>        [<ffffffff802404f0>] __lock_acquire+0x8f3/0xbaa
>        [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
>        [<ffffffff80240822>] lock_acquire+0x7b/0x9f
>        [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
>        [<ffffffff8023bb03>] down_read+0x32/0x3b
>        [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
>        [<ffffffff8022e285>] __capable+0x9/0x1d
>        [<ffffffff802b2828>] reiserfs_setattr+0x11e/0x1ec
>        [<ffffffff8022bd6b>] current_fs_time+0x35/0x3a
>        [<ffffffff802803a1>] notify_change+0x122/0x231
>        [<ffffffff8026c505>] chown_common+0x9e/0xb3
>        [<ffffffff8026e7a6>] fget+0x88/0xa7
>        [<ffffffff8026c54a>] sys_fchown+0x30/0x47
>        [<ffffffff8020954e>] system_call+0x7e/0x83
>        [<ffffffffffffffff>] 0xffffffffffffffff
> 
> other info that might help us debug this:
> 
> 1 lock held by vi/4556:
>  #0:  (&inode->i_mutex){--..}, at: [<ffffffff8026c4fa>] chown_common+0x93/0xb3
> 
> stack backtrace:
> 
> Call Trace:
>  [<ffffffff8023eacc>] print_circular_bug_tail+0x69/0x72
>  [<ffffffff8023ee6f>] print_circular_bug_header+0xcc/0xd3
>  [<ffffffff802404f0>] __lock_acquire+0x8f3/0xbaa
>  [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
>  [<ffffffff80240822>] lock_acquire+0x7b/0x9f
>  [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
>  [<ffffffff8023bb03>] down_read+0x32/0x3b
>  [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
>  [<ffffffff8022e285>] __capable+0x9/0x1d
>  [<ffffffff802b2828>] reiserfs_setattr+0x11e/0x1ec
>  [<ffffffff8022bd6b>] current_fs_time+0x35/0x3a
>  [<ffffffff802803a1>] notify_change+0x122/0x231
>  [<ffffffff8026c505>] chown_common+0x9e/0xb3
>  [<ffffffff8026e7a6>] fget+0x88/0xa7
>  [<ffffffff8026c54a>] sys_fchown+0x30/0x47
>  [<ffffffff8020954e>] system_call+0x7e/0x83
> 

cc added.  This was also reported againt -rc7-mm1 (or 2)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27  5:44 ` Andrew Morton
@ 2007-04-27 10:09   ` Takashi Iwai
  2007-04-27 10:53     ` Takashi Iwai
  0 siblings, 1 reply; 10+ messages in thread
From: Takashi Iwai @ 2007-04-27 10:09 UTC (permalink / raw)
  To: Andrew Morton; +Cc: David Brownell, Linux Kernel list, reiserfs-dev

At Thu, 26 Apr 2007 22:44:08 -0700,
Andrew Morton wrote:
> 
> On Thu, 26 Apr 2007 16:40:14 -0700 David Brownell <david-b@pacbell.net> 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: [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> > 
> > but task is already holding lock:
> >  (&inode->i_mutex){--..}, at: [<ffffffff8026c4fa>] chown_common+0x93/0xb3
> > 
> > which lock already depends on the new lock.
> > 
> > 
> > the existing dependency chain (in reverse order) is:
> > 
> > -> #1 (&inode->i_mutex){--..}:
> >        [<ffffffff802405f4>] __lock_acquire+0x9f7/0xbaa
> >        [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
> >        [<ffffffff80240822>] lock_acquire+0x7b/0x9f
> >        [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
> >        [<ffffffff8023dee0>] save_trace+0x40/0x9e
> >        [<ffffffff8041e1db>] __mutex_lock_slowpath+0xd8/0x281
> >        [<ffffffff8041ff18>] _spin_unlock_irq+0x24/0x4a
> >        [<ffffffff802ca1ac>] get_xa_root+0x49/0x107
> >        [<ffffffff802ca2a8>] open_xa_dir+0x1c/0xf8
> >        [<ffffffff8041f34b>] __down_read+0x34/0x9d
> >        [<ffffffff802cb50a>] reiserfs_delete_xattrs+0x64/0x185
> >        [<ffffffff802fd620>] _atomic_dec_and_lock+0x14/0x34
> >        [<ffffffff802b252e>] reiserfs_delete_inode+0x38/0xae
> >        [<ffffffff8027f6bc>] generic_delete_inode+0x64/0xf5
> >        [<ffffffff802b24f6>] reiserfs_delete_inode+0x0/0xae
> >        [<ffffffff8027f6d2>] generic_delete_inode+0x7a/0xf5
> >        [<ffffffff80276b95>] do_unlinkat+0xd9/0x14f
> >        [<ffffffff8023f75f>] trace_hardirqs_on+0x123/0x14d
> >        [<ffffffff8041f4d1>] trace_hardirqs_on_thunk+0x35/0x37
> >        [<ffffffff8020954e>] system_call+0x7e/0x83
> >        [<ffffffffffffffff>] 0xffffffffffffffff
> > 
> > -> #0 (&REISERFS_SB(s)->xattr_dir_sem){..--}:
> >        [<ffffffff8023ee6f>] print_circular_bug_header+0xcc/0xd3
> >        [<ffffffff802404f0>] __lock_acquire+0x8f3/0xbaa
> >        [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> >        [<ffffffff80240822>] lock_acquire+0x7b/0x9f
> >        [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> >        [<ffffffff8023bb03>] down_read+0x32/0x3b
> >        [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> >        [<ffffffff8022e285>] __capable+0x9/0x1d
> >        [<ffffffff802b2828>] reiserfs_setattr+0x11e/0x1ec
> >        [<ffffffff8022bd6b>] current_fs_time+0x35/0x3a
> >        [<ffffffff802803a1>] notify_change+0x122/0x231
> >        [<ffffffff8026c505>] chown_common+0x9e/0xb3
> >        [<ffffffff8026e7a6>] fget+0x88/0xa7
> >        [<ffffffff8026c54a>] sys_fchown+0x30/0x47
> >        [<ffffffff8020954e>] system_call+0x7e/0x83
> >        [<ffffffffffffffff>] 0xffffffffffffffff
> > 
> > other info that might help us debug this:
> > 
> > 1 lock held by vi/4556:
> >  #0:  (&inode->i_mutex){--..}, at: [<ffffffff8026c4fa>] chown_common+0x93/0xb3
> > 
> > stack backtrace:
> > 
> > Call Trace:
> >  [<ffffffff8023eacc>] print_circular_bug_tail+0x69/0x72
> >  [<ffffffff8023ee6f>] print_circular_bug_header+0xcc/0xd3
> >  [<ffffffff802404f0>] __lock_acquire+0x8f3/0xbaa
> >  [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> >  [<ffffffff80240822>] lock_acquire+0x7b/0x9f
> >  [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> >  [<ffffffff8023bb03>] down_read+0x32/0x3b
> >  [<ffffffff802caf4b>] reiserfs_chown_xattrs+0x5b/0x128
> >  [<ffffffff8022e285>] __capable+0x9/0x1d
> >  [<ffffffff802b2828>] reiserfs_setattr+0x11e/0x1ec
> >  [<ffffffff8022bd6b>] current_fs_time+0x35/0x3a
> >  [<ffffffff802803a1>] notify_change+0x122/0x231
> >  [<ffffffff8026c505>] chown_common+0x9e/0xb3
> >  [<ffffffff8026e7a6>] fget+0x88/0xa7
> >  [<ffffffff8026c54a>] sys_fchown+0x30/0x47
> >  [<ffffffff8020954e>] 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]

but task is already holding lock:
 (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #2 (&inode->i_mutex){--..}:
       [<c0134d2e>] __lock_acquire+0xa27/0xbbb
       [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
       [<c0134f29>] lock_acquire+0x67/0x81
       [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
       [<c028b69d>] __mutex_lock_slowpath+0xe3/0x241
       [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
       [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
       [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
       [<e08a2f83>] open_xa_dir+0x16/0xd9 [reiserfs]
       [<e08a3feb>] reiserfs_delete_xattrs+0x4b/0x15b [reiserfs]
       [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
       [<c012e0d6>] down_read+0x3d/0x4e
       [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
       [<e08a3ff7>] reiserfs_delete_xattrs+0x57/0x15b [reiserfs]
       [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
       [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
       [<e088b171>] reiserfs_delete_inode+0x35/0xa1 [reiserfs]
       [<c01c0fce>] _atomic_dec_and_lock+0x2a/0x48
       [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
       [<c017507f>] generic_delete_inode+0x75/0xdd
       [<c01747c4>] iput+0x60/0x62
       [<e0892878>] finish_unfinished+0x2ee/0x350 [reiserfs]
       [<c016bc00>] lookup_one_len+0x21/0x59
       [<e08a3d45>] reiserfs_xattr_init+0x8f/0x1f6 [reiserfs]
       [<e0893cd4>] reiserfs_fill_super+0x95e/0xab6 [reiserfs]
       [<c0129520>] rcu_barrier+0x5a/0x6a
       [<c0105cd0>] dump_trace+0x89/0x93
       [<c010a075>] save_stack_trace+0x1c/0x37
       [<c01327a5>] save_trace+0x40/0x92
       [<c0165c02>] sget+0x1f/0x33b
       [<c0134e2e>] __lock_acquire+0xb27/0xbbb
       [<c0165c02>] sget+0x1f/0x33b
       [<c01c483e>] vsnprintf+0x450/0x48c
       [<c01c494c>] snprintf+0x1f/0x22
       [<c0194687>] disk_name+0x7e/0x88
       [<c016677f>] get_sb_bdev+0xe6/0x130
       [<e0891ccc>] get_super_block+0x20/0x25 [reiserfs]
       [<e0893376>] reiserfs_fill_super+0x0/0xab6 [reiserfs]
       [<c016633b>] vfs_kern_mount+0x83/0xf6
       [<c01663f0>] do_kern_mount+0x2d/0x3e
       [<c0177ee4>] do_mount+0x612/0x685
       [<c01543e9>] __handle_mm_fault+0x50c/0x902
       [<c01543b2>] __handle_mm_fault+0x4d5/0x902
       [<c028c912>] _spin_unlock+0x14/0x1c
       [<c01547a8>] __handle_mm_fault+0x8cb/0x902
       [<c014d104>] get_page_from_freelist+0x1fd/0x31d
       [<c0133eeb>] trace_hardirqs_on+0x126/0x150
       [<c012e14d>] up_read+0x14/0x27
       [<c014d28c>] __alloc_pages+0x68/0x2aa
       [<c0176899>] copy_mount_options+0x26/0x109
       [<c0177fce>] sys_mount+0x77/0xae
       [<c0104d74>] syscall_call+0x7/0xb
       [<ffffffff>] 0xffffffff

-> #1 (&REISERFS_SB(s)->xattr_dir_sem){..--}:
       [<c0134d2e>] __lock_acquire+0xa27/0xbbb
       [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
       [<c0134f29>] lock_acquire+0x67/0x81
       [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
       [<c012e0d6>] down_read+0x3d/0x4e
       [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
       [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
       [<c0133eeb>] trace_hardirqs_on+0x126/0x150
       [<e08a3b98>] reiserfs_listxattr+0x0/0x11e [reiserfs]
       [<c017ab4f>] vfs_listxattr+0x46/0x7c
       [<c017abc9>] listxattr+0x44/0x87
       [<c017ac73>] sys_llistxattr+0x33/0x44
       [<c012e14d>] up_read+0x14/0x27
       [<c0104dbc>] restore_nocheck+0x12/0x15
       [<c0104d74>] syscall_call+0x7/0xb
       [<ffffffff>] 0xffffffff

-> #0 (&REISERFS_I(inode)->xattr_sem){..--}:
       [<c012e6d2>] print_stack_trace+0x4e/0x5c
       [<c0134c1a>] __lock_acquire+0x913/0xbbb
       [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
       [<c017570b>] new_inode+0x24/0x8a
       [<c0134f29>] lock_acquire+0x67/0x81
       [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
       [<c012e0d6>] down_read+0x3d/0x4e
       [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
       [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
       [<e08873b5>] reiserfs_create+0x3d/0x1bc [reiserfs]
       [<e08a2e37>] reiserfs_permission+0x0/0x21 [reiserfs]
       [<c016abf2>] permission+0xc8/0xdb
       [<c016b11f>] vfs_create+0x9c/0x106
       [<c016d871>] open_namei+0x177/0x5a2
       [<c016348d>] do_filp_open+0x25/0x39
       [<c028c912>] _spin_unlock+0x14/0x1c
       [<c016325b>] get_unused_fd+0xb3/0xbd
       [<c01634e3>] do_sys_open+0x42/0xbe
       [<c0163598>] sys_open+0x1c/0x1e
       [<c0104d74>] syscall_call+0x7/0xb
       [<ffffffff>] 0xffffffff

other info that might help us debug this:

1 lock held by mktemp/1459:
 #0:  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2

stack backtrace:
 [<c013343e>] print_circular_bug_tail+0x5f/0x67
 [<c0134c1a>] __lock_acquire+0x913/0xbbb
 [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
 [<c017570b>] new_inode+0x24/0x8a
 [<c0134f29>] lock_acquire+0x67/0x81
 [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
 [<c012e0d6>] down_read+0x3d/0x4e
 [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
 [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
 [<e08873b5>] reiserfs_create+0x3d/0x1bc [reiserfs]
 [<e08a2e37>] reiserfs_permission+0x0/0x21 [reiserfs]
 [<c016abf2>] permission+0xc8/0xdb
 [<c016b11f>] vfs_create+0x9c/0x106
 [<c016d871>] open_namei+0x177/0x5a2
 [<c016348d>] do_filp_open+0x25/0x39
 [<c028c912>] _spin_unlock+0x14/0x1c
 [<c016325b>] get_unused_fd+0xb3/0xbd
 [<c01634e3>] do_sys_open+0x42/0xbe
 [<c0163598>] sys_open+0x1c/0x1e
 [<c0104d74>] syscall_call+0x7/0xb
 =======================


Takashi

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27 10:09   ` Takashi Iwai
@ 2007-04-27 10:53     ` Takashi Iwai
  2007-04-27 11:09       ` Jeff Mahoney
  0 siblings, 1 reply; 10+ messages in thread
From: Takashi Iwai @ 2007-04-27 10:53 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Brownell, Linux Kernel list, reiserfs-dev, Jeff Mahoney

At Fri, 27 Apr 2007 12:09:03 +0200,
I wrote:
> 
> 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
> 
> but task is already holding lock:
>  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
> 
> which lock already depends on the new lock.
> 
> 
> the existing dependency chain (in reverse order) is:
> 
> -> #2 (&inode->i_mutex){--..}:
>        [<c0134d2e>] __lock_acquire+0xa27/0xbbb
>        [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
>        [<c0134f29>] lock_acquire+0x67/0x81
>        [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
>        [<c028b69d>] __mutex_lock_slowpath+0xe3/0x241
>        [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
>        [<e08a2e9a>] get_xa_root+0x42/0xfc [reiserfs]
>        [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
>        [<e08a2f83>] open_xa_dir+0x16/0xd9 [reiserfs]
>        [<e08a3feb>] reiserfs_delete_xattrs+0x4b/0x15b [reiserfs]
>        [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
>        [<c012e0d6>] down_read+0x3d/0x4e
>        [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
>        [<e08a3ff7>] reiserfs_delete_xattrs+0x57/0x15b [reiserfs]
>        [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
>        [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
>        [<e088b171>] reiserfs_delete_inode+0x35/0xa1 [reiserfs]
>        [<c01c0fce>] _atomic_dec_and_lock+0x2a/0x48
>        [<e088b13c>] reiserfs_delete_inode+0x0/0xa1 [reiserfs]
>        [<c017507f>] generic_delete_inode+0x75/0xdd
>        [<c01747c4>] iput+0x60/0x62
>        [<e0892878>] finish_unfinished+0x2ee/0x350 [reiserfs]
>        [<c016bc00>] lookup_one_len+0x21/0x59
>        [<e08a3d45>] reiserfs_xattr_init+0x8f/0x1f6 [reiserfs]
>        [<e0893cd4>] reiserfs_fill_super+0x95e/0xab6 [reiserfs]
>        [<c0129520>] rcu_barrier+0x5a/0x6a
>        [<c0105cd0>] dump_trace+0x89/0x93
>        [<c010a075>] save_stack_trace+0x1c/0x37
>        [<c01327a5>] save_trace+0x40/0x92
>        [<c0165c02>] sget+0x1f/0x33b
>        [<c0134e2e>] __lock_acquire+0xb27/0xbbb
>        [<c0165c02>] sget+0x1f/0x33b
>        [<c01c483e>] vsnprintf+0x450/0x48c
>        [<c01c494c>] snprintf+0x1f/0x22
>        [<c0194687>] disk_name+0x7e/0x88
>        [<c016677f>] get_sb_bdev+0xe6/0x130
>        [<e0891ccc>] get_super_block+0x20/0x25 [reiserfs]
>        [<e0893376>] reiserfs_fill_super+0x0/0xab6 [reiserfs]
>        [<c016633b>] vfs_kern_mount+0x83/0xf6
>        [<c01663f0>] do_kern_mount+0x2d/0x3e
>        [<c0177ee4>] do_mount+0x612/0x685
>        [<c01543e9>] __handle_mm_fault+0x50c/0x902
>        [<c01543b2>] __handle_mm_fault+0x4d5/0x902
>        [<c028c912>] _spin_unlock+0x14/0x1c
>        [<c01547a8>] __handle_mm_fault+0x8cb/0x902
>        [<c014d104>] get_page_from_freelist+0x1fd/0x31d
>        [<c0133eeb>] trace_hardirqs_on+0x126/0x150
>        [<c012e14d>] up_read+0x14/0x27
>        [<c014d28c>] __alloc_pages+0x68/0x2aa
>        [<c0176899>] copy_mount_options+0x26/0x109
>        [<c0177fce>] sys_mount+0x77/0xae
>        [<c0104d74>] syscall_call+0x7/0xb
>        [<ffffffff>] 0xffffffff
> 
> -> #1 (&REISERFS_SB(s)->xattr_dir_sem){..--}:
>        [<c0134d2e>] __lock_acquire+0xa27/0xbbb
>        [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
>        [<c0134f29>] lock_acquire+0x67/0x81
>        [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
>        [<c012e0d6>] down_read+0x3d/0x4e
>        [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
>        [<e08a3bf2>] reiserfs_listxattr+0x5a/0x11e [reiserfs]
>        [<c0133eeb>] trace_hardirqs_on+0x126/0x150
>        [<e08a3b98>] reiserfs_listxattr+0x0/0x11e [reiserfs]
>        [<c017ab4f>] vfs_listxattr+0x46/0x7c
>        [<c017abc9>] listxattr+0x44/0x87
>        [<c017ac73>] sys_llistxattr+0x33/0x44
>        [<c012e14d>] up_read+0x14/0x27
>        [<c0104dbc>] restore_nocheck+0x12/0x15
>        [<c0104d74>] syscall_call+0x7/0xb
>        [<ffffffff>] 0xffffffff
> 
> -> #0 (&REISERFS_I(inode)->xattr_sem){..--}:
>        [<c012e6d2>] print_stack_trace+0x4e/0x5c
>        [<c0134c1a>] __lock_acquire+0x913/0xbbb
>        [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>        [<c017570b>] new_inode+0x24/0x8a
>        [<c0134f29>] lock_acquire+0x67/0x81
>        [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>        [<c012e0d6>] down_read+0x3d/0x4e
>        [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>        [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>        [<e08873b5>] reiserfs_create+0x3d/0x1bc [reiserfs]
>        [<e08a2e37>] reiserfs_permission+0x0/0x21 [reiserfs]
>        [<c016abf2>] permission+0xc8/0xdb
>        [<c016b11f>] vfs_create+0x9c/0x106
>        [<c016d871>] open_namei+0x177/0x5a2
>        [<c016348d>] do_filp_open+0x25/0x39
>        [<c028c912>] _spin_unlock+0x14/0x1c
>        [<c016325b>] get_unused_fd+0xb3/0xbd
>        [<c01634e3>] do_sys_open+0x42/0xbe
>        [<c0163598>] sys_open+0x1c/0x1e
>        [<c0104d74>] syscall_call+0x7/0xb
>        [<ffffffff>] 0xffffffff
> 
> other info that might help us debug this:
> 
> 1 lock held by mktemp/1459:
>  #0:  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
> 
> stack backtrace:
>  [<c013343e>] print_circular_bug_tail+0x5f/0x67
>  [<c0134c1a>] __lock_acquire+0x913/0xbbb
>  [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>  [<c017570b>] new_inode+0x24/0x8a
>  [<c0134f29>] lock_acquire+0x67/0x81
>  [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>  [<c012e0d6>] down_read+0x3d/0x4e
>  [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>  [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>  [<e08873b5>] reiserfs_create+0x3d/0x1bc [reiserfs]
>  [<e08a2e37>] reiserfs_permission+0x0/0x21 [reiserfs]
>  [<c016abf2>] permission+0xc8/0xdb
>  [<c016b11f>] vfs_create+0x9c/0x106
>  [<c016d871>] open_namei+0x177/0x5a2
>  [<c016348d>] do_filp_open+0x25/0x39
>  [<c028c912>] _spin_unlock+0x14/0x1c
>  [<c016325b>] get_unused_fd+0xb3/0xbd
>  [<c01634e3>] do_sys_open+0x42/0xbe
>  [<c0163598>] sys_open+0x1c/0x1e
>  [<c0104d74>] syscall_call+0x7/0xb
>  =======================

The message disappears when I revert the patch:

commit 9b7f375505f5611efb562065b57814b28a81abc3
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Mon Apr 23 14:41:17 2007 -0700

    reiserfs: fix xattr root locking/refcount bug
    

So, likely a newly introduced bug after rc7...


Takashi

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27 10:53     ` Takashi Iwai
@ 2007-04-27 11:09       ` Jeff Mahoney
  2007-04-27 12:20         ` Takashi Iwai
  0 siblings, 1 reply; 10+ messages in thread
From: Jeff Mahoney @ 2007-04-27 11:09 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Andrew Morton, David Brownell, Linux Kernel list, reiserfs-dev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Takashi Iwai wrote:
> At Fri, 27 Apr 2007 12:09:03 +0200,
> I wrote:
>> 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>>
>> but task is already holding lock:
>>  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
>>
>> which lock already depends on the new lock.
> The message disappears when I revert the patch:
> 
> commit 9b7f375505f5611efb562065b57814b28a81abc3
> Author: Jeff Mahoney <jeffm@suse.com>
> Date:   Mon Apr 23 14:41:17 2007 -0700
> 
>     reiserfs: fix xattr root locking/refcount bug
>     
> 
> So, likely a newly introduced bug after rc7...

I got a message with a trace similar to this from Vladimir before I
submitted that patch. I'm not sure how to annotate this, since the
xattr_sem can never be taken in the manner described. Internal inodes
are protected by I_PRIVATE.

- -Jeff

- --
Jeff Mahoney
SUSE Labs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iD8DBQFGMdnNLPWxlyuTD7IRApM+AJwKynnSbQfGKByzvDFs5d0OqO82ggCfVzoP
MNzGHMUQdmn2Xg31QWhB3mQ=
=A37l
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27 11:09       ` Jeff Mahoney
@ 2007-04-27 12:20         ` Takashi Iwai
  2007-04-27 15:17           ` Jeff Mahoney
  0 siblings, 1 reply; 10+ messages in thread
From: Takashi Iwai @ 2007-04-27 12:20 UTC (permalink / raw)
  To: Jeff Mahoney
  Cc: Andrew Morton, David Brownell, Linux Kernel list, reiserfs-dev

At Fri, 27 Apr 2007 07:09:01 -0400,
Jeff Mahoney wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Takashi Iwai wrote:
> > At Fri, 27 Apr 2007 12:09:03 +0200,
> > I wrote:
> >> 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
> >>
> >> but task is already holding lock:
> >>  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
> >>
> >> which lock already depends on the new lock.
> > The message disappears when I revert the patch:
> > 
> > commit 9b7f375505f5611efb562065b57814b28a81abc3
> > Author: Jeff Mahoney <jeffm@suse.com>
> > Date:   Mon Apr 23 14:41:17 2007 -0700
> > 
> >     reiserfs: fix xattr root locking/refcount bug
> >     
> > 
> > So, likely a newly introduced bug after rc7...
> 
> I got a message with a trace similar to this from Vladimir before I
> submitted that patch. I'm not sure how to annotate this, since the
> xattr_sem can never be taken in the manner described. Internal inodes
> are protected by I_PRIVATE.

Hm, then maybe my case was just a coincidence.

FWIW, I can reproduce the deadlock warning at each time I boot
non-patched 2.6.21, and after reverting the patch, it disappeared.


Takashi

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27 12:20         ` Takashi Iwai
@ 2007-04-27 15:17           ` Jeff Mahoney
  2007-04-27 16:21             ` Jeff Mahoney
  0 siblings, 1 reply; 10+ messages in thread
From: Jeff Mahoney @ 2007-04-27 15:17 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Andrew Morton, David Brownell, Linux Kernel list, reiserfs-dev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Takashi Iwai wrote:
> At Fri, 27 Apr 2007 07:09:01 -0400,
> Jeff Mahoney wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Takashi Iwai wrote:
>>> At Fri, 27 Apr 2007 12:09:03 +0200,
>>> I wrote:
>>>> 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>>>>
>>>> but task is already holding lock:
>>>>  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
>>>>
>>>> which lock already depends on the new lock.
>>> The message disappears when I revert the patch:
>>>
>>> commit 9b7f375505f5611efb562065b57814b28a81abc3
>>> Author: Jeff Mahoney <jeffm@suse.com>
>>> Date:   Mon Apr 23 14:41:17 2007 -0700
>>>
>>>     reiserfs: fix xattr root locking/refcount bug
>>>     
>>>
>>> So, likely a newly introduced bug after rc7...
>> I got a message with a trace similar to this from Vladimir before I
>> submitted that patch. I'm not sure how to annotate this, since the
>> xattr_sem can never be taken in the manner described. Internal inodes
>> are protected by I_PRIVATE.
> 
> Hm, then maybe my case was just a coincidence.
> 
> FWIW, I can reproduce the deadlock warning at each time I boot
> non-patched 2.6.21, and after reverting the patch, it disappeared.

Ok, so I took another look at the report Vladimir sent me. The trace he
ran into was in the delete inode path, but was still a race between the
xattr_sem and the inode sem. Since we're locking the xattr root on the
xattr read path now, this condition arises more freqently, but it's
really the same one he reported.

I'm using the default openSUSE config, which doesn't enable mutex
debugging. I'll rebuild with it, and hopefully come up with a way to
kill the warning.

- -Jeff

- --
Jeff Mahoney
SUSE Labs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iD8DBQFGMhP8LPWxlyuTD7IRAiInAJwO7Tpga98WvcPICFMSyvb0vSAvrQCdEbal
XScT+lxIu181A6KNzKhNuYw=
=K/gK
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27 15:17           ` Jeff Mahoney
@ 2007-04-27 16:21             ` Jeff Mahoney
  2007-04-27 17:01               ` Takashi Iwai
  2007-04-27 17:11               ` Antonino A. Daplas
  0 siblings, 2 replies; 10+ messages in thread
From: Jeff Mahoney @ 2007-04-27 16:21 UTC (permalink / raw)
  To: Jeff Mahoney
  Cc: Takashi Iwai, Andrew Morton, David Brownell, Linux Kernel list,
	reiserfs-dev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Jeff Mahoney wrote:
> Takashi Iwai wrote:
>>> At Fri, 27 Apr 2007 07:09:01 -0400,
>>> Jeff Mahoney wrote:
>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>> Hash: SHA1
>>>>
>>>> Takashi Iwai wrote:
>>>>> At Fri, 27 Apr 2007 12:09:03 +0200,
>>>>> I wrote:
>>>>>> 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
>>>>>>
>>>>>> but task is already holding lock:
>>>>>>  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
>>>>>>
>>>>>> which lock already depends on the new lock.
>>>>> The message disappears when I revert the patch:
>>>>>
>>>>> commit 9b7f375505f5611efb562065b57814b28a81abc3
>>>>> Author: Jeff Mahoney <jeffm@suse.com>
>>>>> Date:   Mon Apr 23 14:41:17 2007 -0700
>>>>>
>>>>>     reiserfs: fix xattr root locking/refcount bug
>>>>>     
>>>>>
>>>>> So, likely a newly introduced bug after rc7...
>>>> I got a message with a trace similar to this from Vladimir before I
>>>> submitted that patch. I'm not sure how to annotate this, since the
>>>> xattr_sem can never be taken in the manner described. Internal inodes
>>>> are protected by I_PRIVATE.
>>> Hm, then maybe my case was just a coincidence.
>>>
>>> FWIW, I can reproduce the deadlock warning at each time I boot
>>> non-patched 2.6.21, and after reverting the patch, it disappeared.
> 
> Ok, so I took another look at the report Vladimir sent me. The trace he
> ran into was in the delete inode path, but was still a race between the
> xattr_sem and the inode sem. Since we're locking the xattr root on the
> xattr read path now, this condition arises more freqently, but it's
> really the same one he reported.
> 
> I'm using the default openSUSE config, which doesn't enable mutex
> debugging. I'll rebuild with it, and hopefully come up with a way to
> kill the warning.

I still didn't get the warning, but can you try this and let me know
if it fixes it?

- -Jeff

- --- a/fs/reiserfs/xattr.c	2007-04-22 10:53:10.000000000 -0400
+++ b/fs/reiserfs/xattr.c	2007-04-27 12:09:02.000000000 -0400
@@ -68,7 +68,7 @@
 	if (!privroot)
 		return ERR_PTR(-ENODATA);
 
- -	mutex_lock(&privroot->d_inode->i_mutex);
+	mutex_lock_nested(&privroot->d_inode->i_mutex, I_MUTEX_XATTR);
 	if (REISERFS_SB(sb)->xattr_root) {
 		xaroot = dget(REISERFS_SB(sb)->xattr_root);
 		goto out;

- -- 
Jeff Mahoney
SUSE Labs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iD8DBQFGMiL1LPWxlyuTD7IRAuwoAKCob0DLVBcmeOApOr9vA5cVFRwBewCfTU/U
jwIjK+Uy4RfXKsag5Uamzew=
=svba
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27 16:21             ` Jeff Mahoney
@ 2007-04-27 17:01               ` Takashi Iwai
  2007-04-27 17:11               ` Antonino A. Daplas
  1 sibling, 0 replies; 10+ messages in thread
From: Takashi Iwai @ 2007-04-27 17:01 UTC (permalink / raw)
  To: Jeff Mahoney
  Cc: Andrew Morton, David Brownell, Linux Kernel list, reiserfs-dev

At Fri, 27 Apr 2007 12:21:09 -0400,
Jeff Mahoney wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Jeff Mahoney wrote:
> > Takashi Iwai wrote:
> >>> At Fri, 27 Apr 2007 07:09:01 -0400,
> >>> Jeff Mahoney wrote:
> >>>> -----BEGIN PGP SIGNED MESSAGE-----
> >>>> Hash: SHA1
> >>>>
> >>>> Takashi Iwai wrote:
> >>>>> At Fri, 27 Apr 2007 12:09:03 +0200,
> >>>>> I wrote:
> >>>>>> 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
> >>>>>>
> >>>>>> but task is already holding lock:
> >>>>>>  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
> >>>>>>
> >>>>>> which lock already depends on the new lock.
> >>>>> The message disappears when I revert the patch:
> >>>>>
> >>>>> commit 9b7f375505f5611efb562065b57814b28a81abc3
> >>>>> Author: Jeff Mahoney <jeffm@suse.com>
> >>>>> Date:   Mon Apr 23 14:41:17 2007 -0700
> >>>>>
> >>>>>     reiserfs: fix xattr root locking/refcount bug
> >>>>>     
> >>>>>
> >>>>> So, likely a newly introduced bug after rc7...
> >>>> I got a message with a trace similar to this from Vladimir before I
> >>>> submitted that patch. I'm not sure how to annotate this, since the
> >>>> xattr_sem can never be taken in the manner described. Internal inodes
> >>>> are protected by I_PRIVATE.
> >>> Hm, then maybe my case was just a coincidence.
> >>>
> >>> FWIW, I can reproduce the deadlock warning at each time I boot
> >>> non-patched 2.6.21, and after reverting the patch, it disappeared.
> > 
> > Ok, so I took another look at the report Vladimir sent me. The trace he
> > ran into was in the delete inode path, but was still a race between the
> > xattr_sem and the inode sem. Since we're locking the xattr root on the
> > xattr read path now, this condition arises more freqently, but it's
> > really the same one he reported.
> > 
> > I'm using the default openSUSE config, which doesn't enable mutex
> > debugging. I'll rebuild with it, and hopefully come up with a way to
> > kill the warning.
> 
> I still didn't get the warning, but can you try this and let me know
> if it fixes it?

Yes, it seems to fix the problem.


Thanks,

Takashi

> 
> - -Jeff
> 
> - --- a/fs/reiserfs/xattr.c	2007-04-22 10:53:10.000000000 -0400
> +++ b/fs/reiserfs/xattr.c	2007-04-27 12:09:02.000000000 -0400
> @@ -68,7 +68,7 @@
>  	if (!privroot)
>  		return ERR_PTR(-ENODATA);
>  
> - -	mutex_lock(&privroot->d_inode->i_mutex);
> +	mutex_lock_nested(&privroot->d_inode->i_mutex, I_MUTEX_XATTR);
>  	if (REISERFS_SB(sb)->xattr_root) {
>  		xaroot = dget(REISERFS_SB(sb)->xattr_root);
>  		goto out;
> 
> - -- 
> Jeff Mahoney
> SUSE Labs
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (GNU/Linux)
> Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org
> 
> iD8DBQFGMiL1LPWxlyuTD7IRAuwoAKCob0DLVBcmeOApOr9vA5cVFRwBewCfTU/U
> jwIjK+Uy4RfXKsag5Uamzew=
> =svba
> -----END PGP SIGNATURE-----
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: 2.6.21 reiserfs -- cicular locking?
  2007-04-27 16:21             ` Jeff Mahoney
  2007-04-27 17:01               ` Takashi Iwai
@ 2007-04-27 17:11               ` Antonino A. Daplas
  1 sibling, 0 replies; 10+ messages in thread
From: Antonino A. Daplas @ 2007-04-27 17:11 UTC (permalink / raw)
  To: Jeff Mahoney
  Cc: Jeff Mahoney, Takashi Iwai, Andrew Morton, David Brownell,
	Linux Kernel list, reiserfs-dev

On Fri, 2007-04-27 at 12:21 -0400, Jeff Mahoney wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Jeff Mahoney wrote:
> > Takashi Iwai wrote:
> >>> At Fri, 27 Apr 2007 07:09:01 -0400,
> >>> Jeff Mahoney wrote:
> >>>> -----BEGIN PGP SIGNED MESSAGE-----
> >>>> Hash: SHA1
> >>>>
> >>>> Takashi Iwai wrote:
> >>>>> At Fri, 27 Apr 2007 12:09:03 +0200,
> >>>>> I wrote:
> >>>>>> 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: [<e08a5236>] reiserfs_cache_default_acl+0x2a/0x9c [reiserfs]
> >>>>>>
> >>>>>> but task is already holding lock:
> >>>>>>  (&inode->i_mutex){--..}, at: [<c016d7dc>] open_namei+0xe2/0x5a2
> >>>>>>
> >>>>>> which lock already depends on the new lock.
> >>>>> The message disappears when I revert the patch:
> >>>>>
> >>>>> commit 9b7f375505f5611efb562065b57814b28a81abc3
> >>>>> Author: Jeff Mahoney <jeffm@suse.com>
> >>>>> Date:   Mon Apr 23 14:41:17 2007 -0700
> >>>>>
> >>>>>     reiserfs: fix xattr root locking/refcount bug
> >>>>>     
> >>>>>
> >>>>> So, likely a newly introduced bug after rc7...
> >>>> I got a message with a trace similar to this from Vladimir before I
> >>>> submitted that patch. I'm not sure how to annotate this, since the
> >>>> xattr_sem can never be taken in the manner described. Internal inodes
> >>>> are protected by I_PRIVATE.
> >>> Hm, then maybe my case was just a coincidence.
> >>>
> >>> FWIW, I can reproduce the deadlock warning at each time I boot
> >>> non-patched 2.6.21, and after reverting the patch, it disappeared.
> > 
> > Ok, so I took another look at the report Vladimir sent me. The trace he
> > ran into was in the delete inode path, but was still a race between the
> > xattr_sem and the inode sem. Since we're locking the xattr root on the
> > xattr read path now, this condition arises more freqently, but it's
> > really the same one he reported.
> > 
> > I'm using the default openSUSE config, which doesn't enable mutex
> > debugging. I'll rebuild with it, and hopefully come up with a way to
> > kill the warning.
> 
> I still didn't get the warning, but can you try this and let me know
> if it fixes it?

I also reported this in another thread.  With this patch, I haven't seen
the tracing anymore.

Tony



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2007-04-27 17:12 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-04-26 23:40 2.6.21 reiserfs -- cicular locking? David Brownell
2007-04-27  5:44 ` Andrew Morton
2007-04-27 10:09   ` Takashi Iwai
2007-04-27 10:53     ` Takashi Iwai
2007-04-27 11:09       ` Jeff Mahoney
2007-04-27 12:20         ` Takashi Iwai
2007-04-27 15:17           ` Jeff Mahoney
2007-04-27 16:21             ` Jeff Mahoney
2007-04-27 17:01               ` Takashi Iwai
2007-04-27 17:11               ` Antonino A. Daplas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).