Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Stefani Seibold <stefani@...>
Cc: Peter Zijlstra <a.p.zijlstra@...>, Jaya Kumar <jayakumar.lkml@...>, Andrew Morton <akpm@...>, <linux-kernel@...>, David Howells <dhowells@...>, <linux-mm@...>
Date: Tuesday, October 30, 2007 - 8:39 am

On Tue, 30 Oct 2007, Stefani Seibold wrote:

The mapping pointer is zeroed because you've done nothing to set it.
Below is how I answered you a week ago.  But this is new territory
(extending page_mkclean to work on more than just pagecache pages),
I'm still unsure what would be the safest way to do it.

On Mon, 22 Oct 2007, Stefani Seibold wrote:

Interesting.  You need to ask Jaya (CC'ed) since he's the one
who put that code into fb_defio.c, exported page_mkclean, and
should have tested it.


page_mkclean was written in the belief that it was being used on
pagecache pages.  I'm not sure how deeply engrained that belief is.

If it can easily and safely be used on something else, that may be
nice: though there's a danger we'll keep breaking and re-breaking
it if there's only one driver using it in an unusual way.  CC'ed
Peter since he's the one who most needs to be aware of this.


A pagecache page would have page->mapping initialized to point to
the struct address_space of the vma, and page->index to the offset
(in PAGE_SIZE units): see mm/filemap.c:add_to_page_cache.  Without
page->mapping set, page_mkclean_file won't be able to find the vmas
in which the page might appear; and without page->index set, it
won't be able to find where the page should be in those vmas.

If such a driver does not put its pages into the page cache (the
safer course? I'm unsure), then it needs to set page->mapping and
page->index appropriately (and reset page->mapping to NULL before
freeing).

Hugh
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Stefani Seibold, (Mon Oct 22, 10:40 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Andrew Morton, (Mon Oct 29, 3:40 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Mon Oct 29, 1:01 pm)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Mon Oct 29, 2:17 pm)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Mon Oct 29, 6:16 pm)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Tue Oct 30, 5:56 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Tue Oct 30, 9:25 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Hugh Dickins, (Tue Oct 30, 11:47 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Tue Oct 30, 11:51 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Stefani Seibold, (Tue Oct 30, 6:49 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Hugh Dickins, (Tue Oct 30, 8:39 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Tue Oct 30, 9:12 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Mon Oct 29, 6:11 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Peter Zijlstra, (Mon Oct 29, 8:35 am)
Re: vm_ops.page_mkwrite() fails with vmalloc on 2.6.23, Nick Piggin, (Mon Oct 29, 10:28 am)