Thread (10 messages) 10 messages, 4 authors, 2003-09-22

Re: How best to bypass the page cache from within a kernel module?

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2003-09-17 20:33:08

On Wed, 2003-09-17 at 11:24, Alan Stern wrote:
quoted
However, all that seems rather roundabout.  An equally acceptable solution 
would be simply to invalidate all the entries in the page cache referring 
to my file, so that reads would be forced to go to the drive.  Can anyone 
tell me how to do that?
On Wed, Sep 17, 2003 at 12:44:29PM -0700, Dave Hansen wrote:
Whatever you're trying to do, you probably shouldn't be doing it in the
kernel to begin with.  Do it from userspace, it will save you a lot of
pain.
That's not particularly helpful, especially considering that the entire
driver currently works just fine as a kernel module, with the exception of
this one piece.  (This one piece works too; it just doesn't do exactly 
what I want.)

On Wed, 17 Sep 2003, William Lee Irwin III wrote:
If you really want to bypass the pagecache etc. entirely, use raw io and
don't even bother mounting the filesystem, and do it all from userspace.
If you need it simultaneously mounted then you're in somewhat deeper
trouble, though you can probably be rescued by nefarious means like that
bit about shooting down the pagecache so you don't have some incoherent
cache headache.
I really want this to work through the filesystem.  99% of what my driver 
does involves normal reads and writes.  And there are very good reasons 
for having it run as a kernel thread rather than a user process.  It's 
just that this one piece, which is a very minor part of the driver, needs 
to avoid the page cache.

So to reiterate my original questions:

1. What's the proper way for a kernel thread running in a module to get
hold of an mm_struct or to keep the one it had before calling daemonize()?

2. What's the proper way for a kernel thread to allocate a region of 
userspace memory?

3. What's the proper way to invalidate all entries in the page cache that 
refer to a particular file?

Alan Stern

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help