Shirish writes:> While doing some stress testing with presto module from the intermezzo
> project layered over ext3, I got the following assertion failure:
Regular ext3 users can stop reading at this point.
> Jan 17 23:09:55 planck kernel: Assertion failure in
jfs_prelock_buffer_check() at journal.c line 410:
> "bh->b_jlist == 0 || bh->b_jlist == BJ_LogCtl || bh->b_jlist
== BJ_IO || bh->b_jlist == BJ_Data"
> Jan 17 23:09:55 planck kernel: Unable to handle kernel NULL pointer
dereference at virtual address 00000000
> Jan 17 23:09:55 planck kernel: current->tss.cr3 = 00101000, %cr3 =
00101000
> Jan 17 23:09:55 planck kernel: *pde = 00000000
> Jan 17 23:09:55 planck kernel: Oops: 0002
> Jan 17 23:09:55 planck kernel: CPU: 0
This may be InterMezzo specific, and not really an ext3 problem. My first
guess would be that presto is writing to the filesystem outside the context
of a journal transaction. Could it have anything to do with the new LML file?
> After this a couple of files I had open in vi as well as my
/var/log/messages
> got corrupted with bunch of null bytes inserted into them. The actual
> corruption did not occur till system reboot, in fact, I suspect it happened
> during the journal replay.
It is likely that the OOPS just caused zero pages to be written to the
disk, because it is right in the I/O path. It may not even be worthwhile
to do any journal recovery testing. Instead, find out why the ASSERT
happened in the first place.
Cheers, Andreas
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert