Received: by 2002:a05:7412:e794:b0:fa:551:50a7 with SMTP id o20csp1690479rdd; Thu, 11 Jan 2024 06:42:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IFyNpBxI2PYbHkoCzZyWq8MiMhpSqMd6rPkDoobA74OjWnj7VVP8zA1BI5xQxEtqbCKA0Hd X-Received: by 2002:a17:90a:9c17:b0:28b:e74f:b7f7 with SMTP id h23-20020a17090a9c1700b0028be74fb7f7mr981821pjp.90.1704984134478; Thu, 11 Jan 2024 06:42:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704984134; cv=none; d=google.com; s=arc-20160816; b=wYNmIETs9fwvmtYmW1v7hr+uBTdBEeDPqPa2GV4EwGYZR8rLfrEzmS/7S4doS2c1Xi +TBuAKbxyu8V+cHHLZ6GiSEO74ENZOqS2ixqOGjh2tUtzgBbg6OdbmYia9qpF/eeyAi7 +p5zmqZI0CCknvkokTx/FErkwE4mIxcY5GVVYlWdoEIRunRzP3td44D9MOk1FxUjilRp vnuigW5axeNl1Mowoviuf8ME4duzn1FZqe44DnszH4glX090D1RlSSFNQG2W+RkDle+B wrR83k3/IJTAsM4XdNXV2JLQQrcj75zOS7DowQQwMCd7fznFiDkQwxZER5HAz0tIpHsb mqzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=286O+sPTZMWddfKTsyMrO89j21hyKTRv693tpd0bq1k=; fh=btMxYaoVVQU/OzYJMEKvBvCH51RczG4+ciHI0bq78e0=; b=D76iwRAYMMp0if6/WvoG11I+qZC05Lp5emcGxUxNmQcEmPG29zh5ZrDNEyy155f0mA wXZ9H4QQfoffQzw9FQZRvtwb9kyrtikwO6CWiwDuI/LMdjlJrVOCv3NzjXWESPzPHJ5I VqWLOKDm0Rdeo8j784bhr5eDuFD3dEfwVbwA96RgSuTv9/GY7PfKTExMrUyL/s06rI0j Ta/KNGWzylHULKFMB+8f7UmU+AopTBkC8vAjauZOnJwWvpOG32zV/CxLEX3D0O1tPHKI 9RsS8X2Bxb3EzLpjQFZANRAQPpupnDFpzahygp1pGEmG+3674y+TfJ1qD/draSplkAmN HwKA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-23717-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-23717-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id oj9-20020a17090b4d8900b0028c86e12f01si4211530pjb.41.2024.01.11.06.42.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Jan 2024 06:42:14 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-23717-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-23717-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-23717-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id F2EB2B22D8D for ; Thu, 11 Jan 2024 14:39:33 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 075B54CE06; Thu, 11 Jan 2024 14:38:53 +0000 (UTC) Received: from mx01.omp.ru (mx01.omp.ru [90.154.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F5D64C3C4; Thu, 11 Jan 2024 14:38:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=omp.ru Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=omp.ru Received: from r.smirnovsmtp.omp.ru (10.189.215.22) by msexch01.omp.ru (10.188.4.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.1258.12; Thu, 11 Jan 2024 17:38:39 +0300 From: Roman Smirnov To: , Greg Kroah-Hartman CC: Roman Smirnov , "Matthew Wilcox (Oracle)" , Andrew Morton , Alexey Khoroshilov , Sergey Shtylyov , Karina Yankevich , , , , , Miaohe Lin Subject: [PATCH 5.10 2/2] mm/truncate: Replace page_mapped() call in invalidate_inode_page() Date: Thu, 11 Jan 2024 14:37:47 +0000 Message-ID: <20240111143747.4418-3-r.smirnov@omp.ru> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240111143747.4418-1-r.smirnov@omp.ru> References: <20240111143747.4418-1-r.smirnov@omp.ru> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: msexch02.omp.ru (10.188.4.13) To msexch01.omp.ru (10.188.4.12) X-KSE-ServerInfo: msexch01.omp.ru, 9 X-KSE-AntiSpam-Interceptor-Info: scan successful X-KSE-AntiSpam-Version: 6.1.0, Database issued on: 01/11/2024 14:25:57 X-KSE-AntiSpam-Status: KAS_STATUS_NOT_DETECTED X-KSE-AntiSpam-Method: none X-KSE-AntiSpam-Rate: 0 X-KSE-AntiSpam-Info: Lua profiles 182570 [Jan 11 2024] X-KSE-AntiSpam-Info: Version: 6.1.0.3 X-KSE-AntiSpam-Info: Envelope from: r.smirnov@omp.ru X-KSE-AntiSpam-Info: LuaCore: 7 0.3.7 6d6bf5bd8eea7373134f756a2fd73e9456bb7d1a X-KSE-AntiSpam-Info: {Tracking_from_domain_doesnt_match_to} X-KSE-AntiSpam-Info: 127.0.0.199:7.1.2;r.smirnovsmtp.omp.ru:7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;omp.ru:7.1.1 X-KSE-AntiSpam-Info: FromAlignment: s X-KSE-AntiSpam-Info: Rate: 0 X-KSE-AntiSpam-Info: Status: not_detected X-KSE-AntiSpam-Info: Method: none X-KSE-AntiSpam-Info: Auth:dkim=none X-KSE-Antiphishing-Info: Clean X-KSE-Antiphishing-ScanningType: Heuristic X-KSE-Antiphishing-Method: None X-KSE-Antiphishing-Bases: 01/11/2024 14:31:00 X-KSE-Antivirus-Interceptor-Info: scan successful X-KSE-Antivirus-Info: Clean, bases: 1/11/2024 1:37:00 PM X-KSE-Attachment-Filter-Triggered-Rules: Clean X-KSE-Attachment-Filter-Triggered-Filters: Clean X-KSE-BulkMessagesFiltering-Scan-Result: InTheLimit From: "Matthew Wilcox (Oracle)" Commit e41c81d0d30e1a6ebf408feaf561f80cac4457dc upstream. folio_mapped() is expensive because it has to check each page's mapcount field. A cheaper check is whether there are any extra references to the page, other than the one we own, one from the page private data and the ones held by the page cache. The call to remove_mapping() will fail in any case if it cannot freeze the refcount, but failing here avoids cycling the i_pages spinlock. [Roman: replaced folio_ref_count() call with page_ref_count(), folio_nr_pages() call with compound_nr() and folio_has_private() call with page_has_private()] Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: Miaohe Lin Signed-off-by: Roman Smirnov --- mm/truncate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/truncate.c b/mm/truncate.c index 03998fd86e4a..72d6c62756fd 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -232,7 +232,8 @@ int invalidate_inode_page(struct page *page) return 0; if (PageDirty(page) || PageWriteback(page)) return 0; - if (page_mapped(page)) + if (page_ref_count(page) > + compound_nr(page) + page_has_private(page) + 1) return 0; if (page_has_private(page) && !try_to_release_page(page, 0)) return 0; -- 2.34.1