Re: kiobuf using kernel pages

Matt Robinson (yakker@cthulhu.engr.sgi.com)
Thu, 11 Nov 1999 08:48:16 -0800 (PST)


On Thu, 11 Nov 1999, Keith Owens wrote:
|>Trying to port the SGI lcrash code to 2.3.26 ix86. It compiles, runs,
|>traps the oops, starts writing the dump to swap, dies with -EFAULT in
|>sd_raw_rw. My guess is because the buffer address is c2c00000, i.e. I
|>am trying to do I/O directly from kernel pages, not from user space.
|>sd_raw_rw() calls map_user_kiobuf() which is perfect for user space
|>callers, no good for kernel callers. How do I get around this?

There is a mechanism in the patch to pass AS_KERNEL to map_user_kiobuf()
so that the kernel pages are tagged appropriately for raw I/O. Given
that, when sd_raw_rw() is called, if the f_reada flag of the file
pointer is DUMP_KIOBUF_NUMBER, we automatically set AS_KERNEL.

|>Changing sd_raw_rw to indicate if the caller is kernel or user would
|>work but is clumsy, all callers have to change. Can I map the kernel
|>pages into user space, if so how? Or would set_fs (get_ds()) fudge the
|>mappings enough to work?

If you have the appropriate patch, this should all work correctly.

--Matt

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/