linprocfs Input/output error
Jilles Tjoelker
jilles at stack.nl
Fri Jan 1 19:38:17 UTC 2010
On Fri, Jan 01, 2010 at 06:45:33PM +0100, Fernando Apesteguía wrote:
> Hi all, I post here cause I didn't get any answers in freebsd-emulation.
> In 8.0-RELEASE-p1 if I try to execute this:
> cat /compat/linux/proc/cpuinfo > ~/cpuinfo.txt
> I get
> cat: /compat/linux/proc/cpuinfo: Input/output error
> truss shows the read system call returns ERR#5. It is the same with
> other files from linprocfs.
> cat /compat/linux/proc/[any_file] works fine
> What am I missing?
You are not missing anything, this is a bug. A while ago, cat(1) was
changed to use larger buffers when writing to regular files on machines
with sufficient RAM, usually a multiple of MAXPHYS. On the other hand,
pseudofs (the general framework for filesystems such as procfs,
linprocfs and linsysfs) in src/sys/fs/pseudofs/pseudofs_vnops.c
pfs_read() fails any read over MAXPHYS + 1 with EIO. This limit probably
has to do with the allocation of a buffer of that size using sbuf_new(9)
(and so, malloc(9)).
Some sort of limit seems appropriate, but MAXPHYS seems unrelated, and
if the request is too long it should perhaps just truncate it.
--
Jilles Tjoelker
More information about the freebsd-hackers
mailing list