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 1D290C4345F for ; Mon, 29 Apr 2024 19:43:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A72746B009D; Mon, 29 Apr 2024 15:43:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9F9DE6B00A1; Mon, 29 Apr 2024 15:43:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8EAD36B009D; Mon, 29 Apr 2024 15:43:17 -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 6593C6B009D for ; Mon, 29 Apr 2024 15:43:17 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 0E4BF1A0146 for ; Mon, 29 Apr 2024 19:43:17 +0000 (UTC) X-FDA: 82063593234.16.02A9A17 Received: from mail-io1-f52.google.com (mail-io1-f52.google.com [209.85.166.52]) by imf11.hostedemail.com (Postfix) with ESMTP id 590C240002 for ; Mon, 29 Apr 2024 19:43:15 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZkHqZttD; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.166.52 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=1714419795; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1bXEsZemPTapFUBYJYdGYyaTl1e47CcMr+klkQDxtP0=; b=tT6ZFhPGVnzy12CXTC5QE0iWRL2wsbpe84eOsXQfo1PTS79O/cr6FXjOWb3klKauIR1iWO bixgCEwHBYPr2OPMt+mNAOQvttixn3+ti0Wl2zpNStQJWunWq17GsOf5GYM/+8OQkhgSmp MxPHYlokXc2G3G4tmTPenXiBAKMBEC4= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZkHqZttD; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.166.52 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714419795; a=rsa-sha256; cv=none; b=0K3FYiSireCiRXNf7Fd67vDCiBJq9Db9W5FbU/oTjuMO235wwl87kJdm3bN+xWqMQDDz1K zMamxEyjQsNNmRgVP+D67zF3X2x9h3RxysZdlHqu4PhSvUmZwyj8U4V5kfnYsYRM9L+Lkc t5VH8xFiRSzatdKzPjNw5/q3xxs2a4Y= Received: by mail-io1-f52.google.com with SMTP id ca18e2360f4ac-7ded214dbdcso45933539f.0 for ; Mon, 29 Apr 2024 12:43:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714419794; x=1715024594; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=1bXEsZemPTapFUBYJYdGYyaTl1e47CcMr+klkQDxtP0=; b=ZkHqZttD2CNIINjFJx3FFfWG4VY35R4J/qwaoEglx3Q08C0MlSZpvWZBTzzk4YIS3C WYnGAsW4odz7NaYQEf9YXc4/YWasYb/gt6fVjj4X/2drkypFHB4n6+yx9KJ4WMvvsKEG SV/zj1aGKSDDoZZHzrWISgHOTbp343oSr7rZW2eDiTRWkxmbdvsREcDhwohfEYDuCFNk nm68AXrNH8YT/0CJBLndHSNZUQpkp7mWTzZoU9haSvinqImHR0TdzWaXjffifURMZ8g5 AgeHna6f3mECGjC7lHRp0tvgufWvr6whsJF3jJKtVvKf8YwORCsDhV7eoehZAELVJ8PY 7Gug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714419794; x=1715024594; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1bXEsZemPTapFUBYJYdGYyaTl1e47CcMr+klkQDxtP0=; b=pUwbT3naxr9f6ls/Pa9Q7R4Xy7xoF9vfLX5rJQa29D/xrA/vlO5LJ87c877Ec0wzpx FhtczMHpNae4DTyalYWFpn5GUOaXPzjJpzF83brGPJOf+nya8sL7UnAuetE9Zg7ZgQk/ 6bR/6NgQwfQ8tRaF4jsyYeJfuKvS4llx7t9GhinIDRm/JozH9KGHDOg2crPzXsJfjjcH nANGaeatQ1Nh8XSrGUXlbhmsEfDN6lLMb4lpuMI0euFrtkmZsRzOqD2PSnbiUNRFnEmH G+UixG5GcVwERWKmb8SZQ4hTi+FlxejudWlEYs6Zm1bFOo6TTM6+lH9ZqXrAZw6bUtUN s4hQ== X-Gm-Message-State: AOJu0YzEu0+Tlzz8b8WPkvHwuSeSzBqtEyJFD3BhfHrmHHC/mW8BA8kv 5jrYe2HSn7RzdQKTgrDQuGOQfo9XJ9l5E0DOwR6Wv9FHOXAoqQ63S38df0O2ZC2KEC7kkMDT8JG /aSqSL6bLLFTOSJgMG03RFa4xjyQ= X-Google-Smtp-Source: AGHT+IFBsfccKTIUgtY7jo7PWKUIF+Yl965BP3mgAmUMrz8teYaaYNi1DQEwU5Tw7VSl4uBZm/ij82Dtt9Mrt6sMoI0= X-Received: by 2002:a5d:9642:0:b0:7d3:4ef3:e6c1 with SMTP id d2-20020a5d9642000000b007d34ef3e6c1mr13521809ios.10.1714419794363; Mon, 29 Apr 2024 12:43:14 -0700 (PDT) MIME-Version: 1.0 References: <20240429190500.30979-1-ryncsn@gmail.com> <20240429191138.34123-1-ryncsn@gmail.com> In-Reply-To: From: Kairui Song Date: Tue, 30 Apr 2024 03:42:54 +0800 Message-ID: Subject: Re: [PATCH v3 08/12] nfs: drop usage of folio_file_pos To: Matthew Wilcox Cc: linux-mm@kvack.org, Andrew Morton , "Huang, Ying" , Chris Li , Barry Song , Ryan Roberts , Neil Brown , Minchan Kim , Hugh Dickins , David Hildenbrand , Yosry Ahmed , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 590C240002 X-Stat-Signature: xpichprx9m83hcwnwf35nqrcw65i4mj7 X-Rspam-User: X-HE-Tag: 1714419795-668309 X-HE-Meta: U2FsdGVkX18eeFA1fjrw45gkXd+RV3pRARKYivnTYO5YfNcIB/MdhXK/Mt7Fy0Qc/Cay+IrKqRz3oQcaUi4TLmpTvTUp5bF2UnFbkzHuRbeK1O8dI4H2Wa47g74Y2a+xWNmMW5u+YJaXXcASZ4pxTrH6kXk6o1aZH3dlqypeQNSScdfn+mhm0p5jMj8WSWNKO9lFvBukBA5TOB5HiCTiHKSdJQGuvD625kyCcXCA9wPh5X16teL8lvP6rAkCF5fleQbQjVvMbZf/8Ac+SYwozx+/XkOdjkZcWYadlA1C4QpLHrfgdhjWmZcHBH1xUbviBwRMc2FXIfig6KWBinJ6kW2UEXh3naDqld+MES8dTzhq6DFG9O+rEuccx/9tZnJzwmDdsfs2zoy+5PJ1e0uoVsPBMFsX575VsbzXnEg6/+nanLbub598iReE2zlCh+4vRf7UaOFhSHnmRkqBsCsadw/cEXos8HjVIOiJ3aLEACVs4aHFPXZ3BmHHvBJ0THSAGd91rISp66WqLVLtj+CIwoF5TYkxCml/t7NtnUQKA4dhgz4lINHFwMFJJVr45KfPXLZnL+hR4waTI7GpxIxh2buMRdoda0vat3Gjm1c+D6EbDjxFaMvXPg0zVTx/AScdj52utEixmevK5tEps1ym65g+YLI1wmBzqffvkH/zd5YgM6yhvxjvbMwooe30bYQX7rAOhbnmMNRQJbna9YiH2XbvFqdh8cs4z5KSqEAgbztmD5f0PKFWTPJFP5Kjy61N2OAj+8gab0SmLMkaJZY722jTQ4xxpo7aEYBDkHLt1G3GQjMvZKIV9S8cNuVndLbBCB3mkteb5AN5fnXEAMB33O6FkXk98AyEK8uc1ahgienFqzgvipkzrZqiq1LOdhRdt8IT4rfBWQaacQce9EbymdiZL3O61BztuIXm/kUgjoLg8lwPjahy8b3JiJo7richEvRn3rQNt6X7dHEdDFa m/knlTae OriFjNlEwXbUv1m8VuUCOp8NnPdrJ6wLtVhSxN0md9/MhwHEmjdGpMjnyG4nNt0VhdGpXjlcnuBm9TMg5jGanJg15uEKWu/sFMOmMLVSNK8dVHWfBn9rs+h6O/ymXupNuAzFmU+kfaZNwkKpc1B1c7KtcYSB25APPOO9C4IXEJo5yIYowkJFiHfgPTQRdDw1fAiZIV9n5ocPQP1HMDaxnKwDR1ORXxwq/FkK3sSOoPr2656UPegTmoTRA12NufZrCZvfy2bDl77PCp4uzuRR03Uaqv7szzIMfrn4eDahMTM+kTNxQ34RRVdamPXFHkDBbPsybMEBz9DnT1ENM0J9oqw3tz0z1VpwjVuQkXuyfTU9NqBu4kS98pI8ObHicIX15SmJNzk8I3s2isbj0Gp2LPq5O2JqeIdQS1Y3hh05p3rQzvfHCrVYti8QrqYpU56sl46b1H3h5CYGTR8M= 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: On Tue, Apr 30, 2024 at 3:21=E2=80=AFAM Matthew Wilcox wrote: > > On Tue, Apr 30, 2024 at 03:11:34AM +0800, Kairui Song wrote: > > +++ b/fs/nfs/file.c > > @@ -588,7 +588,7 @@ static vm_fault_t nfs_vm_page_mkwrite(struct vm_fau= lt *vmf) > > > > dfprintk(PAGECACHE, "NFS: vm_page_mkwrite(%pD2(%lu), offset %lld)= \n", > > filp, filp->f_mapping->host->i_ino, > > - (long long)folio_file_pos(folio)); > > + (long long)folio_pos(folio)); > > Yes, we can't call page_mkwrite() on a swapcache page. > > > +++ b/fs/nfs/nfstrace.h > > @@ -960,7 +960,7 @@ DECLARE_EVENT_CLASS(nfs_folio_event, > > __entry->fileid =3D nfsi->fileid; > > __entry->fhandle =3D nfs_fhandle_hash(&nfsi->fh); > > __entry->version =3D inode_peek_iversion_raw(inod= e); > > - __entry->offset =3D folio_file_pos(folio); > > + __entry->offset =3D folio_pos(folio); > > __entry->count =3D nfs_folio_length(folio); > > ), > > > > @@ -1008,7 +1008,7 @@ DECLARE_EVENT_CLASS(nfs_folio_event_done, > > __entry->fileid =3D nfsi->fileid; > > __entry->fhandle =3D nfs_fhandle_hash(&nfsi->fh); > > __entry->version =3D inode_peek_iversion_raw(inod= e); > > - __entry->offset =3D folio_file_pos(folio); > > + __entry->offset =3D folio_pos(folio); > > These two I don't know about. I can add a more detailed call chain for this in the commit message to make it look more convincing. > > +++ b/fs/nfs/write.c > > @@ -281,7 +281,7 @@ static void nfs_grow_file(struct folio *folio, unsi= gned int offset, > > end_index =3D ((i_size - 1) >> folio_shift(folio)) << folio_order= (folio); > > if (i_size > 0 && folio_index(folio) < end_index) > > goto out; > > - end =3D folio_file_pos(folio) + (loff_t)offset + (loff_t)count; > > + end =3D folio_pos(folio) + (loff_t)offset + (loff_t)count; > > This one concerns me. Are we sure we can't call nfs_grow_file() > for a swapfile? Right, I did a audit of the code, all callers of nfs_grow_file are listed b= elow: .write_end -> nfs_write_end -> nfs_update_folio -> nfs_writepage_setup -> nfs_grow_file .page_mkwrite -> nfs_vm_page_mkwrite -> nfs_update_folio -> nfs_writepage_setup -> nfs_grow_file > > > @@ -2073,7 +2073,7 @@ int nfs_wb_folio_cancel(struct inode *inode, stru= ct folio *folio) > > */ > > int nfs_wb_folio(struct inode *inode, struct folio *folio) > > { > > - loff_t range_start =3D folio_file_pos(folio); > > + loff_t range_start =3D folio_pos(folio); > > loff_t range_end =3D range_start + (loff_t)folio_size(folio) - 1; > > Likewise here. Are we absolutely certain that swap I/O can't call this > function? Similar above: .release_folio -> nfs_release_folio -> nfs_wb_folio .launder_folio -> nfs_launder_folio -> nfs_wb_folio .write_begin -> nfs_write_begin -> nfs_read_folio -> nfs_wb_folio .read_folio -> nfs_read_folio -> nfs_wb_folio nfs_update_folio (listed above) -> nfs_writepage_setup -> nfs_setup_write_request -> nfs_try_to_update_request -> nfs_wb_folio-- .write_begin -> nfs_write_begin -> nfs_flush_incompatible -> nfs_wb_folio .page_mkwrite -> nfs_vm_page_mkwrite -> nfs_flush_incompatible -> nfs_wb_fo= lio And nothing from the swap mapping side can call into fs, except swap_rw, none of the helpers are called by that.