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 E0C45C369D5 for ; Sun, 27 Apr 2025 19:00:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B18366B0011; Sun, 27 Apr 2025 15:00:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AC6B26B0012; Sun, 27 Apr 2025 15:00:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 967376B0022; Sun, 27 Apr 2025 15:00:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 715A66B0011 for ; Sun, 27 Apr 2025 15:00:25 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 6BCC31CD12E for ; Sun, 27 Apr 2025 19:00:25 +0000 (UTC) X-FDA: 83380739610.16.2ABEEA1 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf08.hostedemail.com (Postfix) with ESMTP id 71F6A160002 for ; Sun, 27 Apr 2025 19:00:23 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KWlVYvKr; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745780423; h=from:from:sender:reply-to: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=mCqwAYZCSc0dh66qfmmYusnvvBLoAOnre8x5oj+2T0I=; b=Wdpn0+RO/JFMxybqLg6a367QcCS5PO3p6CUjvtcBYFhLfA6s4Pc95ff7Pe1CppTyOI5BDc 5I2Oio5ZJPrgYVO9JxShHWA+KNxQN0Og6Ity9n7GMf0B7NNlorIovFZtJPEg0w/fIGYb9W TLmp957BuZjUcDQZn6K4L2Qvc9Gxw3w= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745780423; a=rsa-sha256; cv=none; b=iid1d3Avfmpv2iAI7rA5kctD8WktpEK0TeZ5xKlWKj6mCTUv5AlAB2zvCZc3Uq7Bz6+0ev lrmHkJjZwTjFWIm1Z8bpZ3pkMYAmyxu+uLoNyfGNAnp08GWVWW6aGrrSp0Awj4rbMLBseB 3Gmr+TDPCK1AlZ81QagtcOd76j09zzo= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KWlVYvKr; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=ryncsn@gmail.com Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-7370a2d1981so3240471b3a.2 for ; Sun, 27 Apr 2025 12:00:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745780421; x=1746385221; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=mCqwAYZCSc0dh66qfmmYusnvvBLoAOnre8x5oj+2T0I=; b=KWlVYvKr9khLu/GWUku6rbiAxodtxmTvQlF9C0Q/1VfmYdSapJjPR0i9zfIeXseOGn pDU61wDjhOxPVzs03fbuZIx4jHBhNr6okuTmEat0Hm7kGgRzbPhsQ5E9GEKs05nQA5e+ tl9ghlu0SDhlhRsY0MU++HJxY5NlHUfyTaa0z2rPYiTASe4LSY6hzsmbuyIIs7Il9ftz V2JNGkeE4TWqqOXt/ip5uy/nC6pl1FnL7str5zZ1WMRfD7nni2mewuzuz2eOxy8p08gS Q4thS38VYuHh47bKnpWj2KqRZr3mShq9Fkt9HSBXe0vHootsdc6/67S7acg7jk/5hHdl 8zDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745780421; x=1746385221; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=mCqwAYZCSc0dh66qfmmYusnvvBLoAOnre8x5oj+2T0I=; b=uTMg1MIHh4hq8gMp08iIgQ6wkCZC+zLzdBWZKWh60DL6Dv581sXBSiOQN6Ew9e3PGV lIqLVlUzOTbtTRXAPk+M4ezVoMBY/7ziTIVtXtaQ1hDQ/1+hqYf4yspp+xHnbeC4zf8d 5X0fWa/tQCd2CluH7wzh35UPWmrjYqej5GRXPS5FXs82A2B9WRQHD3td0nAtAN06meNN w4zryVl4GOUFBMvpr1gsZUgl4Qa5GTgDm2pEOmwQbEXieFaHXKCCHRWvYYvbUXhvhx/Q OjgDwIDbT2iiujfOaUB4hL258vcGe9v3P//gupWsQ8JTbp7gTS2/pzOYfPoGlIhoRuFi +wrg== X-Gm-Message-State: AOJu0YxfUeudJSsaEb/lAyiVQc8QWVHfoBLSflLeO2tr0gZRnp6EuVAA 5D1g6bf0GLnaaFekAjM+hikhGXBoOsPc9jo5+prqao04IjorVl9qdWOLwR+z4js= X-Gm-Gg: ASbGncvY1Zn1Bl7KVa1Bb61zj/kUedTU9uhGzyy5/9M2ZZ8Y41C6T8/kt7R6Ecfpwhp 3Fcua800pdK2U8XLagiM2cEsEAMx9Jdc7ISw0id4lNIZL/GomK0mxxgei2dHmoxuOUk4rnZa/UB L6gRRMf/TW5vnDR9lNTLf744wZRlj+uIjoL9HajM4FQqxXq9C3Oj7wskE5HsFVbqXboizhZiOY+ x9fzVVDbtYBV1J7ZgOXAwj3Jo61Tq4z2yZGQbBi4QA8OZCL66pQnLwzaja9gSDMP3hz1b8YdZWG c7uxzFlPQWL7IY5t9OheZpSez8dJPWD6Qp/KA1RXBXmtj0X4mNpjoiDS1nUTeg== X-Google-Smtp-Source: AGHT+IHnhP8OfwmNTbj23T0LsccS6Liv4VufDh0OTB4zjqyQzJVvlOs0vxIfu0mxzqpCysWHijiiWg== X-Received: by 2002:a05:6a21:9004:b0:1f5:535c:82dc with SMTP id adf61e73a8af0-2046a74a4d9mr7876792637.42.1745780421233; Sun, 27 Apr 2025 12:00:21 -0700 (PDT) Received: from KASONG-MC4.tencent.com ([115.171.40.102]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b15faded554sm5862153a12.72.2025.04.27.12.00.18 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 27 Apr 2025 12:00:20 -0700 (PDT) From: Kairui Song To: linux-mm@kvack.org Cc: Andrew Morton , Matthew Wilcox , David Hildenbrand , Hugh Dickins , Chris Li , Yosry Ahmed , "Huang, Ying" , Nhat Pham , Johannes Weiner , linux-kernel@vger.kernel.org, Kairui Song Subject: [PATCH 4/6] filemap: do not use folio_contains for swap cache folios Date: Mon, 28 Apr 2025 02:59:06 +0800 Message-ID: <20250427185908.90450-5-ryncsn@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250427185908.90450-1-ryncsn@gmail.com> References: <20250427185908.90450-1-ryncsn@gmail.com> Reply-To: Kairui Song MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 71F6A160002 X-Rspam-User: X-Stat-Signature: hr6taxacxdpirjhr1pdn3iidxonnfhk7 X-HE-Tag: 1745780423-25954 X-HE-Meta: U2FsdGVkX1/pSP87tOgVi7bU9LWF9qcNLWLpDSG5dU5wPPPU4WClLGICyQTHAUNRU0EnqvEH/m1FQ0C/c+8iFMC3A6QAAkawWv8+mG+6u0UuLFdmbYaesFcJhtQjK19DXSAwCMkJqquMDYGtxUeZxhFoFW0XrH0ccVGgQ7UMKciIB9XurI11CbUN8/PKj0ZyX6BWcepkQbE3aEzuojAz5MszfrBj/KQrWUDtnVZv97/E31nk2jZNYaycsSupk2P5ER6KZMzLfos8ZMOmR8MpEecC8UkYuXLlCiyubjmnTrGPknC5iQxGKy7nQPPz1qV2o7+gFRoo7tl4zmYSB1dpXkPARlZ4PSqmzQPkd6UUcQXw5SI1UVI9Cf0UJcAOhnW5X179j4Zs4MsndRRVk7WQ8xyRrfPU0mlwTFH4F245ijDZTHVMBSUyIRhL0yXDAnkmC7GBnacH/3PRZKh0RXKS4BHeU7QQyzg+mGHO801runuaDL1/rmsodJCW2PgIujp/LKHK0I3PRDGLq8Y52kZaNBixpUSVgmyHDEwMexxYsV/ZW+/Y0ryOaB2lKge4P5kNuEM58+LUc18j1hZkskk61RllikmNsxT+yQPS2PN1GhWEYOImvldahK7i4IL5ofIOdBVlRAvPkeNY18WqRAE+dL2TPSRK9G6tFDZqJWZud/oG6tvDtTFU4iQqN4q/ygc7QLevdNHCbj1vvUSoWOY6xOy/Vu5D2GtynyjLgp1oZX73ZZW6wtLxKi9zup4Y9preLNs7zMpoZ6dERCxbHdE9/HEEQxSU8z8qWS6RREQlGSlU9QP2xqPHwnVDnIajF62XLDO0fTDLxKDF2MVraMTzM96R/svNcj5kdW1W/d6pIzgHcvsPCvkI563HlzUVhmZqF3K5IHK+07u6dwJKU6IUG+hdgI9jV+ghuXK4178pxMtK5WQxL229nsngwMcaFLbXTzFBRH9ZwoUZkTTFvEy z35VsVMX JojhwjPYinssuUp4/31K31RjjYIXmcE8yeFCg28jms6Nw7XFMa15oEbq80ruWOsBoQ83woNN4/i/LyWRQwi05Iq6klTyoSb7fl6ERcIXEaj3IAWAyhxMCGFI4T+44Oo0n/iDuVBGHsWV/5hcFb6Li8svN475VnnlR6WExg4ULMd9X29rGV5hbmoL3WiZlFI0NLAiy1oHkPucQY9zIDi6OFK+2guQ8wrdPwdaRYN39OWi8JOPDt+g2pKVPYyPma4YePLr5quNrKNcp3ffRNMUOlrz29gTHWmTd488uJZkjPOkmgJCd1nGT7XWUY51u1GnIM9nMFCo+235IjAk9w7DGpkJRN9mc8zHxWqM10M2RYRxBbf9HtwmekaGQoc/1aQAWpXEw4TtGUF8CM3KtBDxKAwFFR+h9QoSUpldhX15XXWt8m8THfifGM5Z6K/EZi9PcB/Vxa6QuQCxhQ7CM1VeXu7pZ4xFW+2Szrif8l84abcw6R3RubN3Ppxf11ivbifVEl+wx4DZT+gVUvuBL+t9FCrrpWJo+sIBX5h+jIJZa+w5sIZkh9UUgiqZR6O/oXNDiZ7gyAVNwevAYQTa3RKiddcucOEpFoQDf0o1ZQthlC60SCB0= 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: From: Kairui Song Currently, none of the folio_contains callers will encounter swap cache folios. For fs/ callers, swap cache folios are never part of their workflow. For filemap and truncate, folio_contains is only used for sanity checks to verify the folio index matches the expected lookup/invalidation target. The swap cache does not utilize filemap or truncate helpers in ways that would trigger these checks, as it mostly implements its own cache management. Shmem won't interact with these sanity checks either unless thing went wrong, it would directly trigger a BUG, because swap cache index are unrelated to shmem index, and would almost certainly mismatch (unless on collide). While some filemap helpers works for swap cache space, the swap cache is different from the page cache in many ways. So this helper will unlikely to work in a helpful way for swap cache folios. So make it explicit here that folio_contains should not be used for swap cache folios. This helps to avoid misuse and remove the folio_index usage here. Signed-off-by: Kairui Song --- include/linux/pagemap.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index af25fb640463..a0bed4568c66 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -935,14 +935,14 @@ static inline struct page *folio_file_page(struct folio *folio, pgoff_t index) * @folio: The folio. * @index: The page index within the file. * - * Context: The caller should have the page locked in order to prevent - * (eg) shmem from moving the page between the page cache and swap cache - * and changing its index in the middle of the operation. + * Context: The caller should ensure folio->index is stable and it's + * not added to the swap cache. * Return: true or false. */ static inline bool folio_contains(struct folio *folio, pgoff_t index) { - return index - folio_index(folio) < folio_nr_pages(folio); + VM_BUG_ON_FOLIO(folio_test_swapcache(folio), folio); + return index - folio->index < folio_nr_pages(folio); } unsigned filemap_get_folios(struct address_space *mapping, pgoff_t *start, -- 2.49.0