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 1D849D3F28A for ; Fri, 18 Oct 2024 20:29:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A15F76B00B7; Fri, 18 Oct 2024 16:29:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 99D1D6B00B8; Fri, 18 Oct 2024 16:29:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8171A6B00B9; Fri, 18 Oct 2024 16:29:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 5DE4B6B00B7 for ; Fri, 18 Oct 2024 16:29:45 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 0FD6916018C for ; Fri, 18 Oct 2024 20:29:31 +0000 (UTC) X-FDA: 82687863594.30.D06D23A Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) by imf09.hostedemail.com (Postfix) with ESMTP id 0701D14000C for ; Fri, 18 Oct 2024 20:29:34 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=j9Jxil48; spf=pass (imf09.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.160.181 as permitted sender) smtp.mailfrom=joannelkoong@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729283188; 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=FNQAmNfKMCcEXYmE+B++e1OLPfk125s2vPHs1hWebHs=; b=sUgRW0/V9Q7RDnU3WIP/xP/LhE7BbOe5yQpwDFGNygqbIZbaYzhRA2n1wlkJH7U/BAc6hz NCoBJUYibyGcynNIyqeF65MA+dE9bkqJWxUoMrllFApMS95qLwHcy44cRtkqchyEyTYQYI bfVAvnlaxwrNc/FBHHJyvjiGPPC4J88= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=j9Jxil48; spf=pass (imf09.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.160.181 as permitted sender) smtp.mailfrom=joannelkoong@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729283188; a=rsa-sha256; cv=none; b=6NrL4qSbQ5suahjAFFaaYVhI4+/sAHKvW6FWSTt4V7Y+rl5BlzC8q34NhrTXuIDab5+fUh L2oJ/Vn+3STNoaF9SFYf7NLxk1IPf2m85QDZkk1yvfZKT54LRRZnoFpxbAyBARkNvFE+wL TtfizvadbtI+sqdkSl8i9LQVJymtKwQ= Received: by mail-qt1-f181.google.com with SMTP id d75a77b69052e-4609beb631aso18673711cf.2 for ; Fri, 18 Oct 2024 13:29:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729283382; x=1729888182; 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=FNQAmNfKMCcEXYmE+B++e1OLPfk125s2vPHs1hWebHs=; b=j9Jxil48GpMExrkC5AUefLFmhONruxq/11gjvFw8dG8cCTYS86HUljQlllu+TmpKxm NiRGVfuuQba19QI3Vey9/rVAGyNTAy+6NcAY9jlV6qphIsgJWebECSpvRDq+44gt3T9L VTwF9W5Q85WvFw7OZMEFZJd8luRb/oGYFCmc3rkCw4M5ihcEyzJ+D6vPq0fyYTkPDrqp YeJ+amOOqDxm4/sX47S01WkOkAesDYFoQzohMzv44JBGWSc4EKXz9aZTw7JBzTqakCa3 iYs+JNo0mA0r8ZU/I6r49+Lzwpxu2zAoVRtPHTsWFfpFbe+nK9vgcd5qjjygI0nPEF34 d/pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729283382; x=1729888182; 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=FNQAmNfKMCcEXYmE+B++e1OLPfk125s2vPHs1hWebHs=; b=TCjU3RprPdOfERqa7J/HgglLqOOrE9ZaUhUq7yLcxOoAdgAxcJdI/a7p7bMPhLfCnY 8S+10YqL1szpx2mBFe/MzZhr9ketU+vtlPYeZhyhn8MEN/NOksiDNDy+P6O/retXgOWV wJ3yAWoizF2lhIteWB17o05OK/htLrsCXbF4QY7Jfjta/hyKRQ/d5UidllX97oF56o5N xlAv4vs7AcEB3M0wLBhctCd75VmV28uLfZdZz7/Q9tm7qsClumVRdhoFFepA1zuEnpno GWn9Qj8Up620k2D6d2RuRLOjwg7UGyjL1r2EY9MZv2CbYBwO2ZFMBTleFkfTi3QzqWRl 7WFw== X-Forwarded-Encrypted: i=1; AJvYcCUzezJoAtvr9Zq93mzqyTehu1veefp+mvC9mbUdVbNLif2cs+LDBa3ItViq8vKi9yZxyfDFLGx/kA==@kvack.org X-Gm-Message-State: AOJu0YxWIdhuN3aOyOg3iNBOQfObtW4DHlyIlHyWeIYcsa9La0KHa/qC EdTOCiY+S5CeAE1EjpwNvpvq54AYkoK1tDV8eEyra7Ao6beP286tr8X65bLOTX3a3Qnx+uchhsL LOHd9HVPia5wxYgMLfqbE3ucWVqQ= X-Google-Smtp-Source: AGHT+IHAIHCRBGX/LC1H73la26F77AWFDKgo4IF6ib6AXXvef6TIjRJ7nj32fBdWjVbEhqgFmABoDuUDpS3N3D2BWy4= X-Received: by 2002:a05:622a:152:b0:460:ae0f:470c with SMTP id d75a77b69052e-460aee38981mr44648381cf.47.1729283382216; Fri, 18 Oct 2024 13:29:42 -0700 (PDT) MIME-Version: 1.0 References: <20241014182228.1941246-1-joannelkoong@gmail.com> <20241014182228.1941246-3-joannelkoong@gmail.com> <0ba71b33-71ca-4dc0-a01b-7744933ae6d4@linux.alibaba.com> In-Reply-To: <0ba71b33-71ca-4dc0-a01b-7744933ae6d4@linux.alibaba.com> From: Joanne Koong Date: Fri, 18 Oct 2024 13:29:31 -0700 Message-ID: Subject: Re: [PATCH v2 2/2] fuse: remove tmp folio for writebacks and internal rb tree To: Jingbo Xu Cc: miklos@szeredi.hu, linux-fsdevel@vger.kernel.org, josef@toxicpanda.com, bernd.schubert@fastmail.fm, hannes@cmpxchg.org, shakeel.butt@linux.dev, linux-mm@kvack.org, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 0701D14000C X-Stat-Signature: 9rs3z498iazur5pw8w7c64mjnq5wiup4 X-Rspam-User: X-HE-Tag: 1729283374-564952 X-HE-Meta: U2FsdGVkX18yfqeAXBTT8S2zjy/tZOOA2fnfAXiNt2/ZmgEdB2do++Rndzi/hFCfFSHBn6ouRvxX+AI10cvCMwsdA4eSn1LLwguPjcTIfxiYGDcFG+bCy+PFarZFvmcIGLgGoPMXlHbtRyIi2yEXs+fujdUjZxsxEGaME3am4XoqxhxSAruAU2UHUI0DNt9pEUYPyfg5dz+2XtVpeduYDgKBp/jsqcSIK7biaTRzR0dGqJhIiIIb0Hh9Ba/iwSI2YhvW6P9PuZaGMo7/k/CHhhGzSfM+OxV+Aw9ZxtfNq9qddQC25GduCTwPYKgdeTvZxCNMc03JL3y1QA7qCUKHFOiRVYnm0pyLE0Vlgm7YzmjtupZ3h7GCReHPf7B6cmIkLcy5u+/eE+jdQ+LQp5H8FOyGzqs8c12NbmRkzuHxHzENgKuoxi8ob15UNff/z+15GUAeD9g9HSYeTxAeDJIc7pdCPaoEXoDp+frruj6nH4KL5Tlsu7v+Ci6CHUbMfCSAy90rYYTZSG8Bs+hYsiy3Mly8dSMc3sRgyOm3wE0TxNeU5S2EDUzd6sgYj/A3PbgzkWRbSxan1maF0Bw9a3gGYb43ZpdFEtZDTm/VHQH1YyKL0Lkt7oJv0cCv2dbRhAaS4X9wneFo2CFzPwCAomYBHAqwcC49QLKMhS+G/rKTWQ1n0wDG9mCfbjC2RcQHHu/Dynk+MkLGOIxXiNITkXeDcKZLW7Joi4KJ+6J0g3P5dbqQtw+sfjJaYpElCE/BJhDr+9i7jLw+JP2oZxU3h4QiGaztqHvJPwz26n29Zy27PK5tFJHSLAZBXfGX4daZSTF0axsA7kqbTQt2tXBmYpPWoYdRiymSTiKp5vTCJfI3JKToSlSFxVgy9SZhYZBAF8GnCtIUzWrFyUwrcisPEY3wriWx3AzvKAmswSxm9LzXf4yKt05UiOvgq1Wd3ohAjo+S1fILx5JvSW+ZA3znsyS 72IkX6uf +LAs6EdcbK3NRp/sC9ZSiAJBaWtR2ZiAAUOs8h97YkRUI+FrFAtdAm6L7oLJl3O8G1GXVS3SdKoizyBUdtveoYb4rzeuvT5j30ft8KyAB5OgruVF+HTrhuRnHYa4mUuvD3u+RNlRuU9l4VXnKKIEm3SjvbHAxvii+i3fhQeHBWbp48qgzoV+tCdLMo0ZU4cYH2AgenJXn6eWosCrDBpcI38Xy4EyXV3sR16aaOpWZyw/mdkLCjwGvuCq5bboa7o008MJVDEchtQKMhVT1qs2rYKON6rPBEGFZUvFWT9O24RM46Vx2ViMXb58yiGTRE4JZ/R0jYSU/0wmcZ4zfBYi9mPmADg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.002687, 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 Fri, Oct 18, 2024 at 2:24=E2=80=AFAM Jingbo Xu wrote: > > > On 10/15/24 2:22 AM, Joanne Koong wrote: > > static void fuse_writepage_args_page_fill(struct fuse_writepage_args *= wpa, struct folio *folio, > > - struct folio *tmp_folio, uint32= _t page_index) > > + uint32_t page_index) > > { > > struct inode *inode =3D folio->mapping->host; > > struct fuse_args_pages *ap =3D &wpa->ia.ap; > > > > - folio_copy(tmp_folio, folio); > > - > > - ap->pages[page_index] =3D &tmp_folio->page; > > + folio_get(folio); > > Why folio_get() is needed? > It's not strictly needed but I added this to ensure that the folio will always be valid when we later on access it. My understanding is that it's an implementation detail rather than a guarantee that the folio can't be removed from the mapping until writeback finishes. > > > > > @@ -2203,68 +2047,11 @@ static void fuse_writepages_send(struct fuse_fi= ll_wb_data *data) > > struct fuse_writepage_args *wpa =3D data->wpa; > > struct inode *inode =3D data->inode; > > struct fuse_inode *fi =3D get_fuse_inode(inode); > > - int num_pages =3D wpa->ia.ap.num_pages; > > - int i; > > > > spin_lock(&fi->lock); > > list_add_tail(&wpa->queue_entry, &fi->queued_writes); > > Could we also drop fi->queued_writes list and writectr counter after we > dropping the temp folio? I'm not sure. When I grep all callsites of > fuse_set_nowrite(), it seems that apart from the direct IO > path(fuse_direct_io -> fuse_sync_writes), the truncation related code > also relies on this writectr mechanism. I'm not sure either, but I think we still need it. My understanding is that the main purpose of this writectr is to detect when the inode has pending writebacks. I think even without the temporary pages, we still would need a way overall to track if the inode is writing back any folio in its mapping. Thanks, Joanne > > > > -- > Thanks, > Jingbo