[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Kernel Panic with mac-fdisk: More Info



> I tried putting up to 5 sync() and even moving the close_partition() call at
> the end (making a total of 10 sync()). It still crashes but less frequently
> with this mod.

Another idea: increase the sync delay or number of syncs before the ioctl.

> Find below the disasm of the whole function as you asked.


Mapping to this section of invalidate_bdev():

			write_lock(&hash_table_lock);
			/* All buffers in the lru lists are mapped */
			if (!buffer_mapped(bh))
			        BUG();			<-- here
			if (buffer_dirty(bh))		<-- or here
			        printk("invalidate: dirty buffer\n");
			if (!atomic_read(&bh->b_count)) {
			        if (destroy_dirty_buffers || !buffer_dirty(bh)) {
			                remove_inode_queue(bh);
			        }
			} else
			        printk("invalidate: busy buffer\n");

> The crash always happens with lr pointing to c0039d14 so apparently the test
> at c0039cf0 fails and the kernel is trying to tell me something (printk)
> except that I don't see it (no flush?). Apparently the message is still for
> x86 (ead is a x86 right?).

Maybe you don't see it because BUG() maps to calling both printk and
xmon.. That would mean we hit a buffer head that has just been unmapped
from under us. Turn that BUG() into a call to printk and panic instead...

My guess is it crashes on the next line (buffer_dirty(bh))... what's in
r31?

	Michael



Reply to: