Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752301AbdGGLDt (ORCPT ); Fri, 7 Jul 2017 07:03:49 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:46186 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752123AbdGGLDs (ORCPT ); Fri, 7 Jul 2017 07:03:48 -0400 Subject: Re: [RFC PATCH 0/1] mm/mremap: add MREMAP_MIRROR flag To: Mike Kravetz , linux-mm@kvack.org, linux-api@vger.kernel.org, linux-kernel@vger.kernel.org References: <1499357846-7481-1-git-send-email-mike.kravetz@oracle.com> Cc: Andrew Morton , Andrea Arcangeli , Michal Hocko , Aaron Lu , "Kirill A . Shutemov" From: Anshuman Khandual Date: Fri, 7 Jul 2017 16:33:36 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <1499357846-7481-1-git-send-email-mike.kravetz@oracle.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable x-cbid: 17070711-0048-0000-0000-0000025203E5 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17070711-0049-0000-0000-000048033C7F Message-Id: <0f935c5a-2580-c95a-4ea5-c25e796dad03@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-07-07_05:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1707070180 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 734 Lines: 12 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 ?