From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 78583C32771 for ; Thu, 22 Sep 2022 01:15:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A04880015; Wed, 21 Sep 2022 21:15:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0504080011; Wed, 21 Sep 2022 21:15:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E327C80015; Wed, 21 Sep 2022 21:15:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id D2ED680011 for ; Wed, 21 Sep 2022 21:15:13 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 952C5121346 for ; Thu, 22 Sep 2022 01:15:13 +0000 (UTC) X-FDA: 79937952906.19.21EA2BE Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by imf13.hostedemail.com (Postfix) with ESMTP id 0B72820031 for ; Thu, 22 Sep 2022 01:15:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663809313; x=1695345313; h=from:to:cc:subject:references:date:in-reply-to: message-id:mime-version; bh=JJj1wIiwpnC3/y7bxztkVaqbmNboYLIvqTym1Ql1Hpw=; b=B5bHhlEXcJaP84+H7JtE4FrKkSXdWUlqMM7K2ydfHeDIeM4L9cD7HnuQ PaJJzwA1davrk8rjHtHEVXduWcWaBPX3dIHGWgCF6D9ekYlG3u4mKLbnI A8SwjhnAHoD9Ol32X3ymSemJ1SE2yqBJe3jMPbN8wT4X1rSFudDcMUF5V 4r3amwVw/u4LUJFb5JFVUZid61+d4iLRFdYi/CS42yGB068HzjMFnu09W 7DANoUkZ9t6R/gpLcmum8cQUC2Bqa/ETgM6a7sLlkf16S6sgJszn05W9o 3yQGVXDJDKzvILrxqh20M+FPIsqqR9b2lX10OldiPoCUFXLCR5ZPhAoeq g==; X-IronPort-AV: E=McAfee;i="6500,9779,10477"; a="298883131" X-IronPort-AV: E=Sophos;i="5.93,334,1654585200"; d="scan'208";a="298883131" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2022 18:15:11 -0700 X-IronPort-AV: E=Sophos;i="5.93,334,1654585200"; d="scan'208";a="761985649" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Sep 2022 18:15:09 -0700 From: "Huang, Ying" To: Zi Yan Cc: , , Andrew Morton , Yang Shi , Baolin Wang , Oscar Salvador , "Matthew Wilcox" Subject: Re: [RFC 2/6] mm/migrate_pages: split unmap_and_move() to _unmap() and _move() References: <20220921060616.73086-1-ying.huang@intel.com> <20220921060616.73086-3-ying.huang@intel.com> <9AF1028D-D939-4F20-9830-F60FEAC6152C@nvidia.com> Date: Thu, 22 Sep 2022 09:15:09 +0800 In-Reply-To: <9AF1028D-D939-4F20-9830-F60FEAC6152C@nvidia.com> (Zi Yan's message of "Wed, 21 Sep 2022 12:08:29 -0400") Message-ID: <87illgky5e.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1663809313; a=rsa-sha256; cv=none; b=eSzwdAJhmkufcvCEqeb6rpa5ip24+RiORPznR+F9KBB4Zib5WANxG7gxTlcRaaI8438iY6 0adf3fPVEovZsgseG7ZzZJsF8itZT9KnPdDpVdbATy6KeRj2kpgXZ/PTmdAolaXsJpKcN8 dkPR8BA8KpB0Vesyz9Xwylxp0Sq3GmY= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none ("invalid DKIM record") header.d=intel.com header.s=Intel header.b=B5bHhlEX; spf=pass (imf13.hostedemail.com: domain of ying.huang@intel.com designates 192.55.52.120 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1663809313; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=481sw+0RE+IutLDxza2XVWWQHD+jcoxQPw3a/R4JkIQ=; b=bp01RXXir/A1s1QGXQhqtCsSvowtoH/t2oDg5hV2nmdFUC4/r1IlEN57W+seEOh08AQx4z Ps3oddTTP1Cw0KoSA08L8jm8QAF8csyoZDfGaQZtKC+eOMB+rKUO2ZsJLMTD418yphAJzm jQ1KLYoBukjy2IiHPWJev34yzXAPmbU= X-Rspamd-Queue-Id: 0B72820031 X-Rspam-User: Authentication-Results: imf13.hostedemail.com; dkim=none ("invalid DKIM record") header.d=intel.com header.s=Intel header.b=B5bHhlEX; spf=pass (imf13.hostedemail.com: domain of ying.huang@intel.com designates 192.55.52.120 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com X-Rspamd-Server: rspam11 X-Stat-Signature: pew7s1piyskhjtdkfcn7apbjrardxm77 X-HE-Tag: 1663809312-209005 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Zi Yan writes: > On 21 Sep 2022, at 2:06, Huang Ying wrote: > >> This is a preparation patch to batch the page unmapping and moving >> for the normal pages and THP. >> >> In this patch, unmap_and_move() is split to migrate_page_unmap() and >> migrate_page_move(). So, we can batch _unmap() and _move() in >> different loops later. To pass some information between unmap and >> move, the original unused newpage->mapping and newpage->private are >> used. >> >> Signed-off-by: "Huang, Ying" >> Cc: Zi Yan >> Cc: Yang Shi >> Cc: Baolin Wang >> Cc: Oscar Salvador >> Cc: Matthew Wilcox >> --- >> mm/migrate.c | 164 ++++++++++++++++++++++++++++++++++++++------------- >> 1 file changed, 122 insertions(+), 42 deletions(-) >> >> diff --git a/mm/migrate.c b/mm/migrate.c >> index 117134f1c6dc..4a81e0bfdbcd 100644 >> --- a/mm/migrate.c >> +++ b/mm/migrate.c >> @@ -976,13 +976,32 @@ static int move_to_new_folio(struct folio *dst, struct folio *src, >> return rc; >> } >> >> -static int __unmap_and_move(struct page *page, struct page *newpage, >> +static void __migrate_page_record(struct page *newpage, >> + int page_was_mapped, >> + struct anon_vma *anon_vma) >> +{ >> + newpage->mapping = (struct address_space *)anon_vma; >> + newpage->private = page_was_mapped; >> +} >> + >> +static void __migrate_page_extract(struct page *newpage, >> + int *page_was_mappedp, >> + struct anon_vma **anon_vmap) >> +{ >> + *anon_vmap = (struct anon_vma *)newpage->mapping; >> + *page_was_mappedp = newpage->private; >> + newpage->mapping = NULL; >> + newpage->private = 0; >> +} >> + >> +#define MIGRATEPAGE_UNMAP 1 > > It is better to move this to migrate.h with MIGRATEPAGE_SUCCESS and > make them an enum. Make sense! Will do this in the next version. Best Regards, Huang, Ying