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 517F8C52D7C for ; Mon, 19 Aug 2024 08:42:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DC1B06B0083; Mon, 19 Aug 2024 04:42:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D71B66B0085; Mon, 19 Aug 2024 04:42:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C60846B008A; Mon, 19 Aug 2024 04:42:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A89676B0083 for ; Mon, 19 Aug 2024 04:42:15 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 1DE8C1A10D2 for ; Mon, 19 Aug 2024 08:42:15 +0000 (UTC) X-FDA: 82468353030.15.CB3A6A1 Received: from out30-124.freemail.mail.aliyun.com (out30-124.freemail.mail.aliyun.com [115.124.30.124]) by imf18.hostedemail.com (Postfix) with ESMTP id B57821C001D for ; Mon, 19 Aug 2024 08:42:11 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=rmpWrNZZ; spf=pass (imf18.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.124 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724056895; 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=KLMHvwzxuIVKCo2bV13G0bukH2Tmr6a3PUkasa/nnJk=; b=AAHViKmJyIInunxougWjD7YTsPvlFrOz5ceJPYWKF48a80gffydrN4s2IhzNhoePB1mXrk mIqOGXOQffhL8tN3Vyo3XnSGvCZ72gpM3h1DDA/aq2Pmx2Q48fyZj7rwoT8G4+8TeClHaA t4bXEDfx69ZumqTCU0b1+8UN+zYyICQ= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=rmpWrNZZ; spf=pass (imf18.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.124 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724056895; a=rsa-sha256; cv=none; b=u03ySqGgpQmwDwWtfYxWxvlBQ5OxSX50TYuM6Qr/OACZPi6paXNvH1z46UQ/acZFGclpAJ c9w8fuqDR6kyiIL7Y2EB5vSVDYrNKKLqB6teqAObNs7AAbUD2KbfFpiY3Z06bdm8RsJh2C L5AbSynRKI7gbFlFczHj1kYYsz3CLJU= DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1724056928; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=KLMHvwzxuIVKCo2bV13G0bukH2Tmr6a3PUkasa/nnJk=; b=rmpWrNZZIdFDHFvJVvWy8P8Vi4wuVYhEI1aM+IYnYx79WlAcV0VhsKz4AgI3wBdiZVUUH0nAV7O5orW9el9QRGT9tjHGTckeazUPJO7c/TgnHvZKWyuZijRIFiugn55gjEolAk3JYYqoA0mSwmIlb8rlnzZKLZclT5CGomZ14bc= Received: from 30.97.56.67(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0WD9cnkN_1724056927) by smtp.aliyun-inc.com; Mon, 19 Aug 2024 16:42:07 +0800 Message-ID: <3db665f2-4525-4942-abfb-0c1fdea2f729@linux.alibaba.com> Date: Mon, 19 Aug 2024 16:42:06 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/5] mm: khugepaged: expand the is_refcount_suitable() to support file folios To: David Hildenbrand , akpm@linux-foundation.org Cc: hughd@google.com, willy@infradead.org, 21cnbao@gmail.com, ryan.roberts@arm.com, shy828301@gmail.com, ziy@nvidia.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: From: Baolin Wang In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: B57821C001D X-Stat-Signature: 5skcts4y7pnwass1h3m5zu31k5rcfd8x X-HE-Tag: 1724056931-863507 X-HE-Meta: U2FsdGVkX1+iwmS2HFEu7BFg5rmqqQwKQqhVDzO3150xyubsydt8lec17qHrs0YoR5jaAK9jIYOg9+q9gnrD8qJkqshORy38LI5GC4Ha3riri44bBDxXFM2vl968DGUg94pttb/zrD6fmHZ5qGGvrRQioYeB7imJwf+4CTzQmx9Xmit17ZJqnH/9J9rR7Uqxj9fK+ZmtFIo6x9PCrPq4NiAQX7dBxQeyrIAJHAm4D+g9JjG44jdvL1oUF5nYPEx7Us/nUOTw/YivkaP8rj/c4n0EctV0pWQRUnL9UeJPbWEjqNIVQ8zk2sZxRG9Bu6GAZkRncU+Ijxr4b5fMTFGwkpwrtWHCd1HgX/NvaM+UqHv1Dz7JV2EN/ryps5r2WIBDJT7UbF0ZYr5AINBS8JIBy+0u6L3xmPkKCqwhgRoH77ZDH3yqUDUWh2q4ZxU2urx77yOfJdS451kpWwCrVcXTorddyt2inhGxIWe+wUvy0AYg9GJIUYwnZ9VeECOUlIchF3WrdZ8iwKgKjVGGeAVJiRhOq8agcN6RZNQloX1WnQhrGwWkcn92C6IrsPbYvXUCf2jjOnjz7eHVklvV5kSMu6RS7Qe+lQGrm2Xisthd9tAt8vl4iVoXa/H0aG0K/zQ8cCUPLw9AM78jtNkPzMlItJoPEGq5HjwiUBzDMDk4dHc6CIiKGaZ6sZpcsiei+QLwbf/gdkCT/M+sZ9ZymWANjXfj6900XikJhsG4zYfjansSg46OrqmFJLUjEORkcsUrLYQ52FhHZGMcGzZSdvRFQHZw39wZ+I/V2nGGpUtEV9pvc5456V8Xr1KrLzWNynHVa6H+zTPlG9XmVhpPvn/eND+5kmf2lrtcLDvTqWV9+2nUtmi7YP6WzrqEzO6EagDYIocNLiOmqKPR5MSvonLW57yMTGlOHR1oZuILDu9U++P8QCCjv1eP03ZyV5kwIUisER7lqJkcnloj0Njw0G7 Ro8XmvPq Ll2VRsFW2NGospwZLni/tQoLI6KVW9g18F3MYikyp9fuNu3GGG3K0WCcyB88HsxsjFIQKfJE2vp3ZuN0gM4LyI/u2zd3qqpcjAFlR6QI33jsur81nZHEmdwO1MlCTUPjnH1JX9lhhE6qb9rIgtwAKtBUWDA1Eurzpfozx5AuN6qXG1ZYe3CHMAnZsTF7/Cr8adeeZmJ7E0ue2mO1Z5vza9XB97YZHxb+QJqBrBA3ZiIuP9WHMNKAZujT4ciKuD3zD+Jy9G2j6ONxp15N4mwGYwxVncrb/95urAk/LIfDHREzB6To1yNyg0B2rODaQXsQDepWG1YVmlUJ+Yr+hEb7+dQGD7UGnANgIxvjYPg/EUlyvVIcwPHu84EgbkUzGFg2znaWUj0UU7jBIn59E/xePx6z8BwI+tCr/NqCiM7aXoQyYbR95LYdQ9yTezQ== 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: List-Subscribe: List-Unsubscribe: On 2024/8/19 16:36, David Hildenbrand wrote: > On 19.08.24 10:14, Baolin Wang wrote: >> Expand the is_refcount_suitable() to support reference checks for file >> folios, >> as preparation for supporting shmem mTHP collapse. >> >> Signed-off-by: Baolin Wang >> --- >>   mm/khugepaged.c | 11 ++++++++--- >>   1 file changed, 8 insertions(+), 3 deletions(-) >> >> diff --git a/mm/khugepaged.c b/mm/khugepaged.c >> index cdd1d8655a76..f11b4f172e61 100644 >> --- a/mm/khugepaged.c >> +++ b/mm/khugepaged.c >> @@ -549,8 +549,14 @@ static bool is_refcount_suitable(struct folio >> *folio) >>       int expected_refcount; >>       expected_refcount = folio_mapcount(folio); >> -    if (folio_test_swapcache(folio)) >> +    if (folio_test_anon(folio)) { >> +        expected_refcount += folio_test_swapcache(folio) ? >> +                    folio_nr_pages(folio) : 0; >> +    } else { >>           expected_refcount += folio_nr_pages(folio); >> +        if (folio_test_private(folio)) >> +            expected_refcount++; >> +    } > > Alternatively, a bit neater > > if (!folio_test_anon(folio) || folio_test_swapcache(folio)) >     expected_refcount += folio_nr_pages(folio); > if (folio_test_private(folio)) >     expected_refcount++; > > The latter check should be fine even for anon folios (although always > false) Looks better. Will do in v2. >>       return folio_ref_count(folio) == expected_refcount; >>   } >> @@ -2285,8 +2291,7 @@ static int hpage_collapse_scan_file(struct >> mm_struct *mm, unsigned long addr, >>               break; >>           } >> -        if (folio_ref_count(folio) != >> -            1 + folio_mapcount(folio) + folio_test_private(folio)) { > > The "1" is due to the pagecache, right? IIUC, we don't hold a raised > folio refcount as we do the xas_for_each(). Right.