* ext2 related,two oops with 2.5.12 on ATA66 disk.
@ 2002-05-03 9:17 Luigi Genoni
2002-05-03 20:55 ` Andrew Morton
0 siblings, 1 reply; 3+ messages in thread
From: Luigi Genoni @ 2002-05-03 9:17 UTC (permalink / raw)
To: linux-kernel
HI,
this morning, going at work, I found those two oops (repeated a lto of
times), on the Pentium III 512MB ram, i810 chipset, Maxtor 32049H2 ATA66
disk.
buffer layer error at buffer.c:1380
c893dee8 c0236aa0 c0236a6c c0236ad0 00000544 c0137a5c c0236ad0 00000544
c11518e0 00000000 c9607000 d6740970 00000000 00000000 00000000
c013898c
d6740970 c11518e0 c0169f8c c11518e0 c893c000 d6740a08 d6740a30
c016a30b
Call Trace: [<c0137a5c>] [<c013898c>] [<c0169f8c>] [<c016a30b>]
[<c0169f8c>]
[<c01336fd>] [<c016a2fc>] [<c01270ad>] [<c0132957>] [<c0132a52>]
[<c0106e5f>]
Warning (Oops_read): Code line not seen, dumping what data is available
Trace; c0137a5c <__block_write_full_page+ec/330>
Trace; c013898c <block_write_full_page+a0/a8>
Trace; c0169f8c <ext2_get_block+0/370>
Trace; c016a30a <ext2_writepage+e/14>
Trace; c0169f8c <ext2_get_block+0/370>
Trace; c01336fc <generic_writeback_mapping+120/1c0>
Trace; c016a2fc <ext2_writepage+0/14>
Trace; c01270ac <filemap_fdatawrite+20/28>
Trace; c0132956 <msync_interval+7a/dc>
Trace; c0132a52 <sys_msync+9a/e8>
Trace; c0106e5e <syscall_call+6/a>
AND
kernel BUG at ll_rw_blk.c:1409!
invalid operand: 0000
CPU: 0
EIP: 0010:[<c01d04f8>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010246
eax: 00000045 ebx: d06ec5e0 ecx: c1489a80 edx: dfd89a60
esi: 00000001 edi: c11518e0 ebp: d06ecb20 esp: c893def4
ds: 0018 es: 0018 ss: 0018
Stack: d06ec5e0 d06ec620 c0137ba7 00000001 d06ec5e0 c11518e0 00000000
c9607000
d6740970 00000001 00000000 00000000 c013898c d6740970 c11518e0
c0169f8c
c11518e0 c893c000 d6740a08 d6740a30 c016a30b c11518e0 c0169f8c
c01336fd
Call Trace: [<c0137ba7>] [<c013898c>] [<c0169f8c>] [<c016a30b>]
[<c0169f8c>]
[<c01336fd>] [<c016a2fc>] [<c01270ad>] [<c0132957>] [<c0132a52>]
[<c0106e5f>]
Code: 0f 0b 81 05 2a 4d 25 c0 83 7b 20 00 75 0a 0f 0b 82 05 2a 4d
>>EIP; c01d04f8 <submit_bh+20/f0> <=====
Trace; c0137ba6 <__block_write_full_page+236/330>
Trace; c013898c <block_write_full_page+a0/a8>
Trace; c0169f8c <ext2_get_block+0/370>
Trace; c016a30a <ext2_writepage+e/14>
Trace; c0169f8c <ext2_get_block+0/370>
Trace; c01336fc <generic_writeback_mapping+120/1c0>
Trace; c016a2fc <ext2_writepage+0/14>
Trace; c01270ac <filemap_fdatawrite+20/28>
Trace; c0132956 <msync_interval+7a/dc>
Trace; c0132a52 <sys_msync+9a/e8>
Trace; c0106e5e <syscall_call+6/a>
Code; c01d04f8 <submit_bh+20/f0>
00000000 <_EIP>:
Code; c01d04f8 <submit_bh+20/f0> <=====
0: 0f 0b ud2a <=====
Code; c01d04fa <submit_bh+22/f0>
2: 81 05 2a 4d 25 c0 83 addl $0x207b83,0xc0254d2a
Code; c01d0500 <submit_bh+28/f0>
9: 7b 20 00
Code; c01d0504 <submit_bh+2c/f0>
c: 75 0a jne 18 <_EIP+0x18> c01d0510
<submit_bh+38/f0>
Code; c01d0506 <submit_bh+2e/f0>
e: 0f 0b ud2a
Code; c01d0508 <submit_bh+30/f0>
10: 82 (bad)
Code; c01d0508 <submit_bh+30/f0>
11: 05 2a 4d 00 00 add $0x4d2a,%eax
The system was just running xscreensaver full night, with openGL morph3D
(ok, very very slow on i810, but I like it) at 16bpp.
I could not make a clean shutdown, since I had a freeze at umount, but
strangelly during e2fsck no corruption was detected.
I Hope this helps
Luigi
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ext2 related,two oops with 2.5.12 on ATA66 disk.
2002-05-03 9:17 ext2 related,two oops with 2.5.12 on ATA66 disk Luigi Genoni
@ 2002-05-03 20:55 ` Andrew Morton
2002-05-04 1:01 ` Luigi Genoni
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2002-05-03 20:55 UTC (permalink / raw)
To: Luigi Genoni; +Cc: linux-kernel
Luigi Genoni wrote:
>
> HI,
>
> this morning, going at work, I found those two oops (repeated a lto of
> times), on the Pentium III 512MB ram, i810 chipset, Maxtor 32049H2 ATA66
> disk.
>
> buffer layer error at buffer.c:1380
>
Yup, thanks. dirty, uptodate, unmapped buffer outside
i_size. I have a few fixes in the works; the below
one should make this go away.
--- 2.5.13/mm/page-writeback.c~writepage-versus-set_page_dirty Fri May 3 00:48:13 2002
+++ 2.5.13-akpm/mm/page-writeback.c Fri May 3 00:48:13 2002
@@ -475,8 +475,13 @@ int __set_page_dirty_buffers(struct page
struct buffer_head *bh = head;
do {
- if (buffer_uptodate(bh))
+ if (buffer_uptodate(bh)) {
+ if (!buffer_mapped(bh))
+ buffer_error();
set_buffer_dirty(bh);
+ } else {
+ buffer_error();
+ }
bh = bh->b_this_page;
} while (bh != head);
}
--- 2.5.13/fs/buffer.c~writepage-versus-set_page_dirty Fri May 3 00:48:13 2002
+++ 2.5.13-akpm/fs/buffer.c Fri May 3 00:48:43 2002
@@ -1290,6 +1290,16 @@ static int __block_write_full_page(struc
(1 << BH_Dirty)|(1 << BH_Uptodate));
}
+ /*
+ * Be very careful. We have no exclusion from __set_page_dirty_buffers
+ * here, and the (potentially unmapped) buffers may become dirty at
+ * any time. If a buffer becomes dirty here after we've inspected it
+ * then we just miss that fact, and the page stays dirty.
+ *
+ * Buffers outside i_size may be dirtied by __set_page_dirty_buffers;
+ * handle that here by just cleaning them.
+ */
+
block = page->index << (PAGE_CACHE_SHIFT - inode->i_blkbits);
head = page_buffers(page);
bh = head;
@@ -1300,8 +1310,7 @@ static int __block_write_full_page(struc
*/
do {
if (block > last_block) {
- if (buffer_dirty(bh))
- buffer_error();
+ clear_buffer_dirty(bh);
if (buffer_mapped(bh))
buffer_error();
/*
@@ -1329,11 +1338,9 @@ static int __block_write_full_page(struc
do {
get_bh(bh);
- if (buffer_dirty(bh)) {
+ if (buffer_mapped(bh) && buffer_dirty(bh)) {
lock_buffer(bh);
- if (buffer_dirty(bh)) {
- if (!buffer_mapped(bh))
- buffer_error();
+ if (test_clear_buffer_dirty(bh)) {
if (!buffer_uptodate(bh))
buffer_error();
set_buffer_async_io(bh);
@@ -1355,7 +1362,6 @@ static int __block_write_full_page(struc
do {
struct buffer_head *next = bh->b_this_page;
if (buffer_async(bh)) {
- clear_buffer_dirty(bh);
submit_bh(WRITE, bh);
nr_underway++;
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ext2 related,two oops with 2.5.12 on ATA66 disk.
2002-05-03 20:55 ` Andrew Morton
@ 2002-05-04 1:01 ` Luigi Genoni
0 siblings, 0 replies; 3+ messages in thread
From: Luigi Genoni @ 2002-05-04 1:01 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
ok, will test this on montday ;)
On Fri, 3 May 2002, Andrew Morton wrote:
> Luigi Genoni wrote:
> >
> > HI,
> >
> > this morning, going at work, I found those two oops (repeated a lto of
> > times), on the Pentium III 512MB ram, i810 chipset, Maxtor 32049H2 ATA66
> > disk.
> >
> > buffer layer error at buffer.c:1380
> >
>
> Yup, thanks. dirty, uptodate, unmapped buffer outside
> i_size. I have a few fixes in the works; the below
> one should make this go away.
>
>
> --- 2.5.13/mm/page-writeback.c~writepage-versus-set_page_dirty Fri May 3 00:48:13 2002
> +++ 2.5.13-akpm/mm/page-writeback.c Fri May 3 00:48:13 2002
> @@ -475,8 +475,13 @@ int __set_page_dirty_buffers(struct page
> struct buffer_head *bh = head;
>
> do {
> - if (buffer_uptodate(bh))
> + if (buffer_uptodate(bh)) {
> + if (!buffer_mapped(bh))
> + buffer_error();
> set_buffer_dirty(bh);
> + } else {
> + buffer_error();
> + }
> bh = bh->b_this_page;
> } while (bh != head);
> }
> --- 2.5.13/fs/buffer.c~writepage-versus-set_page_dirty Fri May 3 00:48:13 2002
> +++ 2.5.13-akpm/fs/buffer.c Fri May 3 00:48:43 2002
> @@ -1290,6 +1290,16 @@ static int __block_write_full_page(struc
> (1 << BH_Dirty)|(1 << BH_Uptodate));
> }
>
> + /*
> + * Be very careful. We have no exclusion from __set_page_dirty_buffers
> + * here, and the (potentially unmapped) buffers may become dirty at
> + * any time. If a buffer becomes dirty here after we've inspected it
> + * then we just miss that fact, and the page stays dirty.
> + *
> + * Buffers outside i_size may be dirtied by __set_page_dirty_buffers;
> + * handle that here by just cleaning them.
> + */
> +
> block = page->index << (PAGE_CACHE_SHIFT - inode->i_blkbits);
> head = page_buffers(page);
> bh = head;
> @@ -1300,8 +1310,7 @@ static int __block_write_full_page(struc
> */
> do {
> if (block > last_block) {
> - if (buffer_dirty(bh))
> - buffer_error();
> + clear_buffer_dirty(bh);
> if (buffer_mapped(bh))
> buffer_error();
> /*
> @@ -1329,11 +1338,9 @@ static int __block_write_full_page(struc
>
> do {
> get_bh(bh);
> - if (buffer_dirty(bh)) {
> + if (buffer_mapped(bh) && buffer_dirty(bh)) {
> lock_buffer(bh);
> - if (buffer_dirty(bh)) {
> - if (!buffer_mapped(bh))
> - buffer_error();
> + if (test_clear_buffer_dirty(bh)) {
> if (!buffer_uptodate(bh))
> buffer_error();
> set_buffer_async_io(bh);
> @@ -1355,7 +1362,6 @@ static int __block_write_full_page(struc
> do {
> struct buffer_head *next = bh->b_this_page;
> if (buffer_async(bh)) {
> - clear_buffer_dirty(bh);
> submit_bh(WRITE, bh);
> nr_underway++;
> }
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-05-04 1:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-05-03 9:17 ext2 related,two oops with 2.5.12 on ATA66 disk Luigi Genoni
2002-05-03 20:55 ` Andrew Morton
2002-05-04 1:01 ` Luigi Genoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).