From: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Chris Caputo <ccaputo@alt.net>,
linux-kernel@vger.kernel.org,
David Woodhouse <dwmw2@infradead.org>,
riel@redhat.com, viro@parcelfarce.linux.theplanet.co.uk
Subject: Re: inode_unused list corruption in 2.4.26 - spin_lock problem?
Date: Mon, 21 Jun 2004 15:23:35 -0300 [thread overview]
Message-ID: <20040621182335.GB12885@logos.cnet> (raw)
In-Reply-To: <1087837820.3926.57.camel@lade.trondhjem.org>
On Mon, Jun 21, 2004 at 01:10:21PM -0400, Trond Myklebust wrote:
> På su , 20/06/2004 klokka 20:45, skreiv Marcelo Tosatti:
> > Lets see if I get this right, while we drop the lock in iput to call
> > write_inode_now() an iget happens, possibly from write_inode_now itself
> > (sync_one->__iget) causing the inode->i_list to be added to to inode_in_use.
> > But then the call returns, locks inode_lock, decreases inodes_stat.nr_unused--
> > and deletes the inode from the inode_in_use and adds to inode_unused.
> >
> > AFAICS its an inode with i_count==1 in the unused list, which does not
> > mean "list corruption", right? Am I missing something here?
>
> Yes. Please don't forget that the inode is still hashed and is not yet
> marked as FREEING: find_inode() can grab it on behalf of some other
> process as soon as we drop that spinlock inside iput(). Then we have the
> calls to clear_inode() + destroy_inode() just a few lines further down.
> ;-)
>
> If the above scenario ever does occur, it will cause random Oopses for
> third party processes. Since we do not see this too often, my guess is
> that the write_inode_now() path must be very rarely (or never?) called.
Thats what I though: That if the scenario you described really happens, we
would see random oopses (processes using a deleted inode) instead of
Chris's list corruption.
Chris, _please_ post your full oopses.
> > If you are indeed right all 2.4.x versions contain this bug.
>
> ...and all 2.6.x versions...
>
> I'm not saying this is the same problem that Chris is seeing, but I am
> failing to see how iput() is safe as it stands right now. Please
> enlighten me if I'm missing something.
For me your analysis looks right and we have a problem here.
I think Al Viro knows iput() very well. Maybe he should take a look
at your patched. CC'ed.
next prev parent reply other threads:[~2004-06-21 18:30 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-19 0:47 inode_unused list corruption in 2.4.26 - spin_lock problem? Chris Caputo
2004-06-20 0:15 ` Marcelo Tosatti
2004-06-20 3:33 ` Trond Myklebust
2004-06-21 0:45 ` Marcelo Tosatti
2004-06-21 17:10 ` Trond Myklebust
2004-06-21 18:23 ` Marcelo Tosatti [this message]
2004-06-24 1:51 ` Chris Caputo
2004-06-25 7:47 ` Chris Caputo
2004-06-24 1:50 ` Chris Caputo
2004-06-25 8:04 ` Chris Caputo
2004-06-25 10:18 ` Chris Caputo
2004-06-25 12:17 ` Marcelo Tosatti
2004-07-02 20:00 ` Chris Caputo
2004-07-03 5:15 ` Arjan van de Ven
2004-07-26 17:41 ` Chris Caputo
2004-07-27 14:19 ` Marcelo Tosatti
2004-07-27 16:08 ` Chris Caputo
2004-07-29 0:25 ` Marcelo Tosatti
2004-07-29 6:27 ` Chris Caputo
2004-07-29 7:54 ` Arjan van de Ven
2004-07-29 10:57 ` Marcelo Tosatti
2004-07-29 12:21 ` Arjan van de Ven
2004-07-29 16:22 ` Chris Caputo
2004-07-29 16:23 ` Arjan van de Ven
2004-08-04 15:38 ` Chris Caputo
2004-08-04 18:47 ` Chris Caputo
[not found] <20040805225549.GA18420@logos.cnet>
2004-08-07 16:00 ` Chris Caputo
2004-08-07 18:31 ` Marcelo Tosatti
2004-08-07 19:36 ` Marcelo Tosatti
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=20040621182335.GB12885@logos.cnet \
--to=marcelo.tosatti@cyclades.com \
--cc=ccaputo@alt.net \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=riel@redhat.com \
--cc=trond.myklebust@fys.uio.no \
--cc=viro@parcelfarce.linux.theplanet.co.uk \
/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.