All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@zip.com.au>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: lkml <linux-kernel@vger.kernel.org>
Subject: Re: [patch 12/16] fix race between writeback and unlink
Date: Sat, 01 Jun 2002 12:19:36 -0700	[thread overview]
Message-ID: <3CF91E48.C76B34FA@zip.com.au> (raw)
In-Reply-To: <3CF88933.2EC13C8F@zip.com.au> <Pine.LNX.4.44.0206010935290.10978-100000@home.transmeta.com>

Linus Torvalds wrote:
> 
> On Sat, 1 Jun 2002, Andrew Morton wrote:
> >
> > So run __iget prior to dropping inode_lock.
> 
> This part looks horrible:
> 
> +               spin_unlock(&inode_lock);
> +               iput(inode);
> +               spin_lock(&inode_lock);

Yup.  The inode refcounting APIs are really awkward.  Note how I recently
added dopey code in ext2_put_inode() to only drop the prealloc window on
the "final" iput().

> Why not just split up the code inside iput(), and then just do
> 
>         if (atomic_dec(&inode->i_count))
>                 final_iput(inode);
> 
> where final_iput() _wants_ the spinlock held already?
> 
> That's basically what "iput()" will end up doing, except for that
> "put_inode()" thing, which is just a horrible hack anyway.
> 
> So get rid of "put_inode()", and replace it with a new one that takes the
> place of the
> 
>         if (!inode->i_nlink)  {
>                 ... delete ..
>         } else {
>                 .. free ..
>         }
> 
> and makes that one be a "i_op->drop_inode" thing that defaults to the
> current "delete if i_nlink is zero, free it if i_nlink is not zero and
> nobody uses it".
> 
> The general VFS layer really shouldn't have assigned that strogn a meaning
> to "i_nlink" anyway, it's not for the VFS layer to decide (and it only
> causes problems for any non-UNIX-on-a-disk filesystems).
> 

Yes, I suspect all the inode refcounting, locking, I_FREEING, I_LOCK, etc
could do with a spring clean. Make it a bit more conventional.  I'll 
discuss with Al when he resurfaces.

-

  reply	other threads:[~2002-06-01 19:16 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-01  8:43 [patch 12/16] fix race between writeback and unlink Andrew Morton
2002-06-01 16:42 ` Linus Torvalds
2002-06-01 19:19   ` Andrew Morton [this message]
2002-06-01 20:04     ` William Lee Irwin III
2002-06-01 22:25       ` Andrew Morton
2002-06-03  4:27     ` [RFC] iput() cleanup (was Re: [patch 12/16] fix race between writeback and unlink) Linus Torvalds
2002-06-03 16:26       ` Andreas Dilger
2002-06-03 16:47         ` Linus Torvalds
2002-06-03 19:09       ` Chris Mason
2002-06-03 19:34         ` Linus Torvalds
2002-06-03 19:49           ` Chris Mason
2002-06-03 19:55             ` Linus Torvalds
2002-06-03 22:10     ` [patch 12/16] fix race between writeback and unlink Chris Mason
2002-06-03 22:19       ` Linus Torvalds
2002-06-03 22:30         ` Andrew Morton
2002-06-04 18:47           ` Linus Torvalds
2002-06-04 20:15             ` Andrew Morton
2002-06-04 20:23               ` Linus Torvalds
2002-06-04 20:40                 ` Andrew Morton
2002-06-04 21:37                   ` Linus Torvalds
2002-06-04 22:04                     ` Benjamin LaHaise
2002-06-04 22:08                     ` Andrew Morton
2002-07-07 20:38                     ` Riley Williams
2002-06-04 22:05                 ` Craig Milo Rogers
2002-06-04 22:08                   ` Linus Torvalds
2002-06-03 22:36         ` Chris Mason
2002-06-03 22:47           ` Andrew Morton

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=3CF91E48.C76B34FA@zip.com.au \
    --to=akpm@zip.com.au \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /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.