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 3577CC3ABA9 for ; Wed, 30 Apr 2025 18:11:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F5476B000A; Wed, 30 Apr 2025 14:11:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A6586B00C4; Wed, 30 Apr 2025 14:11:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E10386B00C5; Wed, 30 Apr 2025 14:11:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id B6A0B6B00C2 for ; Wed, 30 Apr 2025 14:11:23 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id E7BFA5B821 for ; Wed, 30 Apr 2025 18:11:24 +0000 (UTC) X-FDA: 83391502488.06.34F64A1 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178]) by imf01.hostedemail.com (Postfix) with ESMTP id 0A3FD40009 for ; Wed, 30 Apr 2025 18:11:22 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iuUx1++A; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.215.178 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746036683; a=rsa-sha256; cv=none; b=w75s6qy4CcXJC+TlOm3qRKRzbpk6nxDM0ME7mP40hiJqtHeeLuVRQdeHx/tp8BbtM8ey0t 8fsYPg9Yzys8HW7+Pvs11qbCuOxBF0rojDrtlz6sF7TU9F1K8JvSZ6tGOlCV8lvAko38xS oIiixyE0X3sZZvYd/Od/QwxWzdYZCCc= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iuUx1++A; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.215.178 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=1746036683; 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=9qHFF/xTlBQeExdAl4eX04pdKCEarK6ESk+cMoKBj4E=; b=UhCr4PPcDhV8NSsD2TqRwqwaPK3+12IajNdHlfCXFCKSotTmIOTg1rj8jcbhv5vyXw/S4t UJQ2VBNICq16K/BVrvZCIpORoAmcBc7jmRGzcEa/ihpv3qL7VC7eKY+zSr9V1fgOvQYgvn 8q4jjM4UpoBYhkZLyE7x6crJosDmicU= Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-b07d607dc83so131015a12.1 for ; Wed, 30 Apr 2025 11:11:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746036681; x=1746641481; 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=9qHFF/xTlBQeExdAl4eX04pdKCEarK6ESk+cMoKBj4E=; b=iuUx1++Afe1HS4BeEHWCngde5hZq9Fj8MuF+eKchLf58elEoQstNo+k1Exs9LD7ia8 EA9AqrlJFH7BosNq1fpb915qZfQpispYYGf45pRQrBIqodZQ4uP/xBKxYbUsXgANNlbu aTCuOhu1vJSI/7J+8SptPVKbCFQbn5CrlvakstBrnDigG3TFU4tbXltgtjyS81F69T62 Tmq97Fhl6vME6NBQ0O9AA4aCLgPabtttJ9nqeb75RnzgIdGsL9/VJNabl1TG7OVjIHgm AON99jUgr/61VwIxnWW9rVj/CYF8Mx7HMeQhg1NIpFXyGMSp1e2Ne1A9VcnYxEXwHMn6 k80g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746036681; x=1746641481; 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=9qHFF/xTlBQeExdAl4eX04pdKCEarK6ESk+cMoKBj4E=; b=FrrNXKWALSmMd/gWK2QzagSvl+YbZMLjgUaw7SqBfJ67X7B6I3sF8/S1n8tiwNIMSq 72RYUgq+x4ktCmAIAZkOa8qS+KUsSnkMdiD3lnfmyhSX32Dln7PhmPPMSGEbsivbAqsX YO9gGLhpatIBnujU1HtC6n/9/T2QrmtAdGRbWoqmnzAEIemyHyKiPfLdR8GT1or8D2tg v508IN7NpoIJv9EM/SlTwHY2LB1XWoaapDW82M6iZikiven3FZYUGUosVAldeisDXH/6 fhRnfzbOAeMYam7eIx+oaGqGveEFwR1e2ZqMJxQwBoxuyLF8MXYnOMDSY9NvDcRZ2Uhh XeiQ== X-Gm-Message-State: AOJu0Yy2ioeDBLRxaeZr36ISKz3CXhO2NIoaCubMzmAH4wMYDH1jTkBp UcqZqQ9/rosXdCYKGT4jXfD4LhOnE0qAwFxR691tXd1m8CpsTNxX28oEz9ON0jYWHg== X-Gm-Gg: ASbGncu8ihpXIw452Xxjywjkqfk9C6vz66KncbegtnG7TDrj3Rd3L1MlmIGavfw3LGb MiHWiO0vjTLgckJE0uVFSWGgEPu5ynYJFzc7hv9JY+KnopXO4IPw9iJKlAP4zOL6QkwbLiSIJ8Z otfDISp9ijD1H2lVRV//33MTtCBX+FJgg1y3elaGpT2zQ8zjyx+mjIAM9bSnAZxCaCS2paxgk3H 0pIANT+jL0vTIdrAsAbMSQ4sd4nKE3QKCMVGcij5mdWU+ovwEtD8livjb693u4Qxjv6wCQyOFq3 z/k+iv5LCtHI/J8xwCmEyNULWdW5T5ZZ/YUVRyJxgkdf+I+Lrgt3j90zCTJy40GNY9+kxcFO X-Google-Smtp-Source: AGHT+IHF5M1/PXpGFD3JmmxbamN2ef4frqiiXFLFq0XpOZjSrO3NxaTlgM0tiao5ZAJP8qQkb0DMiw== X-Received: by 2002:a05:6a20:9f8a:b0:1f5:8da5:ffe9 with SMTP id adf61e73a8af0-20a87741099mr6125077637.12.1746036681106; Wed, 30 Apr 2025 11:11:21 -0700 (PDT) Received: from KASONG-MC4.tencent.com ([106.37.122.198]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74039947976sm1983822b3a.84.2025.04.30.11.11.17 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 30 Apr 2025 11:11:20 -0700 (PDT) From: Kairui Song To: linux-mm@kvack.org Cc: Andrew Morton , Matthew Wilcox , Hugh Dickins , Chris Li , David Hildenbrand , Yosry Ahmed , "Huang, Ying" , Nhat Pham , Johannes Weiner , linux-kernel@vger.kernel.org, Kairui Song Subject: [PATCH v3 4/6] filemap: do not use folio_contains for swap cache folios Date: Thu, 1 May 2025 02:10:50 +0800 Message-ID: <20250430181052.55698-5-ryncsn@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250430181052.55698-1-ryncsn@gmail.com> References: <20250430181052.55698-1-ryncsn@gmail.com> Reply-To: Kairui Song MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 0A3FD40009 X-Stat-Signature: c3puay86fid1isprkuge96wg83nrpgm5 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1746036682-23897 X-HE-Meta: U2FsdGVkX1/2xY8ALdO7pgZVej2SBgWdjd7GyldNAEDFAzEjGWrdS1DtXwix2wBnAd995j2MJ4rN1WQT+372v1CoPa7RxXjiYcWW5uYth8WG6NJrVojIpEspQC15WyVGUTpUzoQ8RgnBxZlUVWYwntslR2NmZCiDamEeRhoN2Ly1TfAmyc0/esRckznC4cDooKB9lwak2D4c9jFGcph0/1oHqbnhWc7r6YOmeFQy8Hr+hahYPkV3HkaIROoaAW0L8SgVOod70IHDc+RZZ4ZT+qi32HMHDr9jFYYgHzbUca+vw0/j6Qptxb3YqprCtuKCtlbyyPx8n1l5P6pbZWN9jcMBZnHxFYW/CM2JocdRgIBqew4x/yQUjENmeQoE2QSwCeYGKiAofExr2ybOpTpPeBi5mieFyXwC3lBCl+VAV79QbRHiqdowvAFlJeEZb3SaHC1xYtrN53utICw3qkvIbOZUyx0iEDGtL/h7OCqh6wItxvYoKEnNXEkzYG/VdBHH5D1/h0j3aN94N/YJMxQ/925Ize9RLfxXCp17v8+5OdbtCvXLuMctfZTr3l7TiFIXmEvNKgbKiDK0U995N3ESRnNDYYeaU8M5HowIAmIo5+xV0GmGNWs5SCdH9E2VuleUtYrcg7C0bR+ZGA3RV42n5+oSW25XFKAV7VttgJyJpH90FbG6sn7WoZCtPoyaLDH8Oe4mWt588bnuMYJKjQrT7h3BFx5ITB+mJh8t+j0MQSGX1sT8Zm+WiiN59nC+5YV4cF9S4VX9v+neopbT7+wgnj/CbmUCJYLlFX3BYTUxkAKozvT6XIAYc2Dvd+l/Y/ShzeCNL4RMarVBTpWW0mb+2lWPsO9buERFiMAAzWeyZWemnzKSVjgpZjhiP9KDWDa41kEC+4uFT5mKrAvDnWXJktOS37dV0Mk01js2fqtdZEMTGiHsf9hQ//TDQdiKkPj1CVscRnkRDy+O+XTf5SS D13g1wpw iHm0EfI1+ldIvedMxatDNZT34SLfBuplvZdyzFYNtT9zkE6xfjT1KSsXHId6n0p2HIergsFZ5sEwvM5Yu1n0XuYLkYdWKFmUXqN+vODPNxZupYpUoTpZXFrSUXXvOmUQNA7fP5Zn1YOYmbnDrBSEQj+hyVD4PefLWl0Qwj28BKT6YmbHWxIL7fyKetkp3OjlrzrAM4+P1CN5tj28SwHxuajBa9VOuwoT1/uxlXzvvvWs1Pf0TGWqVP2i5HXJHl60Z2+NJxv/kRYN/xqmcRIgYzqummEi2pOkeosIuLWANcfDgzvS03NbWYuBAKfYq7eDQNNgcod+zuSlxggSeM0WSlbyq92pbWcjEbZNh2orqa7xjH8pcmXsNGGdJeJ+Pz0eQBRyj50PvDjlO2oqSZNhlyAZOvpemnW2HAHBDm+sVLeTQ1/HnapX4PpZTpFngcreRqq6zB7h0Qb68990O0NJHBnKwot7xp9uyi7I2IRqpswXvP+9WNzEpDvsWCeDX13oafns2Vxg9yOFDF4E1EY0/m8oyAdsCepErm6mQ60toypGxzLbcQwk2PiJwaRCisq1r/6gHIRQJMDPw61gY/Vr5wTkLQf/K4R0mYLy4A8LKmIqK1JKfoQnM6ttH17GkK6wHsKHWmr80qYktAKE= 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 should 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 trigger these sanity checks either unless thing went wrong, as it would directly trigger a BUG because swap cache index are unrelated and almost never matches shmem index. Shmem have to handle mixed values of folios, shadows, and swap entries, so it has its own way of handling the mapping. While some filemap helpers works for swap cache space, the swap cache is different from the page cache in many ways. So this particular 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, make swap cache less exposed and remove the folio_index usage here. Signed-off-by: Kairui Song Acked-by: David Hildenbrand --- 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..0c9aff5ec77f 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 have the folio locked and ensure + * e.g., shmem did not move this folio 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_WARN_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