From: torvalds@transmeta.com (Linus Torvalds)
To: linux-kernel@vger.kernel.org
Subject: Re: sendfile(2) fails for devices?
Date: 11 Nov 2000 16:57:29 -0800 [thread overview]
Message-ID: <8ukptp$3c6$1@penguin.transmeta.com> (raw)
In-Reply-To: <3A0DE0C8.C700F33D@mandrakesoft.com>
In article <3A0DE0C8.C700F33D@mandrakesoft.com>,
Jeff Garzik <jgarzik@mandrakesoft.com> wrote:
>sendfile(2) fails with -EINVAL every time I try to read from a device
>file.
>
>This sounds like a bug... is it? (the man page doesn't mention such a
>restriction)
sendfile() on purpose only works on things that use the page cache.
EINVAL is basically sendfiles way of saying "I would fall back on doing
a read+write, so you might as well do it yourself in user space because
it might actually be more efficient that way".
>I am using kernel 2.4.0-test11-pre2. All other tests with sendfile(2)
>succeed: file->file, file->STDOUT, STDIN->file...
Yes, as long as STDIN is a file ;)
sendfile() wants the source to be in the page cache, because the whole
point of sendfile() was to avoid a copy.
The current device model does _not_ use the page cache. Now, arguably
that's a bug - it also means that you cannot mmap() a block device - but
as it could be easily documented (maybe it is, somewhere), I'll call it
a bad feature for now.
Now, if you want to add the code to do address spaces for block devices,
I wouldn't be all that unhappy. I've wanted to see it for a while. I'm
not likely to apply it for 2.4.x any more, but I'd love to have it early
for 2.5.x.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
prev parent reply other threads:[~2000-11-12 0:58 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-11-12 0:14 sendfile(2) fails for devices? Jeff Garzik
2000-11-12 0:57 ` Linus Torvalds [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='8ukptp$3c6$1@penguin.transmeta.com' \
--to=torvalds@transmeta.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.