Line 578 is BUG(); below:
mapit:
pb->pb_flags |= _PBF_MEM_ALLOCATED;
if (all_mapped) {
pb->pb_flags |= _PBF_ALL_PAGES_MAPPED;
/* A single page buffer is always mappable */
if (page_count == 1) {
pb->pb_addr = (caddr_t)
page_address(pb->pb_pages[0]) +
pb->pb_offset;
pb->pb_flags |= PBF_MAPPED;
} else if (flags & PBF_MAPPED) {
if (as_list_len > 64)
purge_addresses();
pb->pb_addr = vmap(pb->pb_pages, page_count);
if (!pb->pb_addr)
BUG();
pb->pb_addr += pb->pb_offset;
pb->pb_flags |= PBF_MAPPED | _PBF_ADDR_ALLOCATED;
}
}
/* If some pages were found with data in them
* we are not in PBF_NONE state.
*/
if (good_pages != 0) {
pb->pb_flags &= ~(PBF_NONE);
if (good_pages != page_count) {
pb->pb_flags |= PBF_PARTIAL;
}
}
PB_TRACE(pb, PB_TRACE_REC(look_pg), good_pages);
return rval;
}
Stephen Lord wrote:
On Thu, 2002-09-12 at 18:29, Samuel Flory wrote:
Your patch seem to solve only some of the xfs issues for me. Before
the patch my system hung when booting. This only occured I had xfs
compiled into the kernel. After patching things seemed fine, but
durning "dbench 32" the system locked. Upon rebooting and attempting to
mount the filesystem I got this:
XFS mounting filesystem md(9,2)
Starting XFS recovery on filesystem: md(9,2) (dev: 9/2)
kernel BUG at page_buf.c:578!
<and so on>
Line numbers in no way line up with the code I have in front of me,
However, this appears to equate to a failure in the address space
remapping code. This is not a failure I have ever seen in our code
base.
Steve
|