All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Mason <mason@suse.com>
To: Andrew Morton <akpm@osdl.org>
Cc: andrea@suse.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] fix nr_unused accounting, and avoid recursing in iput with I_WILL_FREE set
Date: Tue, 18 Oct 2005 22:58:05 -0400	[thread overview]
Message-ID: <20051019025805.GD1027@watt.suse.com> (raw)
In-Reply-To: <20051018192646.2ddcbf57.akpm@osdl.org>

On Tue, Oct 18, 2005 at 07:26:46PM -0700, Andrew Morton wrote:
> > > hm, OK.  It'd be nice to make that more explicit.  Something like this?
> > 
> > Well, I can't quite convince myself it is wrong, but when 
> > (!sb || (sb->s_flags & MS_ACTIVE), we're dropping the
> > inode_lock with an inode with i_count == 0 and nr_unused hasn't been
> > incremented.
> > 
> > So, if someone (sync_sb_inodes?) comes in and runs __iget,
> > the counts end up wrong.  Then again, whoever ran __iget would also run
> > iput and things would go horribly wrong anyway.
> 
> Nope, it's equivalent:

The math ends up the same, but for your version there is a window where
the lock isn't held and the count doesn't reflect reality.  I don't know
if anyone can race in and mess with the inode though.  It is still on
various lists, but if we're only in that part of generic_forget_inode
during unmount, the super semaphore will keep out most potential racers.

I need to read harder.

> > Did I mention the part where Andrea and I are hunting a bug where the
> > count of unused inodes goes negative and the everyone ends up spinning
> > in shrink_icache_memory?
> 
> No.
> 
> >  Andrea's patch doesn't fix the spinning, but
> > it might have fixed the unused inode count going negative.  We're
> > waiting for another reproduce on the ppc64 race monster.
> 
> I assume you have BUG_ON(inode_stat.nr_unused < 0)s in there everywhere?
> 
> In fact WARN_ON(inode_stat.nr_unused < 100) might be better - something's
> obviously doing a bogus decrement a lot of times.
> 

It goes negative in the invalidate_inodes run during unmount.  I
think Andrea's patch will solve that part, hopefully we'll know more
tomorrow.

-chris


  reply	other threads:[~2005-10-19  2:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-18  8:26 [PATCH] fix nr_unused accounting, and avoid recursing in iput with I_WILL_FREE set Andrea Arcangeli
2005-10-19  0:13 ` Andrew Morton
2005-10-19  0:40   ` Chris Mason
2005-10-19  1:15     ` Andrew Morton
2005-10-19  1:58       ` Chris Mason
2005-10-19  2:26         ` Andrew Morton
2005-10-19  2:58           ` Chris Mason [this message]
2005-10-25  2:21           ` Chris Mason
2005-10-25 14:14             ` Andrea Arcangeli
2005-10-19  7:47   ` Andrea Arcangeli

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=20051019025805.GD1027@watt.suse.com \
    --to=mason@suse.com \
    --cc=akpm@osdl.org \
    --cc=andrea@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    /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.