From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756227AbXD0RB1 (ORCPT ); Fri, 27 Apr 2007 13:01:27 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756225AbXD0RB0 (ORCPT ); Fri, 27 Apr 2007 13:01:26 -0400 Received: from ns1.suse.de ([195.135.220.2]:41835 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756215AbXD0RBT (ORCPT ); Fri, 27 Apr 2007 13:01:19 -0400 Date: Fri, 27 Apr 2007 19:01:16 +0200 Message-ID: From: Takashi Iwai To: Jeff Mahoney Cc: Andrew Morton , David Brownell , Linux Kernel list , reiserfs-dev@namesys.com Subject: Re: 2.6.21 reiserfs -- cicular locking? In-Reply-To: <463222F5.7080209@suse.de> References: <200704261640.15068.david-b@pacbell.net> <20070426224408.fd525b46.akpm@linux-foundation.org> <4631D9CD.4050106@suse.com> <463213FD.3060401@suse.com> <463222F5.7080209@suse.de> 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 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: [] 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 message disappears when I revert the patch: > >>>>> > >>>>> commit 9b7f375505f5611efb562065b57814b28a81abc3 > >>>>> Author: Jeff Mahoney > >>>>> 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----- >