Re: [patch] generic nonlinear mappings, 2.5.44-mm2-D0
From: Andrew Morton <hidden>
Date: 2002-10-22 19:17:42
Also in:
lkml
Christoph Hellwig wrote:
On Tue, Oct 22, 2002 at 07:57:00PM +0200, Ingo Molnar wrote:quoted
the attached patch (ontop of 2.5.44-mm2) implements generic (swappable!) nonlinear mappings and sys_remap_file_pages() support. Ie. no more MAP_LOCKED restrictions and strange pagefault semantics. to implement this i added a new pte concept: "file pte's". This means that upon swapout, shared-named mappings do not get cleared but get converted into file pte's, which can then be decoded by the pagefault path and can be looked up in the pagecache. the normal linear pagefault path from now on does not assume linearity and decodes the offset in the pte. This also tests pte encoding/decoding in the pagecache case, and the ->populate functions.Ingo, what is the reason for that interface? It looks like a gross performance hack for misdesigned applications to me, kindof windowsish..
So that evicted pages in non-linear mappings can be reestablished at fault time by the kernel, rather than by delegation to userspace via SIGBUS. We seem to have lost a pte_page_unlock() from fremap.c:zap_pte()? I fixed up the ifdef tangle in there within the shpte-ng patch and then put the pte_page_unlock() back. I also added a page_cache_release() to the error path in filemap_populate(), if install_page() failed. The 2TB file size limit for mmap on non-PAE is a little worrisome. I wonder if we can only instantiate the pte_file() bit if the mapping is using MAP_POPULATE? Seems hard to do. -- 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/