Thread (16 messages) 16 messages, 6 authors, 2002-10-15

Re: [patch, feature] nonlinear mappings, prefaulting support, 2.5.42-F8

From: Ingo Molnar <hidden>
Date: 2002-10-14 14:45:38
Also in: lkml

On Mon, 14 Oct 2002, William Lee Irwin III wrote:
quoted
+int sys_remap_file_pages(unsigned long start, unsigned long size,
+	unsigned long prot, unsigned long pgoff, unsigned long flags)
ISTR suggesting vectorizing this to reduce syscall traffic.
well, i dont agree with vectorizing everything, unless it's some really
lightweight thing and/or the operation is somehow naturally vectorized.  
(block and network IO, etc.)
The semantics of faulting in pages on such a region, while not
incorrect, are at least unusual enough to raise the question of whether
it's appropriate for the kernel to fill the pages as opposed to
returning an error to userspace. [...]
the pagefault path simply does not have the information whether a mapping
was nonlinear, possibly long before. In the initial patch i had a
VM_RANDOM flag for vmas, which was set up at mmap() time, but this
restricted the API needlessly. Tracking whether a mapping was remapped
randomly before does not sound too useful to me either. So right now it's
the responsibility of the user to use the API in a meaningful way - is it
such a big problem?
[...] The requirement of MAP_LOCKED or PROT_NONE might as well be
in-kernel if the file offset contiguity assumption is not met, [...]
how would you do this actually, without other restrictions?
sys_remap_file_pages() also interacts in an unusual way with the
semantics of MAP_POPULATE. MAP_POPULATE seems to perform a non-blocking
make_pages_present() operation not shared with MAP_LOCKED, [...]
what it does is a blocking make_pages_present(), for nonblocking you also
need to specify MAP_NONBLOCK. I agree that the mlock path should/could be
merged with the populate path, this was suggested by Linus as well.
[...] and filemap_populate() performs the file offset contiguous
prefaulting which again doesn't mix well with the scatter gather
semantics desired.
huh?
Also, a stranger phenomenon appears in filemap_populate(), where
nonblock may be true, and so filemap_getpage() will return NULL, but
-ENOMEM is returned if filemap_getpage() returns NULL.
true, this is a bug, i fixed it in the -F9 patch at:

	http://redhat.com/~mingo/remap-file-pages-patches/
Also, I see a significant portion of filemap_nopage() duplicated in
filemap_getpage(), including long-stale hashtable-related comments.
check the announcement email for details about the seemingly duplicated
code of filemap_nopage() and filemap_getpage(). And which hashing comments
do you mean? We still hash pagecache pages.

	Ingo

--
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/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help