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 31A8AEB64DD for ; Tue, 25 Jul 2023 05:22:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3D9048E0002; Tue, 25 Jul 2023 01:22:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3BB3C8E0001; Tue, 25 Jul 2023 01:22:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 277F08E0002; Tue, 25 Jul 2023 01:22:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 1759C8E0001 for ; Tue, 25 Jul 2023 01:22:56 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C9D60B242E for ; Tue, 25 Jul 2023 05:22:55 +0000 (UTC) X-FDA: 81048989910.24.647A31A Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) by imf02.hostedemail.com (Postfix) with ESMTP id 00C4280006 for ; Tue, 25 Jul 2023 05:22:53 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=GOGBZJ4s; spf=pass (imf02.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.169 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690262574; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=hY+1xbPxNkFP+3LBebcLpH4YNa6U3rIKa7VhFfz0qD0=; b=NTNwL9oYn1+ITvflOY+bTKcYBtxr9RP3IXaplT/QnJdMo3G1p2HelB8kD9unvPrkMIm5eE +lkrqTjRYi89dUZ9rimKawa2x+hFoKHQneuXXp38+Gas41gLhEso1pR87mUbjTbfPn0a0y EDbEVLB5tmizoOhX5TJdqzdu3UPSn54= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690262574; a=rsa-sha256; cv=none; b=37gC/fUqmd1XtAknE5g81Ndbhi0u3daucsAVBWgWqKQTSlSeMYsUxpZgyzSP+aLy6EQDcK aKlvSu/ZHW1A0VlQSPPhI9sgpJ+LUKYTm3f2/oteNAJJPkzQEideJOzRq0YP7aNT0sfveP gnhYzOIKRA62BtJHTrdjxQaR5iYZEFg= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=GOGBZJ4s; spf=pass (imf02.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.169 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f169.google.com with SMTP id d75a77b69052e-4036bd4fff1so190331cf.0 for ; Mon, 24 Jul 2023 22:22:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1690262573; x=1690867373; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=hY+1xbPxNkFP+3LBebcLpH4YNa6U3rIKa7VhFfz0qD0=; b=GOGBZJ4slEjppt1kv078jezT7qk0WPKcKJZ9mviuJxxuP4RwMUFRyxjNFCWVCSyM0e vQN2eGLro43tzAlpARzR9GfH/7mKHjjLJeyegz4lljSxm9o+yffK6XiMFynpYSqv0y0B fb2gAAEuP4dECvd9VpIv2EuwxVZBCgepKFmdtZdAGnx13Hz8sK5Lh97s8Gsnm2+/wbS9 dDzmwjm89Gb1r8vrpTRs5V+aayo7IpDP7Fi419yJGzMZXsVZDT4j6zpeWkJ9nyz/Enoz R1boZ9sNKSMmqdrG9VKKojAg0/vsVaQdVFj0CwwXCnEh/zqe92cNVHw6ltoBzQilvI2I ZBRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690262573; x=1690867373; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hY+1xbPxNkFP+3LBebcLpH4YNa6U3rIKa7VhFfz0qD0=; b=FVIq405Jw1+w3Qgg9HlajurcWrI02r1zF+NfZyUFxND8tKU7G/qmK4bgSXiUamgIDp Ke5IreXCduG5k/UbuDLMlIAHjOviCdO0TabuoaAmLASWUJEb/W8qliinGr5dPx1nu3yI AqBaqFVAZmWuCb8ep/kkYKFAbA9744NlsxvjnvZeGDDRNaZ3cNGwm0LfiWPlzJAyPB1Q i5FUIC9Az6Baa99JBwHmjCwyyCJIUrfP9GxxqGk76zDVZoK9P78QHCRftuZo9iJ98CBU zNNvhn4hApgt8hJhqhicbEma1V10E625hOZk3PoN+u7pfDtK6VfsJAQ69JeGw4oxkxaR rNXw== X-Gm-Message-State: ABy/qLaJJ389A3rkqKdVeBsA5j5O21AohG7JSjff7TNbSfO3iC/kf+// 8t4s/IYiMq/77upooXarZusZZhHvpsJ9Wb72hoJEJQ== X-Google-Smtp-Source: APBJJlGXl38AIBCxI+gAPDOq7kVP63ezo9ZpB9gUdDZ9ohmaYamCQePEpqUqe9YRHsaM5M+c3ldEpTtHiYY7pKmhkPg= X-Received: by 2002:a05:622a:104d:b0:3ed:86f6:6eab with SMTP id f13-20020a05622a104d00b003ed86f66eabmr95579qte.14.1690262572894; Mon, 24 Jul 2023 22:22:52 -0700 (PDT) MIME-Version: 1.0 References: <20230721094043.2506691-1-fengwei.yin@intel.com> <20230721094043.2506691-2-fengwei.yin@intel.com> In-Reply-To: From: Yu Zhao Date: Mon, 24 Jul 2023 23:22:16 -0600 Message-ID: Subject: Re: [RFC PATCH v2 1/4] madvise: not use mapcount() against large folio for sharing check To: "Yin, Fengwei" Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, minchan@kernel.org, willy@infradead.org, david@redhat.com, ryan.roberts@arm.com, shy828301@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 00C4280006 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: emfbyg9ohjqdegd4b9ok51tgc8dti4fc X-HE-Tag: 1690262573-373818 X-HE-Meta: U2FsdGVkX1/FrFrKJ3UcT6OsE95TviMKBVrn6pBb2jhPD1nzPLGsDFIfXiPVLHDQxis4wtuUdEbmTwQQ7TQ3VolW3dLbSI5g86NP5iLCqvrXD5AZh2n3ZOtSLxvGgCjX/tpd3Qf8nRt0SfNACcZuOcvvhmyMT3acX/cDZZyTTj6GGFzZrP7t9ts40QvOsslj8reXWZJQSScvo3zbLRWfpYSRjdaqKTKb51lJJ4i3PDbgh9ldJ6ygoiyu9wrbROTREo9PTB4HMBkb3L9JnvEUusWGQqihNPNHVhpWABHXLe5ZuEVamCm8cqU+9FmvcMPsjcI2ELu0B7xQe0x/nBExqSH5o3Fuw7pt8DD7A7CXldMk53zl6+eWAQ1AOGsmx9nyQ6NMKtPUJNt9L5h/Zb8BFu33rt08H/9xobMpSp3LQZ2PlC+sXFy+c0muqombEf7Ol39TrZfaVfSitdlV/VBSj3hlgxfJTNvc45vvlFXnTtr/0X8KYQmDzWIG9YOI/ZhO4YQTl1Ewsqg9rq4T1t2vPpmGLShwJtKV7jAF9C/bLpTiZAsMzthcEG1PDQvq/IPVtpkYTNcrYzzNX0jIv40WT+mcdDYwS4Bvyphc0r8QDOtCy/bzs07WDvQRdcVt89StpsD8ZwB5KdTI9nVzQdTIgyAUMLkEm2D00dPLhqy82/2Kz/ThvCLM/WeJPp2SF1o303dsrYfZJIsJWSqt3t48BWQZqtD+BfWrpTnhkBSwzsqaAY14UsODGqfXQWyTReDMDpKkTQ5QwTgcfFde0kN491ZuKv5y0OSyPQ4akjJBGlpD6+FvduZK+awHILZpBXahK3D87InaXqYRJBDmtb8Hq5kxJikVL61G4CVm3by1sgLWMjtV51zQ+vzgV+840VyGXedg6f4L3hd9BqzjYNvrpjftm/f9KrOBjzkrRKtIJcSPw3lKpdwfUaWIecmA8/k7trRcnMY6UVWhu2bMP2y Ub5q+ESy RJ/hcflv7Ph+dyin7kGBUhC041subpMyktrK7m9UD6Ai+PzPW8uMaGshjKb5ehdKjq86+jFPoWaciZTBcWtol2Fub9bUwChNX74bp+/L8tj1zvyZ1/Iuy4saepC15cSPmiWLUVguMDReLxfUJSnWIGD63sblqAmiSD8wbjtnbYqJJx+j/bTkDv7vh2OwOwwYR4SteXvGyjbPBrQhK7ra0jDIlLKYu5aJgOTKqueGkpR41ZQvfL5MMg5D3/hmCU+5R3igSEDYF232D2T+MPMmzBfyyKw== 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: On Sun, Jul 23, 2023 at 6:27=E2=80=AFAM Yin, Fengwei wrote: > > > > On 7/22/2023 2:57 AM, Yu Zhao wrote: > > On Fri, Jul 21, 2023 at 3:41=E2=80=AFAM Yin Fengwei wrote: > >> > >> The commit > >> 07e8c82b5eff ("madvise: convert madvise_cold_or_pageout_pte_range() to > >> use folios") replaced the page_mapcount() with folio_mapcount() to > >> check whether the folio is shared by other mapping. > >> > >> But it's not correct for large folio. folio_mapcount() returns the > >> total mapcount of large folio which is not suitable to detect whether > >> the folio is shared. > >> > >> Use folio_estimated_sharers() which returns a estimated number of > >> shares. That means it's not 100% correct. But it should be OK for > >> madvise case here. > >> > >> Signed-off-by: Yin Fengwei > > > > Fixes: > > Cc: stable > OK > > > > >> @@ -383,7 +383,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t= *pmd, > >> folio =3D pfn_folio(pmd_pfn(orig_pmd)); > >> > >> /* Do not interfere with other mappings of this folio = */ > >> - if (folio_mapcount(folio) !=3D 1) > >> + if (folio_estimated_sharers(folio) !=3D 1) > > > > Strictly speaking, this isn't a bug. But it may be ok to include it in > > the same patch. > OK. I will drop the change for pmd. > > > > >> goto huge_unlock; > >> > >> if (pageout_anon_only_filter && !folio_test_anon(folio= )) > >> @@ -459,7 +459,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t= *pmd, > >> if (folio_test_large(folio)) { > >> int err; > >> > >> - if (folio_mapcount(folio) !=3D 1) > >> + if (folio_estimated_sharers(folio) !=3D 1) > >> break; > >> if (pageout_anon_only_filter && !folio_test_an= on(folio)) > >> break; > >> @@ -682,7 +682,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsi= gned long addr, > > > > What about madvise_free_huge_pmd()? Should it be changed as well so > > that it's consistent with the first change? Either change both or neith= er. > > > >> if (folio_test_large(folio)) { > >> int err; > >> > >> - if (folio_mapcount(folio) !=3D 1) > >> + if (folio_estimated_sharers(folio) !=3D 1) > > > > This is another bug fix and should be in a separate patch. > OK. Will split to two patches. > > > > >> break; > >> if (!folio_trylock(folio)) > >> break; > > > > Please send two separate fixes, and then: > > > > Reviewed-by: Yu Zhao > Thanks a lot. I will drop the mapcount() change for pmd and sent to patch= es > for madvise_cold_or_pageout_pte_range() and madvise_free_pte_range(). I don't mind including the PMD changes. Either way works for me :)