From: Rik van Riel <riel@redhat.com>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: linux-mm@kvack.org, linux-kernel@kvack.org,
Lee Schermerhorn <Lee.Schermerhorn@hp.com>,
minchan.kim@gmail.com, lwoodman@redhat.com, aarcange@redhat.com
Subject: Re: [RFC -v2 PATCH -mm] change anon_vma linking to fix multi-process server scalability issue
Date: Wed, 27 Jan 2010 15:57:16 -0500 [thread overview]
Message-ID: <4B60A8AC.40708@redhat.com> (raw)
In-Reply-To: <20100122135809.6C11.A69D9226@jp.fujitsu.com>
On 01/22/2010 01:57 AM, KOSAKI Motohiro wrote:
>> @@ -240,6 +339,14 @@ vma_address(struct page *page, struct vm_area_struct *vma)
>> /* page should be within @vma mapping range */
>> return -EFAULT;
>> }
>> + if (unlikely(vma->vm_flags& VM_LOCK_RMAP))
>> + /*
>> + * This VMA is being unlinked or not yet linked into the
>> + * VMA tree. Do not try to follow this rmap. This race
>> + * condition can result in page_referenced ignoring a
>> + * reference or try_to_unmap failing to unmap a page.
>> + */
>> + return -EFAULT;
>> return address;
>> }
>
> In this place, the task have anon_vma->lock, but don't have mmap_sem.
> But, VM_LOCK_RMAP changing point (i.e. vma_adjust()) is protected by mmap_sem.
>
> IOW, "if (vma->vm_flags& VM_LOCK_RMAP)" return unstable value. Why can we use
> unstable value as "lock"?
I know the answer to this one. The VMA cannot be freed until the
anon_vmas have been unlinked.
That is serialized on the anon_vma->lock. Either the pageout
code has that lock, or the VMA teardown code in mmap.c has it.
Either way they're protected from each other.
--
All rights reversed.
--
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:"dont@kvack.org"> email@kvack.org </a>
prev parent reply other threads:[~2010-01-27 20:58 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-18 3:21 [RFC -v2 PATCH -mm] change anon_vma linking to fix multi-process server scalability issue Rik van Riel
2010-01-21 5:05 ` KOSAKI Motohiro
2010-01-21 5:21 ` Rik van Riel
2010-01-21 15:29 ` Minchan Kim
2010-01-24 14:17 ` Minchan Kim
2010-01-22 6:57 ` KOSAKI Motohiro
2010-01-22 16:25 ` Rik van Riel
2010-01-25 8:37 ` KOSAKI Motohiro
2010-01-27 20:57 ` Rik van Riel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B60A8AC.40708@redhat.com \
--to=riel@redhat.com \
--cc=Lee.Schermerhorn@hp.com \
--cc=aarcange@redhat.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@kvack.org \
--cc=linux-mm@kvack.org \
--cc=lwoodman@redhat.com \
--cc=minchan.kim@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.