Re: [RFC PATCH 0/1] mm/mremap: add MREMAP_MIRROR flag

From: Anshuman Khandual
Date: Fri Jul 07 2017 - 07:03:52 EST

On 07/06/2017 09:47 PM, Mike Kravetz wrote:
> The mremap system call has the ability to 'mirror' parts of an existing
> mapping. To do so, it creates a new mapping that maps the same pages as
> the original mapping, just at a different virtual address. This
> functionality has existed since at least the 2.6 kernel [1]. A comment
> was added to the code to help preserve this feature.

In mremap() implementation move_vma() attempts to do do_unmap() after
move_page_tables(). do_unmap() on the original VMA bails out because
the requested length being 0. Hence both the original VMA and the new
VMA remains after the page table migration. Seems like this whole
mirror function is by coincidence or it has been designed that way ?