Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1691049pxj; Wed, 19 May 2021 11:33:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw1dhGqtKWdYLs3EZH1qP+PNqx2I2wqHboQrne8rcOnzjchTV0DMHYmJiAwhdLIuI05Ver3 X-Received: by 2002:a6b:7d4b:: with SMTP id d11mr901821ioq.161.1621449219794; Wed, 19 May 2021 11:33:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621449219; cv=none; d=google.com; s=arc-20160816; b=MWkks7W9sc+i+Hdn4ks1E61m/PrCggdfabb8EumtEYQw7w7R2K+1lEBAKHJg4K1jYt rb5goTaHCI+J1wXas0ruaRTRa4EqP3ZS8SZN200fnDrdY409WwQrC2kAJAfWrZ9a+fw2 UrW7MhqqCjoYBTbcZqqREtxAAtnI9aJGyvhiAJs1ys4eDvZ2v7KcFjIdWGeBJXH3nDpr g3jUPQ+JEADl/d+WHu7q0UyUYypYmiksdswqfNtDILM0XDDr8Zh0TnPxacboBCqWwQTG ih84qekecYzQTDF6mBYuNkaafEob5Fthxb6jqKyD/eT44Mk2BfSxfyG7CDSCv/XP0XAW fAcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Bft5/S3sIep+UIOe0wjEBCs4qeqthplQvAas8/8e+yo=; b=eenShn4N0GECYlFSnZEXlIYAM+20NFzIr8/t7ZdF2GCYJ4q7ND8Te8mkyBhcCKf91G vY3ulBTvyGo9LDk6zRUMDoglS1eghFYmdlsn3VsJNE3WEfzel97/cOHqMqGmQgjWNAhk K8bs0OquXqZ4MxCaHdkUkosgJGa7ibo2p2bCqpdjt/WpbodhgZdDga0+JWSKou/UUuno 6rr4B3t57LkNhrgxkhDW+YUaglrql0SoF6vG5Gp5CyfhoQtRBgPY48f9c2NmC5SM0N+t 5IqluU2ZSZ/4ah55iGRMGq8pXuShHMaG13zhVS4DJYMl2BNzqFX0zGKYLIefSPbCs9qu 1jug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nHLS3OJz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x7si13547jat.98.2021.05.19.11.33.27; Wed, 19 May 2021 11:33:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nHLS3OJz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352058AbhERUKL (ORCPT + 99 others); Tue, 18 May 2021 16:10:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352068AbhERUJ5 (ORCPT ); Tue, 18 May 2021 16:09:57 -0400 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C96BC061761; Tue, 18 May 2021 13:08:31 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id cu11-20020a17090afa8bb029015d5d5d2175so2192794pjb.3; Tue, 18 May 2021 13:08:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Bft5/S3sIep+UIOe0wjEBCs4qeqthplQvAas8/8e+yo=; b=nHLS3OJzElgnE2B/Z8SKCricVXLIx3iJxQjJ0syYMD0st4Cu/HagKgnXREM54zswjw XMNbtKvBMaoANopTaCd8U7u2Hm86+M3RuZtminAUpNjSsKZa0ANHy7i82oYV5IUBo3y5 9as9AvR0a6Tf/pms+EH7p0fkg0BSIgxX0pHVwN8P5Wx2tzfzJWe1qn5USVLiIJCq+FuE BSJupLShAnX1rbhtkb46N4UqYZ8EQt19Oxj+xOEtlDuZCPe1a2dfSKZZsE6riRl+RTUN VZadMbE778WhVEQIFJBh5I6kdzgTgYVgZZeinQpMkA7oXwHQKhc9R+s52vZyIwRN3/vc 4HjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Bft5/S3sIep+UIOe0wjEBCs4qeqthplQvAas8/8e+yo=; b=ZXtqbnM3KF3DRg7BvJvnLWwaaw5dIwlO1JzPA+UIVebCU9aSkSU1QKrmTz6IQj9sC7 /oF/ADQNhPrcC6/LLRFzccf+J5JVspoilQU0smYvh7GGEUlpQNWvmINAEioJ7FyVPFaL 9Rv+9z9rYE6Uduq3nbAe6+qsMNjWR8p83FjXX3NreK4UVByM8oPAJeD+FsUJ6zJoV0gx 99w0NvjjMo+PPWr7n4Khe3BCkzkEJwBAOO4j7BknIJMJfQCTn84fLAAqOC37/LWcBQz3 nwKoMypV3g1nAlyeG/XkoNgw29hAK8YNtIey6kaLmyZoHVZSK3MM5mGmEmuTCa0wEhb4 B3MQ== X-Gm-Message-State: AOAM530jIg0vUl2h5yxQU7FSo2OWkzPgYt6s96KHOAcStbX07aTM/LqV RPcHD/A9P78hTXfntiaX4hk= X-Received: by 2002:a17:902:e007:b029:ef:9dd2:be6 with SMTP id o7-20020a170902e007b02900ef9dd20be6mr6495035plo.12.1621368510709; Tue, 18 May 2021 13:08:30 -0700 (PDT) Received: from localhost.localdomain (c-73-93-239-127.hsd1.ca.comcast.net. [73.93.239.127]) by smtp.gmail.com with ESMTPSA id r11sm13456600pgl.34.2021.05.18.13.08.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 May 2021 13:08:29 -0700 (PDT) From: Yang Shi To: mgorman@suse.de, kirill.shutemov@linux.intel.com, ziy@nvidia.com, ying.huang@intel.com, mhocko@suse.com, hughd@google.com, gerald.schaefer@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com, borntraeger@de.ibm.com, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v3 PATCH 6/7] mm: migrate: check mapcount for THP instead of refcount Date: Tue, 18 May 2021 13:08:00 -0700 Message-Id: <20210518200801.7413-7-shy828301@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210518200801.7413-1-shy828301@gmail.com> References: <20210518200801.7413-1-shy828301@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The generic migration path will check refcount, so no need check refcount here. But the old code actually prevents from migrating shared THP (mapped by multiple processes), so bail out early if mapcount is > 1 to keep the behavior. Signed-off-by: Yang Shi --- mm/migrate.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/mm/migrate.c b/mm/migrate.c index 035daaec1ca0..77215f28502b 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -2070,6 +2070,10 @@ static int numamigrate_isolate_page(pg_data_t *pgdat, struct page *page) VM_BUG_ON_PAGE(compound_order(page) && !PageTransHuge(page), page); + /* Do not migrate THP mapped by multiple processes */ + if (PageTransHuge(page) && total_mapcount(page) > 1) + return 0; + /* Avoid migrating to a node that is nearly full */ if (!migrate_balanced_pgdat(pgdat, compound_nr(page))) return 0; @@ -2077,18 +2081,6 @@ static int numamigrate_isolate_page(pg_data_t *pgdat, struct page *page) if (isolate_lru_page(page)) return 0; - /* - * migrate_misplaced_transhuge_page() skips page migration's usual - * check on page_count(), so we must do it here, now that the page - * has been isolated: a GUP pin, or any other pin, prevents migration. - * The expected page count is 3: 1 for page's mapcount and 1 for the - * caller's pin and 1 for the reference taken by isolate_lru_page(). - */ - if (PageTransHuge(page) && page_count(page) != 3) { - putback_lru_page(page); - return 0; - } - page_lru = page_is_file_lru(page); mod_node_page_state(page_pgdat(page), NR_ISOLATED_ANON + page_lru, thp_nr_pages(page)); -- 2.26.2