public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
@ 2006-07-25 22:16 Jesper Juhl
  2006-07-25 23:29 ` Andreas Dilger
  2006-07-26  5:33 ` Andrew Morton
  0 siblings, 2 replies; 13+ messages in thread
From: Jesper Juhl @ 2006-07-25 22:16 UTC (permalink / raw)
  To: Linux Kernel Mailing List
  Cc: Hans Reiser, Alexander Viro, Al Viro, reiserfs-dev, reiserfs-list

Hi,

I just got this from the lock validator :

=============================================
[ INFO: possible recursive locking detected ]
---------------------------------------------
rm/2498 is trying to acquire lock:
 (&inode->i_mutex){--..}, at: [<c031c3ac>] mutex_lock+0x1c/0x20

but task is already holding lock:
 (&inode->i_mutex){--..}, at: [<c031c3ac>] mutex_lock+0x1c/0x20

other info that might help us debug this:
2 locks held by rm/2498:
 #0:  (&inode->i_mutex/1){--..}, at: [<c017b6f3>] do_rmdir+0x73/0xe0
 #1:  (&inode->i_mutex){--..}, at: [<c031c3ac>] mutex_lock+0x1c/0x20

stack backtrace:
 [<c0103faa>] show_trace_log_lvl+0x12a/0x150
 [<c0103fe2>] show_trace+0x12/0x20
 [<c01040f9>] dump_stack+0x19/0x20
 [<c0138a19>] print_deadlock_bug+0xb9/0xd0
 [<c0138a9b>] check_deadlock+0x6b/0x80
 [<c013a344>] __lock_acquire+0x354/0x990
 [<c013b0a5>] lock_acquire+0x75/0xa0
 [<c031c430>] __mutex_lock_slowpath+0x70/0x2a0
 [<c031c3ac>] mutex_lock+0x1c/0x20
 [<c01ac8b3>] reiserfs_delete_inode+0x63/0xd0
 [<c01854e1>] generic_delete_inode+0x61/0xe0
 [<c01856af>] generic_drop_inode+0xf/0x20
 [<c0185716>] iput+0x56/0x80
 [<c01826de>] dentry_iput+0x5e/0xc0
 [<c01827e8>] dput+0xa8/0x170
 [<c0182c0b>] prune_one_dentry+0x6b/0x80
 [<c0182d7b>] prune_dcache+0x15b/0x170
 [<c0182ff0>] shrink_dcache_parent+0x10/0x20
 [<c017b55a>] dentry_unhash+0x5a/0xc0
 [<c017b61f>] vfs_rmdir+0x5f/0xc0
 [<c017b74d>] do_rmdir+0xcd/0xe0
 [<c017b770>] sys_rmdir+0x10/0x20
 [<c010304b>] syscall_call+0x7/0xb
 [<b7e79d7d>] 0xb7e79d7d


What I did to provoke it was to run 6 different xterms (with a bash
shell) with the following loops in them in a test directory that was
initially empty :

xterm1:   while true; do mkdir a; done
xterm2:   while true; do rmdir a; done
xterm3:   while true; do touch a/foo; done
xterm4:   while true; do find .; done
xterm5:   while true; do sync; sleep 1; done
xterm6:   while true; do rm -r a; done

I then left that alone for ~15 minutes and then lockdep complained.

This was on a reiserfs 3.6 filesystem.
My kernel version is 2.6.18-rc2-git5 (i386 build, not x86_64)
The CPU is a Athlon64 X2 4400+

Some details :

$ uname -a
Linux dragon 2.6.18-rc2-git5 #1 SMP PREEMPT Tue Jul 25 22:58:52 CEST
2006 i686 athlon-4 i386 GNU/Linux

juhl@dragon:~/download/kernel/linux-2.6.18-rc2-git5$ scripts/ver_linux
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.

Linux dragon 2.6.18-rc2-git5 #1 SMP PREEMPT Tue Jul 25 22:58:52 CEST
2006 i686 athlon-4 i386 GNU/Linux

Gnu C                  3.4.6
Gnu make               3.81
binutils               2.15.92.0.2
util-linux             2.12r
mount                  2.12r
module-init-tools      3.2.2
e2fsprogs              1.39
reiserfsprogs          3.6.19
quota-tools            3.13.
PPP                    2.4.4b1
Linux C Library        2.3.6
Dynamic linker (ldd)   2.3.6
Linux C++ Library      6.0.3
Procps                 3.2.7
Net-tools              1.60
Kbd                    1.12
Sh-utils               5.97
udev                   071
Modules Loaded         snd_seq_oss snd_seq_midi_event snd_seq
snd_pcm_oss snd_mixer_oss uhci_hcd usbcore snd_emu10k1 snd_rawmidi
snd_ac97_codec snd_ac97_bus snd_pcm snd_seq_device snd_timer
snd_page_alloc snd_util_mem snd_hwdep snd agpgart

If more info is needed then just ask and I'll be happy to provide what I can.

-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-25 22:16 possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5 Jesper Juhl
@ 2006-07-25 23:29 ` Andreas Dilger
  2006-07-29 22:18   ` Jesper Juhl
  2006-07-26  5:33 ` Andrew Morton
  1 sibling, 1 reply; 13+ messages in thread
From: Andreas Dilger @ 2006-07-25 23:29 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Linux Kernel Mailing List, Hans Reiser, Alexander Viro, Al Viro,
	reiserfs-dev, reiserfs-list

On Jul 26, 2006  00:16 +0200, Jesper Juhl wrote:
> What I did to provoke it was to run 6 different xterms (with a bash
> shell) with the following loops in them in a test directory that was
> initially empty :
> 
> xterm1:   while true; do mkdir a; done
> xterm2:   while true; do rmdir a; done
> xterm3:   while true; do touch a/foo; done
> xterm4:   while true; do find .; done
> xterm5:   while true; do sync; sleep 1; done
> xterm6:   while true; do rm -r a; done

See racer test at ftp.lustre.org/pub/benchmarks/racer-lustre.tar.gz

It does the above, but a bunch more things and is a truly pathalogical
test script that does lots of "stupid user tricks", unlike normal tests
which are only doing operations that expect to be successful.

PS - during the racer.sh test run "rm" is known to segfault after hitting
     an internal assertion, nobody is sure why.
PPS- I don't know who wrote this program, it was originally posted by
     someone not the author to linux-fsdevel or something.

Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.


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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-25 22:16 possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5 Jesper Juhl
  2006-07-25 23:29 ` Andreas Dilger
@ 2006-07-26  5:33 ` Andrew Morton
  2006-07-26  6:32   ` [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode Arjan van de Ven
  2006-07-26  6:47   ` Arjan van de Ven
  1 sibling, 2 replies; 13+ messages in thread
From: Andrew Morton @ 2006-07-26  5:33 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: linux-kernel, reiser, viro, viro, reiserfs-dev, reiserfs-list,
	Ingo Molnar, Arjan van de Ven

On Wed, 26 Jul 2006 00:16:42 +0200
"Jesper Juhl" <jesper.juhl@gmail.com> wrote:

> I just got this from the lock validator :
> 
> =============================================
> [ INFO: possible recursive locking detected ]
> ---------------------------------------------
> rm/2498 is trying to acquire lock:
>  (&inode->i_mutex){--..}, at: [<c031c3ac>] mutex_lock+0x1c/0x20
> 
> but task is already holding lock:
>  (&inode->i_mutex){--..}, at: [<c031c3ac>] mutex_lock+0x1c/0x20
> 
> other info that might help us debug this:
> 2 locks held by rm/2498:
>  #0:  (&inode->i_mutex/1){--..}, at: [<c017b6f3>] do_rmdir+0x73/0xe0
>  #1:  (&inode->i_mutex){--..}, at: [<c031c3ac>] mutex_lock+0x1c/0x20
> 
> stack backtrace:
>  [<c0103faa>] show_trace_log_lvl+0x12a/0x150
>  [<c0103fe2>] show_trace+0x12/0x20
>  [<c01040f9>] dump_stack+0x19/0x20
>  [<c0138a19>] print_deadlock_bug+0xb9/0xd0
>  [<c0138a9b>] check_deadlock+0x6b/0x80
>  [<c013a344>] __lock_acquire+0x354/0x990
>  [<c013b0a5>] lock_acquire+0x75/0xa0
>  [<c031c430>] __mutex_lock_slowpath+0x70/0x2a0
>  [<c031c3ac>] mutex_lock+0x1c/0x20
>  [<c01ac8b3>] reiserfs_delete_inode+0x63/0xd0
>  [<c01854e1>] generic_delete_inode+0x61/0xe0
>  [<c01856af>] generic_drop_inode+0xf/0x20
>  [<c0185716>] iput+0x56/0x80
>  [<c01826de>] dentry_iput+0x5e/0xc0
>  [<c01827e8>] dput+0xa8/0x170
>  [<c0182c0b>] prune_one_dentry+0x6b/0x80
>  [<c0182d7b>] prune_dcache+0x15b/0x170
>  [<c0182ff0>] shrink_dcache_parent+0x10/0x20
>  [<c017b55a>] dentry_unhash+0x5a/0xc0
>  [<c017b61f>] vfs_rmdir+0x5f/0xc0
>  [<c017b74d>] do_rmdir+0xcd/0xe0
>  [<c017b770>] sys_rmdir+0x10/0x20
>  [<c010304b>] syscall_call+0x7/0xb
>  [<b7e79d7d>] 0xb7e79d7d

The VFS takes the directory i_mutex and reiserfs_delete_inode() takes the
to-be-deleted file's i_mutex.

That's notabug and lockdep will need to be taught about it.

That being said, the reiserfs locking appears to be unneeded - this inode
is going down and nobody else can look it up, so what is to be locked
against?

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

* [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode
  2006-07-26  5:33 ` Andrew Morton
@ 2006-07-26  6:32   ` Arjan van de Ven
  2006-07-26  6:38     ` Arjan van de Ven
  2006-07-26  6:47   ` Arjan van de Ven
  1 sibling, 1 reply; 13+ messages in thread
From: Arjan van de Ven @ 2006-07-26  6:32 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, reiserfs-list, reiserfs-dev, viro, viro, reiser,
	linux-kernel, Jesper Juhl


> The VFS takes the directory i_mutex and reiserfs_delete_inode() takes the
> to-be-deleted file's i_mutex.
> 
> That's notabug and lockdep will need to be taught about it.

Actually the annotation is in vfs_rmdir() since that is where the parent
is taken (this may sound odd but the I_MUTEX_* ordering rules require
the parent taking to be annotated rather than the child)

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>

Index: linux-2.6.18-rc2-git5/fs/namei.c
===================================================================
--- linux-2.6.18-rc2-git5.orig/fs/namei.c
+++ linux-2.6.18-rc2-git5/fs/namei.c
@@ -1967,7 +1967,7 @@ int vfs_rmdir(struct inode *dir, struct 
 
 	DQUOT_INIT(dir);
 
-	mutex_lock(&dentry->d_inode->i_mutex);
+	mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_PARENT);
 	dentry_unhash(dentry);
 	if (d_mountpoint(dentry))
 		error = -EBUSY;


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

* Re: [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode
  2006-07-26  6:32   ` [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode Arjan van de Ven
@ 2006-07-26  6:38     ` Arjan van de Ven
  0 siblings, 0 replies; 13+ messages in thread
From: Arjan van de Ven @ 2006-07-26  6:38 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Jesper Juhl, linux-kernel, reiser, viro, viro, reiserfs-dev,
	reiserfs-list, Ingo Molnar

On Wed, 2006-07-26 at 08:32 +0200, Arjan van de Ven wrote:
> > The VFS takes the directory i_mutex and reiserfs_delete_inode() takes the
> > to-be-deleted file's i_mutex.
> > 
> > That's notabug and lockdep will need to be taught about it.
> 
> Actually the annotation is in vfs_rmdir() since that is where the parent
> is taken (this may sound odd but the I_MUTEX_* ordering rules require
> the parent taking to be annotated rather than the child)


Ignore this; this one is wrong, more later


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

* [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode
  2006-07-26  5:33 ` Andrew Morton
  2006-07-26  6:32   ` [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode Arjan van de Ven
@ 2006-07-26  6:47   ` Arjan van de Ven
  2006-07-26  7:04     ` Andrew Morton
  1 sibling, 1 reply; 13+ messages in thread
From: Arjan van de Ven @ 2006-07-26  6:47 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Ingo Molnar, reiserfs-list, reiserfs-dev, viro, viro, reiser,
	linux-kernel, Jesper Juhl

On Tue, 2006-07-25 at 22:33 -0700, Andrew Morton wrote:
> On Wed, 26 Jul 2006 00:16:42 +0200
> The VFS takes the directory i_mutex and reiserfs_delete_inode() takes the
> to-be-deleted file's i_mutex.
> 
> That's notabug and lockdep will need to be taught about it.

[2nd try, now with coffee]

This is another 3 level locking ordering:
do_rmdir takes the mutex of the parent directory
vfs_rmdir takes the mutex of the victim
shrink_dcache_parent ends up in the reiser delete_inode which takes the
mutex of dead children of the victim

the I_MUTEX ordering rules are

I_MUTEX_PARENT -> I_MUTEX_CHILD -> <normal>

do_rmdir already has I_MUTEX_PARENT, delete_inode does <normal> so
vfs_rmdir needs I_MUTEX_CHILD (which is also logical)

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>

Index: linux-2.6.18-rc2-git5/fs/namei.c
===================================================================
--- linux-2.6.18-rc2-git5.orig/fs/namei.c
+++ linux-2.6.18-rc2-git5/fs/namei.c
@@ -1967,7 +1967,7 @@ int vfs_rmdir(struct inode *dir, struct 
 
 	DQUOT_INIT(dir);
 
-	mutex_lock(&dentry->d_inode->i_mutex);
+	mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_CHILD);
 	dentry_unhash(dentry);
 	if (d_mountpoint(dentry))
 		error = -EBUSY;


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

* Re: [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode
  2006-07-26  6:47   ` Arjan van de Ven
@ 2006-07-26  7:04     ` Andrew Morton
  0 siblings, 0 replies; 13+ messages in thread
From: Andrew Morton @ 2006-07-26  7:04 UTC (permalink / raw)
  To: Arjan van de Ven
  Cc: mingo, reiserfs-list, reiserfs-dev, viro, viro, reiser,
	linux-kernel, jesper.juhl

On Wed, 26 Jul 2006 08:47:21 +0200
Arjan van de Ven <arjan@linux.intel.com> wrote:

> On Tue, 2006-07-25 at 22:33 -0700, Andrew Morton wrote:
> > On Wed, 26 Jul 2006 00:16:42 +0200
> > The VFS takes the directory i_mutex and reiserfs_delete_inode() takes the
> > to-be-deleted file's i_mutex.
> > 
> > That's notabug and lockdep will need to be taught about it.
> 
> [2nd try, now with coffee]
> 
> This is another 3 level locking ordering:
> do_rmdir takes the mutex of the parent directory
> vfs_rmdir takes the mutex of the victim
> shrink_dcache_parent ends up in the reiser delete_inode which takes the
> mutex of dead children of the victim
> 
> the I_MUTEX ordering rules are
> 
> I_MUTEX_PARENT -> I_MUTEX_CHILD -> <normal>
> 
> do_rmdir already has I_MUTEX_PARENT, delete_inode does <normal> so
> vfs_rmdir needs I_MUTEX_CHILD (which is also logical)
> 
> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
> 
> Index: linux-2.6.18-rc2-git5/fs/namei.c
> ===================================================================
> --- linux-2.6.18-rc2-git5.orig/fs/namei.c
> +++ linux-2.6.18-rc2-git5/fs/namei.c
> @@ -1967,7 +1967,7 @@ int vfs_rmdir(struct inode *dir, struct 
>  
>  	DQUOT_INIT(dir);
>  
> -	mutex_lock(&dentry->d_inode->i_mutex);
> +	mutex_lock_nested(&dentry->d_inode->i_mutex, I_MUTEX_CHILD);
>  	dentry_unhash(dentry);
>  	if (d_mountpoint(dentry))
>  		error = -EBUSY;

If there's a reason why a filesystem shuld take an i_mutex under
vfs_rmdir() then fine.  But I don't think there is, in which case the
warning can be kept.

Can a reiserfs person please comment?

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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-25 23:29 ` Andreas Dilger
@ 2006-07-29 22:18   ` Jesper Juhl
  2006-07-29 23:08     ` Hans Reiser
  0 siblings, 1 reply; 13+ messages in thread
From: Jesper Juhl @ 2006-07-29 22:18 UTC (permalink / raw)
  To: Jesper Juhl, Linux Kernel Mailing List, Hans Reiser,
	Alexander Viro, Al Viro, reiserfs-dev, reiserfs-list

On 26/07/06, Andreas Dilger <adilger@clusterfs.com> wrote:
> On Jul 26, 2006  00:16 +0200, Jesper Juhl wrote:
> > What I did to provoke it was to run 6 different xterms (with a bash
> > shell) with the following loops in them in a test directory that was
> > initially empty :
> >
> > xterm1:   while true; do mkdir a; done
> > xterm2:   while true; do rmdir a; done
> > xterm3:   while true; do touch a/foo; done
> > xterm4:   while true; do find .; done
> > xterm5:   while true; do sync; sleep 1; done
> > xterm6:   while true; do rm -r a; done
>
> See racer test at ftp.lustre.org/pub/benchmarks/racer-lustre.tar.gz
>
> It does the above, but a bunch more things and is a truly pathalogical
> test script that does lots of "stupid user tricks", unlike normal tests
> which are only doing operations that expect to be successful.
>
> PS - during the racer.sh test run "rm" is known to segfault after hitting
>      an internal assertion, nobody is sure why.
> PPS- I don't know who wrote this program, it was originally posted by
>      someone not the author to linux-fsdevel or something.
>

Thanks. That's a nice little test suite.

-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-29 22:18   ` Jesper Juhl
@ 2006-07-29 23:08     ` Hans Reiser
  2006-07-30  6:17       ` Jesper Juhl
  0 siblings, 1 reply; 13+ messages in thread
From: Hans Reiser @ 2006-07-29 23:08 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Linux Kernel Mailing List, Alexander Viro, Al Viro, reiserfs-dev,
	reiserfs-list

Jesper Juhl wrote:

>
> Thanks. That's a nice little test suite.
>
Yes, it is quite useful, our developers have added it to the regression
suite....

Hans

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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-30  6:17       ` Jesper Juhl
@ 2006-07-30  0:46         ` Hans Reiser
  2006-07-30 10:08           ` Jesper Juhl
  2006-07-31 19:34         ` Alexander Zarochentsev
  1 sibling, 1 reply; 13+ messages in thread
From: Hans Reiser @ 2006-07-30  0:46 UTC (permalink / raw)
  To: Jesper Juhl
  Cc: Linux Kernel Mailing List, Alexander Viro, Al Viro, reiserfs-dev,
	reiserfs-list, akpm, Alexander Zarochentcev

Jesper Juhl wrote:

> On 30/07/06, Hans Reiser <reiser@namesys.com> wrote:
>
>> Jesper Juhl wrote:
>>
>> >
>> > Thanks. That's a nice little test suite.
>> >
>> Yes, it is quite useful, our developers have added it to the regression
>> suite....
>>
> That's nice.
>
> Now how about that lock validator message I managed to tease out?
>
> Akpm said "... the reiserfs locking appears to be unneeded - this inode
> is going down and nobody else can look it up, so what is to be locked
> against?" - can you comment on that?
>
>
Err, how about Zam handles all locking issues and this is Sunday with
the family?  I know, lame, but he'll answer you on Monday Russian
time.....;-)

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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-29 23:08     ` Hans Reiser
@ 2006-07-30  6:17       ` Jesper Juhl
  2006-07-30  0:46         ` Hans Reiser
  2006-07-31 19:34         ` Alexander Zarochentsev
  0 siblings, 2 replies; 13+ messages in thread
From: Jesper Juhl @ 2006-07-30  6:17 UTC (permalink / raw)
  To: Hans Reiser
  Cc: Linux Kernel Mailing List, Alexander Viro, Al Viro, reiserfs-dev,
	reiserfs-list, akpm

On 30/07/06, Hans Reiser <reiser@namesys.com> wrote:
> Jesper Juhl wrote:
>
> >
> > Thanks. That's a nice little test suite.
> >
> Yes, it is quite useful, our developers have added it to the regression
> suite....
>
That's nice.

Now how about that lock validator message I managed to tease out?

Akpm said "... the reiserfs locking appears to be unneeded - this inode
is going down and nobody else can look it up, so what is to be locked
against?" - can you comment on that?


-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-30  0:46         ` Hans Reiser
@ 2006-07-30 10:08           ` Jesper Juhl
  0 siblings, 0 replies; 13+ messages in thread
From: Jesper Juhl @ 2006-07-30 10:08 UTC (permalink / raw)
  To: Hans Reiser
  Cc: Linux Kernel Mailing List, Alexander Viro, Al Viro, reiserfs-dev,
	reiserfs-list, akpm, Alexander Zarochentcev

On 30/07/06, Hans Reiser <reiser@namesys.com> wrote:
> Jesper Juhl wrote:
>
> > On 30/07/06, Hans Reiser <reiser@namesys.com> wrote:
> >
> >> Jesper Juhl wrote:
> >>
> >> >
> >> > Thanks. That's a nice little test suite.
> >> >
> >> Yes, it is quite useful, our developers have added it to the regression
> >> suite....
> >>
> > That's nice.
> >
> > Now how about that lock validator message I managed to tease out?
> >
> > Akpm said "... the reiserfs locking appears to be unneeded - this inode
> > is going down and nobody else can look it up, so what is to be locked
> > against?" - can you comment on that?
> >
> >
> Err, how about Zam handles all locking issues and this is Sunday with
> the family?  I know, lame, but he'll answer you on Monday Russian
> time.....;-)
>
:-) Not a problem at all.

-- 
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

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

* Re: possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5
  2006-07-30  6:17       ` Jesper Juhl
  2006-07-30  0:46         ` Hans Reiser
@ 2006-07-31 19:34         ` Alexander Zarochentsev
  1 sibling, 0 replies; 13+ messages in thread
From: Alexander Zarochentsev @ 2006-07-31 19:34 UTC (permalink / raw)
  To: akpm
  Cc: reiserfs-list, Jesper Juhl, Hans Reiser,
	Linux Kernel Mailing List, Alexander Viro, Al Viro, reiserfs-dev

Hello,

On Sunday 30 July 2006 10:17, Jesper Juhl wrote:
> On 30/07/06, Hans Reiser <reiser@namesys.com> wrote:
> > Jesper Juhl wrote:
> > > Thanks. That's a nice little test suite.
> >
> > Yes, it is quite useful, our developers have added it to the
> > regression suite....
>
> That's nice.
>
> Now how about that lock validator message I managed to tease out?
>
> Akpm said "... the reiserfs locking appears to be unneeded - this
> inode is going down and nobody else can look it up, so what is to be
> locked against?" - can you comment on that?

Thanks. it is correct.
Andrew, please apply the following patch: 

i_mutex does not need to be locked in reiserfs_delete_inode.

Signed-off-by: Alexander Zarochentsev <zam@namesys.com>

fs/reiserfs/inode.c |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)

Index: linux-2.6-git/fs/reiserfs/inode.c
===================================================================
--- linux-2.6-git.orig/fs/reiserfs/inode.c
+++ linux-2.6-git/fs/reiserfs/inode.c
@@ -37,14 +37,10 @@ void reiserfs_delete_inode(struct inode 
 
 	/* The = 0 happens when we abort creating a new inode for some reason like lack of space.. */
 	if (!(inode->i_state & I_NEW) && INODE_PKEY(inode)->k_objectid != 0) {	/* also handles bad_inode case */
-		mutex_lock(&inode->i_mutex);
-
 		reiserfs_delete_xattrs(inode);
 
-		if (journal_begin(&th, inode->i_sb, jbegin_count)) {
-			mutex_unlock(&inode->i_mutex);
+		if (journal_begin(&th, inode->i_sb, jbegin_count))
 			goto out;
-		}
 		reiserfs_update_inode_transaction(inode);
 
 		err = reiserfs_delete_object(&th, inode);
@@ -55,12 +51,8 @@ void reiserfs_delete_inode(struct inode 
 		if (!err) 
 			DQUOT_FREE_INODE(inode);
 
-		if (journal_end(&th, inode->i_sb, jbegin_count)) {
-			mutex_unlock(&inode->i_mutex);
+		if (journal_end(&th, inode->i_sb, jbegin_count))
 			goto out;
-		}
-
-		mutex_unlock(&inode->i_mutex);
 
 		/* check return value from reiserfs_delete_object after
 		 * ending the transaction



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

end of thread, other threads:[~2006-07-31 19:34 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-25 22:16 possible recursive locking detected - while running fs operations in loops - 2.6.18-rc2-git5 Jesper Juhl
2006-07-25 23:29 ` Andreas Dilger
2006-07-29 22:18   ` Jesper Juhl
2006-07-29 23:08     ` Hans Reiser
2006-07-30  6:17       ` Jesper Juhl
2006-07-30  0:46         ` Hans Reiser
2006-07-30 10:08           ` Jesper Juhl
2006-07-31 19:34         ` Alexander Zarochentsev
2006-07-26  5:33 ` Andrew Morton
2006-07-26  6:32   ` [patch] lockdep: annotate vfs_rmdir for filesystems that take i_mutex in delete_inode Arjan van de Ven
2006-07-26  6:38     ` Arjan van de Ven
2006-07-26  6:47   ` Arjan van de Ven
2006-07-26  7:04     ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox