From mboxrd@z Thu Jan 1 00:00:00 1970 From: Li Zefan Subject: Re: [cgroup or VFS ?] INFO: possible recursive locking detected Date: Tue, 10 Feb 2009 11:06:39 +0800 Message-ID: <4990EF3F.3010501@cn.fujitsu.com> References: <49617D2E.8050502@cn.fujitsu.com> <496576E7.1@cn.fujitsu.com> <20090209112321.GW28946@ZenIV.linux.org.uk> <1234180131.5951.85.camel@laptop> Mime-Version: 1.0 Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 7bit Cc: LKML , Andrew Morton , Paul Menage , Arjan van de Ven , linux-fsdevel@vger.kernel.org To: Peter Zijlstra , Al Viro Return-path: Received: from cn.fujitsu.com ([222.73.24.84]:49533 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1752306AbZBJDHQ (ORCPT ); Mon, 9 Feb 2009 22:07:16 -0500 In-Reply-To: <1234180131.5951.85.camel@laptop> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: > It seems to me we can simply put the new s_umount instance in a > different subclass. Its a bit unusual to use _nested for the outer lock, > but lockdep doesn't particularly cares about subclass order. > > If there's any issue with the callers of sget() assuming the s_umount > lock being of sublcass 0, then there is another annotation we can use to > fix that, but lets not bother with that if this is sufficient. > > Signed-off-by: Peter Zijlstra Tested-by: Li Zefan Thanks! a minor comment > + * lock of the old one. Since these are clearly distrinct s/distrinct/distinct BTW, I found another bug in current code: From: Li Zefan Date: Tue, 10 Feb 2009 10:55:53 +0800 Subject: [PATCH] vfs: add missing unlock in sget() We should release s->s_umount before calling destroy_super(s). Signed-off-by: Li Zefan --- fs/super.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/fs/super.c b/fs/super.c index 61dce00..8bdf981 100644 --- a/fs/super.c +++ b/fs/super.c @@ -356,8 +356,10 @@ retry: continue; if (!grab_super(old)) goto retry; - if (s) + if (s) { + up_write(&s->s_umount); destroy_super(s); + } return old; } } -- 1.5.4.rc3