From: "Kirill A. Shutemov" <kirill@shutemov.name>
To: Brian Geffon <bgeffon@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Michael S . Tsirkin" <mst@redhat.com>,
Arnd Bergmann <arnd@arndb.de>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-api@vger.kernel.org, Andy Lutomirski <luto@amacapital.net>,
Will Deacon <will@kernel.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Sonny Rao <sonnyrao@google.com>, Minchan Kim <minchan@kernel.org>,
Joel Fernandes <joel@joelfernandes.org>,
Yu Zhao <yuzhao@google.com>, Jesse Barnes <jsbarnes@google.com>,
Florian Weimer <fweimer@redhat.com>,
mtk.manpages@gmail.com, linux-man@vger.kernel.org,
Lokesh Gidra <lokeshgidra@google.com>
Subject: Re: [PATCH v7 1/2] mm: Add MREMAP_DONTUNMAP to mremap().
Date: Mon, 24 Feb 2020 11:16:22 +0300 [thread overview]
Message-ID: <20200224081622.f4oy2pqk6aq6krfp@box> (raw)
In-Reply-To: <20200221174248.244748-1-bgeffon@google.com>
On Fri, Feb 21, 2020 at 09:42:46AM -0800, Brian Geffon wrote:
> When remapping an anonymous, private mapping, if MREMAP_DONTUNMAP is
> set, the source mapping will not be removed. The remap operation
> will be performed as it would have been normally by moving over the
> page tables to the new mapping. The old vma will have any locked
> flags cleared, have no pagetables, and any userfaultfds that were
> watching that range will continue watching it.
>
> For a mapping that is shared or not anonymous, MREMAP_DONTUNMAP will cause
> the mremap() call to fail. Because MREMAP_DONTUNMAP always results in moving
> a VMA you MUST use the MREMAP_MAYMOVE flag, it's not possible to resize
> a VMA while also moving with MREMAP_DONTUNMAP so old_len must always
> be equal to the new_len otherwise it will return -EINVAL.
>
> We hope to use this in Chrome OS where with userfaultfd we could write
> an anonymous mapping to disk without having to STOP the process or worry
> about VMA permission changes.
>
> This feature also has a use case in Android, Lokesh Gidra has said
> that "As part of using userfaultfd for GC, We'll have to move the physical
> pages of the java heap to a separate location. For this purpose mremap
> will be used. Without the MREMAP_DONTUNMAP flag, when I mremap the java
> heap, its virtual mapping will be removed as well. Therefore, we'll
> require performing mmap immediately after. This is not only time consuming
> but also opens a time window where a native thread may call mmap and
> reserve the java heap's address range for its own usage. This flag
> solves the problem."
>
> v6 -> v7:
> - Don't allow resizing VMA as part of MREMAP_DONTUNMAP.
> There is no clear use case at the moment and it can be added
> later as it simplifies the implementation for now.
>
> v5 -> v6:
> - Code cleanup suggested by Kirill.
>
> v4 -> v5:
> - Correct commit message to more accurately reflect the behavior.
> - Clear VM_LOCKED and VM_LOCKEDONFAULT on the old vma.
>
> Signed-off-by: Brian Geffon <bgeffon@google.com>
> Reviewed-by: Minchan Kim <minchan@kernel.org>
> Tested-by: Lokesh Gidra <lokeshgidra@google.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
--
Kirill A. Shutemov
next prev parent reply other threads:[~2020-02-24 8:15 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-21 17:42 [PATCH v7 1/2] mm: Add MREMAP_DONTUNMAP to mremap() Brian Geffon
2020-02-21 17:42 ` [PATCH v7 2/2] selftest: Add MREMAP_DONTUNMAP selftest Brian Geffon
2020-02-21 17:42 ` [PATCH v7] mremap.2: Add information for MREMAP_DONTUNMAP Brian Geffon
2020-02-25 13:51 ` Vlastimil Babka
2020-02-25 17:48 ` Brian Geffon
2020-04-15 6:40 ` Michael Kerrisk (man-pages)
2020-04-15 15:24 ` Brian Geffon
2020-02-24 8:16 ` Kirill A. Shutemov [this message]
2020-02-25 13:48 ` [PATCH v7 1/2] mm: Add MREMAP_DONTUNMAP to mremap() Vlastimil Babka
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=20200224081622.f4oy2pqk6aq6krfp@box \
--to=kirill@shutemov.name \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=bgeffon@google.com \
--cc=fweimer@redhat.com \
--cc=joel@joelfernandes.org \
--cc=jsbarnes@google.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-man@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lokeshgidra@google.com \
--cc=luto@amacapital.net \
--cc=minchan@kernel.org \
--cc=mst@redhat.com \
--cc=mtk.manpages@gmail.com \
--cc=sonnyrao@google.com \
--cc=will@kernel.org \
--cc=yuzhao@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).