mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <andrewm@uow.edu.au>
To: "Stephen C. Tweedie" <sct@redhat.com>,
	Alexander Viro <viro@math.psu.edu>,
	Jonathan Hudson <jonathan@daria.co.uk>,
	linux-kernel@vger.kernel.org
Subject: Re: corruption
Date: Sun, 03 Dec 2000 01:00:46 +1100	[thread overview]
Message-ID: <3A29008E.F05E5C95@uow.edu.au> (raw)
In-Reply-To: <b09.3a269edc.6bd12@trespassersw.daria.co.uk> <Pine.GSO.4.21.0011301400290.20801-100000@weyl.math.psu.edu> <3A26C82D.26267202@uow.edu.au>, <3A26C82D.26267202@uow.edu.au>; from andrewm@uow.edu.au on Fri, Dec 01, 2000 at 08:35:41AM +1100 <20001201141659.A4562@redhat.com> <3A2873A1.3EFEA29@uow.edu.au>

Andrew Morton wrote:
> 
> "Stephen C. Tweedie" wrote:
> >
> > Hi,
> >
> > On Fri, Dec 01, 2000 at 08:35:41AM +1100, Andrew Morton wrote:
> > >
> > > I bet this'll catch it:
> > >
> > >  static __inline__ void list_del(struct list_head *entry)
> > >  {
> > >       __list_del(entry->prev, entry->next);
> > > +     entry->next = entry->prev = 0;
> > >  }
> >
> > No, because the buffer hash list is never referenced unless
> > buffer->b_inode is non-null, so we can't ever do a double-list_del on
> > the buffer.
> >
> > The patch below should fix it.  It has been sent to Linus.  The
> > important part is the first hunk of the inode.c diff.
> 
> Testing test11-pre3 with your inode.c patch and the above list_del
> patch.  x86 dual processor, IDE.  Same workload as before, except
> I cut out misc001 (and the machine recovered almost immediately
> when I killed everything!  Need more testing to characterise this).
> 
> kernel BUG at inode.c:83!  The trace is below.  Now, this was
> probably triggered by my list_del change.  If so it means
> that we're doing a list_empty() test on a list_head which
> has actually been deleted from a list.  So it's possibly the
> actual assertion in destroy_inode() which is a little bogus.
> 
> But the wierd thing is that this BUG only hit a single time,
> after three hours of intensive testing.  If my theory is
> right, the BUG should hit every time.   Will investigate further...
> 

It appears that this problem is not fixed.

My destroy_inode() is now

static void destroy_inode(struct inode *inode)
{
        if (!list_empty(&inode->i_dirty_buffers)) {
                printk("&inode->i_dirty_buffers=0x%p\n", &inode->i_dirty_buffers);
                printk("next=0x%p\n", inode->i_dirty_buffers.next);
                printk("prev=0x%p\n", inode->i_dirty_buffers.prev);
                BUG();
        }
        kmem_cache_free(inode_cachep, (inode));
}

After 45 minutes of running the previously described tests:

Dec  2 16:14:30 mnm kernel: &inode->i_dirty_buffers=0xcfe16878
Dec  2 16:14:30 mnm kernel: next=0xc16f3678
Dec  2 16:14:30 mnm kernel: prev=0xc16f3678
Dec  2 16:14:30 mnm kernel: kernel BUG at inode.c:86!

We're throwing away an inode which has live data on its
dirty buffers list.

This is 2.4.0-test11-pre3 + list_del patch + sct's inode
patch (buffer.c, inode.c).  x86 dual processor.  gcc 2.91.66.
I rediffed my tree.  No rogue patches.

It's not an SMP thing - the address patterns match up with the
previously reported uniprocessor corruption.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

  reply	other threads:[~2000-12-02 14:30 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-29 21:54 corruption Andries.Brouwer
2000-11-29 22:18 ` corruption Alexander Viro
2000-11-30 14:21   ` corruption Andrew Morton
2000-11-30 18:39     ` corruption Jonathan Hudson
2000-11-30 19:07       ` corruption Alexander Viro
2000-11-30 21:35         ` corruption Andrew Morton
2000-12-01  0:57           ` corruption Andrew Morton
2000-12-01 12:18             ` corruption Jens Axboe
2000-12-01 12:34               ` corruption Andrew Morton
2000-12-01 12:37                 ` corruption Jens Axboe
2000-12-01 12:23             ` corruption Andrew Morton
2000-12-01 15:04               ` corruption Lawrence Walton
2000-12-01 14:16           ` corruption Stephen C. Tweedie
2000-12-01 23:28             ` corruption Andrew Morton
2000-12-02  0:30             ` corruption kumon
2000-12-02  3:59             ` corruption Andrew Morton
2000-12-02 14:00               ` Andrew Morton [this message]
2000-12-02 15:33                 ` corruption Alexander Viro
2000-12-02 16:39                   ` corruption Petr Vandrovec
2000-12-02 17:50                     ` corruption Alexander Viro
2000-12-02 17:59                     ` corruption Alexander Viro
2000-12-03 20:24                       ` corruption Jonathan Hudson
2000-12-03 21:44                   ` corruption Andrew Morton
2000-12-03 22:45                     ` [resync?] corruption Alexander Viro
2000-12-04  0:56                       ` Jeff V. Merkey
2000-12-04 15:00                   ` corruption Stephen C. Tweedie
2000-12-04 15:19                     ` corruption Alexander Viro
2000-12-01 17:29           ` corruption Jeff Garzik
     [not found] <20001202161158.A475@ppc.vc.cvut.cz>
2000-12-02 15:35 ` corruption Petr Vandrovec
  -- strict thread matches above, loose matches on Subject: below --
2000-11-29 13:44 corruption Andries.Brouwer
2000-11-29 14:10 ` corruption Tigran Aivazian
2000-11-29 14:16   ` corruption Alexander Viro
2000-11-29 14:26   ` corruption Jens Axboe
2000-11-29 11:16 corruption Andries.Brouwer
2000-11-29 17:47 ` corruption Linus Torvalds
2000-11-29 17:57   ` corruption Tigran Aivazian
2000-11-29 18:08     ` corruption Tigran Aivazian
2000-11-29 18:14       ` corruption Tigran Aivazian
2000-11-29 18:17       ` corruption Alexander Viro
2000-11-29 18:38       ` corruption Linus Torvalds
2000-11-29 18:47         ` corruption Tigran Aivazian
2000-11-29 18:07   ` corruption Zdenek Kabelac
2000-11-29  4:08 corruption Andries.Brouwer
2000-11-29  5:09 ` corruption Linus Torvalds
2000-11-29  9:08   ` corruption Alexander Viro
2000-11-29  9:20     ` corruption Tigran Aivazian
2000-11-29  9:26       ` corruption Alexander Viro
2000-11-29 10:52         ` corruption Tigran Aivazian
2000-11-29 18:56     ` corruption Andrea Arcangeli
2000-11-29 19:05       ` corruption Rik van Riel
2000-11-29 19:27         ` corruption Andrea Arcangeli
2000-11-29 20:02           ` corruption Rik van Riel
2000-11-29 19:25     ` corruption Linus Torvalds
2000-11-29 19:57       ` corruption Alexander Viro
2000-11-29 20:36         ` corruption 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=3A29008E.F05E5C95@uow.edu.au \
    --to=andrewm@uow.edu.au \
    --cc=jonathan@daria.co.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sct@redhat.com \
    --cc=viro@math.psu.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®