On Thu, 27 Sep 2007, Andrew Morton wrote:

> On Thu, 27 Sep 2007 09:54:47 -0700 (PDT) Davide Libenzi <[EMAIL PROTECTED]> 
> wrote:
> 
> > On Thu, 27 Sep 2007, Davide Libenzi wrote:
> > 
> > > On Wed, 26 Sep 2007, Andrew Morton wrote:
> > > 
> > > > On Thu, 27 Sep 2007 10:30:50 +0800 "Yan Zheng" <[EMAIL PROTECTED]> 
> > > > wrote:
> > > > 
> > > > > Hello,
> > > > > 
> > > > > igrab return NULL on error.
> > > > > 
> > > > > Signed-off-by: Yan Zheng<[EMAIL PROTECTED]>
> > > > > ---
> > > > > diff -ur linux-2.6.23-rc8/fs/anon_inodes.c linux/fs/anon_inodes.c
> > > > > --- linux-2.6.23-rc8/fs/anon_inodes.c 2007-09-27 10:05:07.000000000 
> > > > > +0800
> > > > > +++ linux/fs/anon_inodes.c    2007-09-27 10:18:26.000000000 +0800
> > > > > @@ -87,8 +87,8 @@
> > > > >               return -ENFILE;
> > > > > 
> > > > >       inode = igrab(anon_inode_inode);
> > > > > -     if (IS_ERR(inode)) {
> > > > > -             error = PTR_ERR(inode);
> > > > > +     if (!inode) {
> > > > > +             error = -ENOENT;
> > > > >               goto err_put_filp;
> > > > >       }
> > > > 
> > > > hm, does that code actually need to exist?  igrab() is pretty expensive 
> > > > and
> > > > that fs is permanently mounted anyway...
> > > 
> > > yes. The inode gets attached the the file*, and on its way out an iput() 
> > > is done.
> > 
> > Wait. You mean "is it worth checking the igrab() return code at all"?
> 
> Well I was more thinking "can we just leave that inode's refcount alone all
> the time".  I guess that would be tricky, but I think we can at least use
> the much less expensive __iget(), or an open-coded atomic_inc.
> 
> inode_lock is a heavily-used singleton.  I remain surprised that it hasn't
> bitten us in the ass yet.

Well, __iget() requires the inode lock to be held. Wrapping the anon 
inodes code with a lock would be even worse.
Relying on the fact that the count will never go to zero and call __iget() 
w/out held lock (to expoit the __iget fast path), is kinda nasty IMO.
Open coded atomic_inc()? Hmm, dunno...



- Davide


-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to