From: Alexey Dobriyan <adobriyan@sw.ru>
To: Miklos Szeredi <mszeredi@suse.cz>
Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org
Subject: Re: Recursive ->i_mutex lockdep complaint
Date: Wed, 4 Apr 2007 11:48:24 +0400 [thread overview]
Message-ID: <20070404074824.GA1635@localhost.sw.ru> (raw)
In-Reply-To: <1175612720.9736.7.camel@tucsk.pomaz.szeredi.hu>
On Tue, Apr 03, 2007 at 05:05:20PM +0200, Miklos Szeredi wrote:
> On Tue, 2007-04-03 at 18:21 +0400, Alexey Dobriyan wrote:
> > On Mon, Mar 26, 2007 at 11:35:42PM -0800, akpm@linux-foundation.org wrote:
> > > The patch titled
> > > add file position info to proc
> > > has been added to the -mm tree. Its filename is
> > > add-file-position-info-to-proc.patch
> >
> > I tried to stress-test it with the following program and script and
> > lockdep barfs on me reasonably quickly:
>
> Ugh. As I see it, this is independent from the above patch, as the same
> can happen with /proc/PID/fd. Or did I miss something?
Yeah, it's independent from /proc/*/fdinfo stuff.
> And it seems quite benign, one of the mutexes is for the proc inode, the
> other is for the pipe inode, and hopefully they haven't got anything
> else to do with each other.
>
> > It seems that lockdep is unhappy about ->i_mutex taken in
> > ->release/pipe_read_release()/pipe_read_fasync()
> > which is triggered from put_files_struct() in proc_readfd_common()
> >
> > Now checking if giving pipe's i_mutex its own lockdep class with fix
> > things.
>
> Should help. Although I'm wondering if it's worth bothering with, as it
> doesn't seem to happen in real life for lockdep users.
The following patch makes lockdep happy but I wonder if it's correct
way.
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -908,6 +908,8 @@ static struct dentry_operations pipefs_d
.d_dname = pipefs_dname,
};
+static struct lock_class_key pipe_inode_imutex_key;
+
static struct inode * get_pipe_inode(void)
{
struct inode *inode = new_inode(pipe_mnt->mnt_sb);
@@ -936,6 +938,8 @@ static struct inode * get_pipe_inode(voi
inode->i_gid = current->fsgid;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+ lockdep_set_class(&inode->i_mutex, &pipe_inode_imutex_key);
+
return inode;
fail_iput:
prev parent reply other threads:[~2007-04-04 7:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-27 7:35 + add-file-position-info-to-proc.patch added to -mm tree akpm
2007-04-03 14:21 ` Recursive ->i_mutex lockdep complaint Alexey Dobriyan
2007-04-03 15:05 ` Miklos Szeredi
2007-04-04 7:48 ` Alexey Dobriyan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070404074824.GA1635@localhost.sw.ru \
--to=adobriyan@sw.ru \
--cc=akpm@linux-foundation.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mszeredi@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.