On 07/07/2017 04:03 AM, Anshuman Khandual wrote: > 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 ? I honestly do not know. From what I can tell, the functionality existed in 2.4. The email thread [1], exists because it was 'accidentally' removed in 2.6. All of this is before git history (and my involvement). My 'guess' is that this functionality was created by coincidence. Someone noticed it and took advantage of it. When it was removed, their code broke. The code was 'fixed' and a comment was added to the code in an attempt to prevent removing the functionality in the future. Again, this is speculation as I was not originally involved. The point of this RFC is to consider adding the functionality to the API. If we are carrying the functionality in the code, we should at least document so that application programmers can take advantage of it. [1] https://lkml.org/lkml/2004/1/12/260 -- Mike Kravetz -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html