Messages in this thread | | | From | Gene Heskett <> | Subject | Re: Possible dcache BUG | Date | Sat, 14 Aug 2004 01:50:27 -0400 |
| |
On Friday 13 August 2004 22:18, Marcelo Tosatti wrote: [...] > >Hi fellows, > >I've taken some time to look at this oopses, and I truly believe we >are facing real corruption. > >The symptom is that an inode's (blockdev) i_mapping->private_list > gets corrupted, one of its buffer_head's contains a b_assoc_mapping > list_head with NULL pointers. > >And this is not an SMP race, because Gene is not running SMP. > >Gene's oops happens when remove_inode_buffers calls > __remove_assoc_queue(bh) > >Ingo's oops happens while remove_inode_buffers does > > struct buffer_head *bh = BH_ENTRY(list->next); > >which is > > mov ffffffd8(%ecx), (%somewhere) > >%ecx is zero, so... > >There is a bug somewhere. > >--- a/fs/buffer.c.original 2004-08-14 00:19:55.000000000 -0300 >+++ b/fs/buffer.c 2004-08-14 00:34:57.000000000 -0300 >@@ -802,6 +802,8 @@ > */ > static inline void __remove_assoc_queue(struct buffer_head *bh) > { >+ BUG_ON(bh->b_assoc_buffers.next == NULL); >+ BUG_ON(bh->b_assoc_buffers.prev == NULL); > list_del_init(&bh->b_assoc_buffers); > } > >@@ -1073,6 +1075,7 @@ > > spin_lock(&buffer_mapping->private_lock); > while (!list_empty(list)) { >+ BUG_ON(list->next == NULL); > struct buffer_head *bh = BH_ENTRY(list->next); During the compile, the above line output this warning: fs/buffer.c: In function `remove_inode_buffers': fs/buffer.c:1079: warning: ISO C90 forbids mixed declarations and code Did the compiler do the right thing? Or is this perchance the bug? > if (buffer_dirty(bh)) { > ret = 0;
In any event, its getting sleepy out, good night all.
-- Cheers, Gene "There are four boxes to be used in defense of liberty: soap, ballot, jury, and ammo. Please use in that order." -Ed Howdershelt (Author) 99.24% setiathome rank, not too shabby for a WV hillbilly Yahoo.com attorneys please note, additions to this message by Gene Heskett are: Copyright 2004 by Maurice Eugene Heskett, all rights reserved. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |