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 E052EE77188 for ; Wed, 8 Jan 2025 16:39:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 42EAB6B007B; Wed, 8 Jan 2025 11:39:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3DEE46B0082; Wed, 8 Jan 2025 11:39:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2CD726B0083; Wed, 8 Jan 2025 11:39:05 -0500 (EST) 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 14EAC6B007B for ; Wed, 8 Jan 2025 11:39:05 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 871B3C1265 for ; Wed, 8 Jan 2025 16:39:04 +0000 (UTC) X-FDA: 82984844208.28.32C81A2 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf17.hostedemail.com (Postfix) with ESMTP id 8A99140008 for ; Wed, 8 Jan 2025 16:39:02 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=b7cNyG9G; spf=none (imf17.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736354343; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=FbU9VMY2knnyygoOkEqJ57aJta1BgUBzkTdgylqElUQ=; b=7X8YTt/I72dURGVj066lPyOXJlGVTLnZlNUQQqo0GHI2g+/6syHWbCrwfEkr8P/Av7/0hu yVqVHb3A6oVAfCyohut+AxXeKLo0VvoAU0fBipIW/VbBrdA7STyjrm86ps9+GCyDWuwvKp 6J6aYA5BeXj9SoQv+oRStfjatSbj+Lk= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=b7cNyG9G; spf=none (imf17.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736354343; a=rsa-sha256; cv=none; b=Ptj4N4VLgCiwmhMddzJ+wCHne1cJ88U/gyWdg90NQucDlL7ZiCdJ97J1OKDPmfJmM3Y9Hb G4eWoLCz/NzViJT25L6iSHb7II4U43i0zydmFmi5iC59RQZqUw1rWXkNTalZUatWhG97Qd f7E7kKR/zcs5werb2Tsf9duXQc8JYsM= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=FbU9VMY2knnyygoOkEqJ57aJta1BgUBzkTdgylqElUQ=; b=b7cNyG9G2ZGLQcMZWf3aJRITuA +WgZHkVzsXkPS/qfBTZ42vxQnWdnmgHoNk0qU+C5ZnVDPghuQQZ+uJWTVlpGxKmStMkZ8FxuqqGpX ywCma1pUtFTR/T+K9zYH1Vw2dlIUmTkVW1TUkNr5sDZfD7CqmVndqZ+Na2z+zWbB8h4We+xm9Q74c USGgpEaENMqGUMiVv3b6vwzIEEquwl97/0p2FXAzUaZNyPUjV2BFTFZvNrwzH4h9e4XZ9RCYzDt2U u5BIp3aDXX9O/DcUygBM7eSBOdJ5+v3knySEsAwN/XLGw3Litm1aupjduo4dsC3w2kRbnj12bmXfu 6+7Vx33A==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tVZ57-000000021bJ-3u87; Wed, 08 Jan 2025 16:38:58 +0000 Date: Wed, 8 Jan 2025 16:38:57 +0000 From: Matthew Wilcox To: Lorenzo Stoakes Cc: Andrew Morton , Jaya Kumar , Simona Vetter , Helge Deller , linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, David Hildenbrand Subject: Re: [RFC PATCH 1/3] mm: refactor rmap_walk_file() to separate out traversal logic Message-ID: References: <0c53589f34a6195938eeb58c3a88594fa30cc90a.1736352361.git.lorenzo.stoakes@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <0c53589f34a6195938eeb58c3a88594fa30cc90a.1736352361.git.lorenzo.stoakes@oracle.com> X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 8A99140008 X-Rspam-User: X-Stat-Signature: 945dy1dsgonejwiffwwc5aq89kypqx5a X-HE-Tag: 1736354342-689918 X-HE-Meta: U2FsdGVkX18SoT2QuKmhYWCmPvDq6bEgo2hQqH9USllD8GrLduBiK/9QquuMJXaakz0ChNY3vQXTJBNUFiweWcgeUtChVq6hAvBaOJPAlljqKXxz4GaAM3e1ucHWhn+/mPbUjgr3ZK26Z27gK60xgxWcTmtjfqKlqo9Z5EobzheNrzxwu5B1mjNhMRJ8cJJC3mRuCnxs0DsAegB7MWFhtkdor6o08XTH/a6xijFwiZdKN35SmkUIUFhvn7/yBsOUh+pqrkgYCxhhB4Cp9TEh0hwcp96ytG4JkNxG12KwkDU1ydeeyoFvv2dTw6ipgne+LlKCNP/8pN0xmCBw1kH/u9+sgJ2m9kwLSdx1VOfI7Qu1CkNzGPLSGpEKOfQTPln4hqT+SBJ5KNk52AxBY/J0uZyjh7GVJJxvBUXq1I05xju+oHeQYJU36KUieTVyheKaJ+kjhMWgpKKwwlmVCRZLFKmOBGld+8WXcbul3OGbfQZsS+ynRxhhuER3M9OH+5QyvBr11/176ygwlQ9xtLUERRYCc04RfTn10ArrhAHCYfQmnUGCLz3QW1DFcLPwtcSaN6B4qUIsxokFiKYa82R3rNkK6f+JN697PNwIszb57DtGDPqeLf8T5lFYSdjAVO/Bfn/5hicZ57FHmquWXziWRKNGeMHqzqhJmbCzcAXX9IRJPa7Vjs0X/QN3wP6IA8Wf5OlgFrX4SgS4qQUMmN1CONZhEhLEV/xDxQR7b6VU1uiNIdD/jt34TcYMIEBj6my1sTCNqeiCxeZoM6tLZfE37VPoiyhaQ4L8bfhyxou3tUpn8FX9G90r77jvAH5/hk/UNC2kujTxzXnX5et6s4WRx+Dq1O/nZ3v4dQOgduoxkNlpxsNan7rD5TdxJiqPNR0y8uNaSKj2v/J3Nq9E302vHMT7cmRMo2HCdobuhqnlautBStaXh6AbADBnIybsJFbV7VHarwEycO1p7ZjOPLl 9RWvK+Tj pYNafCdaRRKJRdWnbvaD65NGSUtm2Hxceqc0kZ3WJjXvDBQMCk6Qydv5ew0MXHXq4ruQOxOj6TSesI+BIwz7Djb6gxUjrXIF0EqJ/BadRcjM6emI5NrL+XAQt6h85EDa1md28u4+Adeo+BeWmXtQn8Jt7ero+YkKYFnAwonAk41Jb+kPZ+BIadFtQmLus0CvvNrr34VXMkqL/TUyKCbHONzy4EM/nupii91l2yQp9VwjJAuxlsDvvZSDv8/xdDiQnIoHT4SQUf6AyfrR9F0zapUOULA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.001539, 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 Wed, Jan 08, 2025 at 04:18:40PM +0000, Lorenzo Stoakes wrote: > +/* > + * rmap_walk_file - do something to file page using the object-based rmap method > + * @folio: the folio to be handled > + * @rwc: control variable according to each walk type > + * @locked: caller holds relevant rmap lock > + * > + * Find all the mappings of a folio using the mapping pointer and the vma chains > + * contained in the address_space struct it points to. > + */ > +static void rmap_walk_file(struct folio *folio, > + struct rmap_walk_control *rwc, bool locked) > +{ > + struct address_space *mapping = folio_mapping(folio); I'm unconvinced this shouldn't be just folio->mapping. On the face of it, we're saying that we're walking a file, and file folios just want to use folio->mapping. But let's dig a little deeper. The folio passed in is locked, so it can't be changed during this call. In folio_mapping(), folio_test_slab() is guaranteed untrue. folio_test_swapcache() doesn't seem likely to be true either; unless it's shmem, it can't be in the swapcache, and if it's shmem and in the swap cache, it can't be mapped to userspace (they're swizzled back from the swapcache to the pagecache before being mapped). And then the check for PAGE_MAPPING_FLAGS is guaranteed to be untrue (we know it's not anon/ksm/movable). So I think this should just be folio->mapping. > + /* > + * The page lock not only makes sure that page->mapping cannot > + * suddenly be NULLified by truncation, it makes sure that the > + * structure at mapping cannot be freed and reused yet, > + * so we can safely take mapping->i_mmap_rwsem. > + */ I know you only moved this comment, but please fix it to refer to folios, not pages. > + VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio); > + > + if (!mapping) > + return; Maybe make this a WARN_ON_ONCE? > + __rmap_walk_file(folio, mapping, folio_pgoff(folio), > + folio_nr_pages(folio), rwc, locked); folio_pgoff() can go too. Just use folio->index.