Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage

Nick Piggin
2007-06-01T01:01:39Z

On Thu, May 31, 2007 at 04:13:54PM -0700, Mark Fasheh wrote:
> On Wed, May 30, 2007 at 11:58:23PM -0700, Andrew Morton wrote:
> > git-ocfs2.patch
>
> Andrew, thanks for getting that back in there.
>
>
> mm-fix-fault-vs-invalidate-race-for-linear-mappings.patch broke ocfs2 shared
> writable mmap. We hang on a page lock because ->page_mkwrite() is
> being called with the page already locked:
>
> + /*
> + * For consistency in subsequent calls, make the nopage_page always
> + * locked.
> + */
> + if (unlikely(!(vma->vm_flags & VM_CAN_INVALIDATE)))
> + lock_page(nopage_page);
>
> It wasn't previously being called with the page lock held, intentionally.

Ah, I didn't realise you were using that yet. I expect ocfs2 is using
VM_CAN_INVALIDATE there anyway.

Hmm, this becomes easier to deal with after page_mkwrite is merged with
->fault. But for now, can we just lock the page at the do_wp_page site
as well, and change the API? All users I have seen want the page locked
there anyway...