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 3FF49C001DE for ; Fri, 21 Jul 2023 18:58:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 94F718D0002; Fri, 21 Jul 2023 14:58:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8FFA78D0001; Fri, 21 Jul 2023 14:58:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C7598D0002; Fri, 21 Jul 2023 14:58:16 -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 6CB4E8D0001 for ; Fri, 21 Jul 2023 14:58:16 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 3AF621C9035 for ; Fri, 21 Jul 2023 18:58:16 +0000 (UTC) X-FDA: 81036529392.28.D415989 Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.182]) by imf23.hostedemail.com (Postfix) with ESMTP id 5AD2A14001B for ; Fri, 21 Jul 2023 18:58:14 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b="3SOS/82H"; spf=pass (imf23.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.182 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=1689965894; 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=5dOmaGEeHKijZzwLUbP8a8yo4nCvMNwfv/FbJP6gONY=; b=rpnagkZafEnlbZ+HCS3jC4THQxx/6Htr4lDnfJw9monYpTVAfvPNGc/L2Uh5LApD2YcBBG WWlUyd80Y0YLyicpQLjmQSe5nUIjYcx5k+GNQakvLRfOGY5rkAimtOdndIy/+b3CmwiQqO wE5n7j8FllQEv9CCeV9V3lVjSfuwqWY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689965894; a=rsa-sha256; cv=none; b=6LQdIqoB9F1q/qkhDZs/y9qF87WBk+2Z5mgO6SqgFlSKTuqMaelsrVCJugqBYq+7BDm1/M GRfeY9E212ytD9Bun899DmIS2J76gZGWX7KAQ8/uBaD4O1CL5usVqaZqGjr2ZT18nUX0nk Sa94ipiQKP5K5jhGCNiDkSV2YtXexrw= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b="3SOS/82H"; spf=pass (imf23.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.182 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f182.google.com with SMTP id d75a77b69052e-40540a8a3bbso47211cf.1 for ; Fri, 21 Jul 2023 11:58:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689965893; x=1690570693; 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=5dOmaGEeHKijZzwLUbP8a8yo4nCvMNwfv/FbJP6gONY=; b=3SOS/82HiVB6f8Oyz2CCWSAiBYZr03AcYeZbruYPWnvhm2NfbgThFThewmrM7P7YSV gOtWDk9+h1eyDHcWN9xh1S5ZbFeOHaWHqWfyS/VqS6HTIL3AxB2hIvWgFaecqapcmNP8 pfm39wPUHTosAebvJk5kNmeGi9kKwPxg0CdKMnB5/2r1qqUL0a1QKndsefXVagNog3RC cM83OA9iw+Cuz+eiAAW68pBUmsRnvizBs4aiDa4nG0WnEIcM5XQ2dJF9IXDdysezxpdq 0fUYnzniDkxQ3c4nPStUK6iPLpgye7PaI2A8IwpQ7b8jjPj/oGHW2HgaUpUZIh0wUSPd fsxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689965893; x=1690570693; 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=5dOmaGEeHKijZzwLUbP8a8yo4nCvMNwfv/FbJP6gONY=; b=e9VisKh+sYFMqSuAMqV6ERiEt1Ylp6YD3ACHDyOgeDOKX+xeu+mfxVXcIyz/hX2LTs i5Rtt6QNxbOq6Qqb7+aQJkyArdUgwkQNt3DxijMSx9pjFprWfxMvcvO9gIePsdTOhj31 taWB4UDm7z/N/PLkYAi2Axe+nmrGDQXF92JeOr2+IJNOGvOgkbIyBf9+1is7XIYWMAOY LOfvEIXi0GiLjZ2SOvsdhZsdAQtAPoQWBQAfgws5moywjOmuOOtfEq5tk9zu359JqaMc iybl/PRsrEnXTdb4Dgp4ZdXExCAn/3SlDwn3YeyNKj3s3yyhBt9YKRiYLjWmOpmuEtY/ wjsQ== X-Gm-Message-State: ABy/qLZJy82sGBHkmsqy3maCMpimtm3Ed62kj448Ex5D2XF/CfPJRbck 7iLXUw3d5beo4ZdH853mtf3fnKK9wdXdkani72q4WQ== X-Google-Smtp-Source: APBJJlHiPrJg9+05iGkCCfSMtDz1gx2BEYpc9k/KsPXYLKI7Fyu18C+uzPJg01RUVSZs0P16CO9+AdlDdy6jtR87fDA= X-Received: by 2002:a05:622a:48:b0:403:b1e5:bcae with SMTP id y8-20020a05622a004800b00403b1e5bcaemr43295qtw.10.1689965893190; Fri, 21 Jul 2023 11:58:13 -0700 (PDT) MIME-Version: 1.0 References: <20230721094043.2506691-1-fengwei.yin@intel.com> <20230721094043.2506691-2-fengwei.yin@intel.com> In-Reply-To: <20230721094043.2506691-2-fengwei.yin@intel.com> From: Yu Zhao Date: Fri, 21 Jul 2023 12:57:37 -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: 5AD2A14001B X-Rspam-User: X-Stat-Signature: 3g3fso5gnco61r4j58fo11hboh38xixt X-Rspamd-Server: rspam03 X-HE-Tag: 1689965894-490607 X-HE-Meta: U2FsdGVkX19aPPdB/QwBh8qmXxdOBtCSC/oD/4RCVPX+nliNqPkraomSbZS9QKEHUSVC0jYBrmMNkLKl/7FEvL83dGqIp0WY8dPjsuKAsilyCJvM5sApnjIR2LOSDYJUcjVxIGfNIRVM/cWTzkZ2Sde6bdUMbVix84pFPxvCUSi2ICslklC/rTdq6I0zhtyiebHLjeJYqbhi3Omvuviu6/48G2gHLH0bcPVevA0LPo/KqYBb9nzSOKcAlUf3qFSKNhTbBSV+ZRgMDbd9VbY6tvr0Nvo9aMJJHZ/HHz5yJ79iu4LQ5a4Bf+viXwrSp1oc3U8AkVWMg/yE1gyPyOJEmHZvVGYbmfkwcv4Xnk6aTV9e02qj6EDSDSouQWRVQaFhqLziU0N/KeP1WEbeN7cceMIhkdHhoRqbo1GMyVbrKx15ya+stvklyuxbNF8Y63Cyujbynsr0rEB0K2kStVwteK4OQw27Fu7t6C/IsOoKtgMtxsjPo0Ykv3y7KY33Np8xtAZLvn1R7XXLEd7VFFsylmbvYi4OXfw0AFEgDfM61RJNYig/qdXGBsbJXlTI3o9fA6mEtLZayQX9oqQ8SYUQR/2c0mIj0BFlTiS/5bvrArb7ovQdFFaD1DBLD6EDAWiSCeeguIvva8DXAA3TA+mKZhTuzF0IgOs7Pgzjch+9zWxVxpuDSz/+0Cr3+tPJbQPA6qtFgR+ett9DH4dfT+ZBT6A6rAFRiHlAEoEI0XfFxg2/rrN+fLWDPn0k8qRuWESJ3bhRA92j8dNCJqpVj/wNJgWU0yADz/rQLZ3nQ+VvK0ZgT7dCbLPVV63Cae+JedGK+b9tS89enA3V/ojuZX1JbvatpvQHewK1g3/9FQ2D5nQkzO7AElpKGHDYz2zPwynzkmh9znDDMPIqgTwz7Mp5VJeHhUF9NY3bPbBW9TkANUP5433vQh8dt0h85Pg+AEwlQqrhMlnaHthc/IIoXBx E8Xb09Q3 gyoUA/BAthVTt2Yrqo1dllkwp+tEbIYT/NaZ+Dn/UrxSVwdBRtxQJYtVQXk9hJ3YXlsJrKnn4M27y+WvNgIXIg6JytiIzuH6N9FvvhfsFOrNujfJ0+nZe/FMzWL08WFf+pZselzrM3mvA1WyfHJhgocxxAeuKpVvMU47mS2B+8+PxRU6u9uHovBuX+pxFcHi9RnzLvifOTaNLqSw2E4uTFME8cC2c5+3z+MkNajJPEYaSw6CbKMrqxn4TslK4pr4Asr+zLDdZuMr//rtrmFEGq5dSSA== 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 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 > @@ -383,7 +383,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *p= md, > 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. > 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 *p= md, > 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_anon(= folio)) > break; > @@ -682,7 +682,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigne= d 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 neither. > 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. > break; > if (!folio_trylock(folio)) > break; Please send two separate fixes, and then: Reviewed-by: Yu Zhao