From patchwork Tue Aug 20 09:49:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolin Wang X-Patchwork-Id: 13769792 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 DB5D9C531DF for ; Tue, 20 Aug 2024 09:49:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B0026B008C; Tue, 20 Aug 2024 05:49:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 160DF6B0092; Tue, 20 Aug 2024 05:49:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F1AAC6B0095; Tue, 20 Aug 2024 05:49:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id D5E146B008C for ; Tue, 20 Aug 2024 05:49:47 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 8E0AC81914 for ; Tue, 20 Aug 2024 09:49:47 +0000 (UTC) X-FDA: 82472152014.05.D7FE1F6 Received: from out30-119.freemail.mail.aliyun.com (out30-119.freemail.mail.aliyun.com [115.124.30.119]) by imf25.hostedemail.com (Postfix) with ESMTP id 7744FA0016 for ; Tue, 20 Aug 2024 09:49:45 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=sPsGyMCq; spf=pass (imf25.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.119 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=1724147308; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BdoRq8oN4jMPChy+X0I/pW/sjGhNsrwJxvZFVW1ygPQ=; b=cQxtRq+44EV1kscQ/D1ZRVUToeYFzAHfNZDnQc1/4FGycO0oG07kkb7/vXOfQtCuXdE1JC C8AVT6RCBbmWZQvUwqOJvu+grVPdO77XS6YqRG6qAMSDYSKpMO5ATQdL5GLd6DOZjuzzPT OPAU7gL7Bj3uGIdJ4w17vT0kLdG+aIQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724147308; a=rsa-sha256; cv=none; b=Ho4Sda6ZHpa+sQ/6zgLNvvMgS15qRpwjPeC5OXxsplURZcqCBzMXE4NV9CyOQv1+AOJF5R MbkP+9FJwpPo678VJYri7pcp5MZgpoJxriw+K4IMl/YEK5lp9QPRx/RM2ZFTSR7319/k0Y J5Qj30AQ4GMQlZIGud9YrqoiBmhwm9o= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=sPsGyMCq; spf=pass (imf25.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.119 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1724147382; h=From:To:Subject:Date:Message-Id:MIME-Version; bh=BdoRq8oN4jMPChy+X0I/pW/sjGhNsrwJxvZFVW1ygPQ=; b=sPsGyMCqgR0Ot6D70+V+k9rXsJ3UFsAhX3+FRJr7Pebn8hCfJ3KF+FRGJ2IF6ZPvI8CpzHQYfPEqB+qYLQe8kf6X0+Q0jDlYIlrW9RWWqAGD/bMO+/NKVK8iYTasnZNEmJUKvoZqgqpnlX07wsqPd6MT5wx0z0vWEX5tW20ME20= Received: from localhost(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0WDIChL0_1724147381) by smtp.aliyun-inc.com; Tue, 20 Aug 2024 17:49:42 +0800 From: Baolin Wang To: akpm@linux-foundation.org Cc: hughd@google.com, willy@infradead.org, david@redhat.com, 21cnbao@gmail.com, ryan.roberts@arm.com, shy828301@gmail.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/5] mm: khugepaged: use the number of pages in the folio to check the reference count Date: Tue, 20 Aug 2024 17:49:14 +0800 Message-Id: <9ea49262308de28957596cc6e8edc2d3a4f54659.1724140601.git.baolin.wang@linux.alibaba.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 7744FA0016 X-Stat-Signature: ripqothdxyaa1nb57t7rc9szmzmu4war X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1724147385-603532 X-HE-Meta: U2FsdGVkX1/Tu9+mCKGYvVYTiIyDtf10W3UhvwZKs9WDv0RumB5XAn0lqOOwvSsDlVtKZ6aP1RvoKPnbrLSrG86L5kmk1xHppR96JQB0lzPBr1L58oUgYWMQ1I1B1ncoRFcOpCKIMfrr3fWqIujL4VqqB7dissQ3PfiSrRfGB5w0d31JrQDfDTvFXOkUOMddPNAIWLY3El8lYzkTEWGVmXlg4/YLq+g6UH8gHRoAb5NPNWwhqIU0eR5eWGTY6K7oSyfR5wdevC6tBLIT7kq8qsypDg/EToSrC2l6XAgPkNvDtGHlifzF+PeeyjsbWmXUjY9sE8BgLDDgzmvR6disluDFPQ7rj0Y4X0mn3N6uZDukuVLkgJK+a4bOKvBXcupTLn2vl8f2S8Cw7DqGBAP8fQeoy4SuHN4dRgQVqwh5Ws37MJmu+O/9UX4TscdnIjmrcTHz9QFQMa0exLQ6Wr7kgzG7BdQEkzDoj0eXRP6vRMChjKUCnIrKawTDBSLB5CJSHTAENFyUC84a2bCr6vNwnnwvLd8RET5p6fG1CpLbN9m2j105KHHGdeWksGi5HimsntLtTnsUtONEHHRDBIOUQG+xBO3gbsMN+QiU0YdYd7M8u1ZDF/dHLfiZQkS/vKCOG5+iOSaMJBSt5JB1AaJMycHagATnQ//n5lIlBhGgw20MoV2C13Ce0G4zmikvYK/Z4H+OOPEOIlHfi+iQ1JeXAn0CEIqWUDPYlVFyzS8A92eYx/q+dNykTUpn0CEdqhupxRLJ2gvhP9GQpSVUycmDniX4uQnYrOeHvgKXlp6qyis1jMgKYCQB8KiaPZCSyGqc/xdKQyxDK0S5sXWcE0KVdQnIR6sk2iQvyAmHs3kR4Uu8Mlfa9eJKjt0AiSU3aKpR6IDo0lACpz1sKTRpGmqGwe8kDr+o6RuLWratqM5MenMo3q1fVBDC4I0Dewx93RJBxv9RdTGNfcrFKcomnRs CPCFBUNG UXcP/68obcko/ZvAdBUTknqy1yRZD3q/Nv6z/0o6uJRXtH4YTXYOthvzh4wztvSU8bAXXwRfZ6QFe4NAwDhFnof/yYd8imxSf4nyTa14oEYZFQLR3Ezpb9bqGtEf/ytmzN+8hcW2CCskmBuLGvjNTIxJjCGjkuu5ple/yKlB8QB7MOV3v3U/F3uAeG84yLIHMBsXwJGN/mV0GMo3lnQspP7iDFBsNBoVxKOx83SLZ38zOkCAKNqGO6TH8+oESMHCbDqGxjeYRoTzCgWl3UYXqgNBM/g== 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: Use the number of pages in the folio to check the reference count as preparation for supporting shmem mTHP collapse. Signed-off-by: Baolin Wang Acked-by: David Hildenbrand --- mm/khugepaged.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 76f05215ee87..e015c94eba09 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -1988,9 +1988,9 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, VM_BUG_ON_FOLIO(folio != xa_load(xas.xa, index), folio); /* - * We control three references to the folio: + * We control 2 + nr_pages references to the folio: * - we hold a pin on it; - * - one reference from page cache; + * - nr_pages reference from page cache; * - one from lru_isolate_folio; * If those are the only references, then any new usage * of the folio will have to fetch it from the page @@ -1998,7 +1998,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, * truncate, so any new usage will be blocked until we * unlock folio after collapse/during rollback. */ - if (folio_ref_count(folio) != 3) { + if (folio_ref_count(folio) != 2 + folio_nr_pages(folio)) { result = SCAN_PAGE_COUNT; xas_unlock_irq(&xas); folio_putback_lru(folio); @@ -2181,7 +2181,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, folio_clear_active(folio); folio_clear_unevictable(folio); folio_unlock(folio); - folio_put_refs(folio, 3); + folio_put_refs(folio, 2 + folio_nr_pages(folio)); } goto out;