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 48E27C83F0D for ; Mon, 7 Jul 2025 23:47:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A21D86B03CF; Mon, 7 Jul 2025 19:47:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9F97E6B03D0; Mon, 7 Jul 2025 19:47:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8C1B06B03D1; Mon, 7 Jul 2025 19:47:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7BF486B03CF for ; Mon, 7 Jul 2025 19:47:03 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 41E921A0401 for ; Mon, 7 Jul 2025 23:47:03 +0000 (UTC) X-FDA: 83639106726.09.B04CCF6 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by imf08.hostedemail.com (Postfix) with ESMTP id 8615316000B for ; Mon, 7 Jul 2025 23:47:01 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Mjt9tX/L"; spf=pass (imf08.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.214.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=1751932021; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+twz9nr+oQVhpvFokmcqjrb/5z1Gf99fDgsi3H9vX0s=; b=O2Djsn3BVZcf+cKF41fuzT0ObLfHJMY9PmtuLvmi3PUmeoD3sLgUoO0pb7CJw2m7Sw2oVg rcsS0gUhJVaEPe2vMCuTO/bWyaX6MhpPBqsaKFRy/8ljfvXpVZG+YgGAdcYNpeob9/4lVk Kn7uoxsN9QII7M/BVr/mL1VoozTgSFc= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Mjt9tX/L"; spf=pass (imf08.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.214.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=1751932021; a=rsa-sha256; cv=none; b=Mt9zZ5ZiR1XQk2K3hBJf97wat+MIkicQTIcRqg/0EgWx9QU0wtDWTL6m96eQtWoIxOrF8O 3TAS8ojVglxLY09E5la6WG6Yq+SEBaoHbdGuUrrf8F4VewHJe4hW56iybfNOtARGIm90T5 vReMoSLbE3UsnkPN25jhA86g5kChpXU= Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2350fc2591dso35152605ad.1 for ; Mon, 07 Jul 2025 16:47:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751932020; x=1752536820; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+twz9nr+oQVhpvFokmcqjrb/5z1Gf99fDgsi3H9vX0s=; b=Mjt9tX/Ln3lCChKot9pUIiqB7J58asMByWE4DzlDudEpG/tLcBpp0NYedk+ISm6lXI E56yV9bKASVRI7+hL6D4eQZPkqmEzg5+SDUdqswXXFjT4lKX2HMeOXKoWT0v+7DTUr+I 25sfR0TI49RR1GBiqhT8cMOOU8BEXNyZvWz+Hm8FNv+tsgzuz/JGPo2unfEKHfWsu7mM Qp18OtOlJLdlh3RdxjB5yjffxTP5LlxR6xE61fa6ASpMOgeDh8mWagpiDVrOPv/rxZaW ZGUUmkqWGxJw1Ui5ivXgGijcCnNBv4IUzVmbDz1nXwwN+FaawSS7JQEmohFP3Wwe7TKI ToWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751932020; x=1752536820; h=content-transfer-encoding:mime-version: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=+twz9nr+oQVhpvFokmcqjrb/5z1Gf99fDgsi3H9vX0s=; b=tdUBtMqBA9oIxLH9PJG0MoI2KJDz/YmotfMQQKXVFuCKakkNd8pLPXeI4VCN0naW+x /iNfTfwCsG0mF/b+PRXKIVgPwOIXP2R8A0YuR5pZOdvcCyP33aCdAR9nLxTNhVRyoHlJ r1u5RqpAOzAL6Xr4M3WsNkr4ttI/+8Odo7i+tMiYfTUEJIJICc/iUq0qLvc6h47HmyPD 5YmL6QuzaefyVnpibhnDLpnygmVoLRzYl8OJjPdp/kavh0hgsNWNEnnPV54UiqMQIF+9 Q+PZymZ0/T3XAP7j2lMIfYyGy3kZyPTaBsk4GmJwc6NbEz9J8UofG5329VITsmGOHP3s In9A== X-Forwarded-Encrypted: i=1; AJvYcCXhik+7s1TQJJujlZWEgBVve6ulgjWR4zPHtzRhZVMLssc+k/mTBWusBGVj8j+9ADo5IB+xzULV5Q==@kvack.org X-Gm-Message-State: AOJu0YwYN1/Bh9G+s8qaz+MJjpzCFylgAd9dnPSvxPLiWRR+hdPudlb2 2Uz9ccF9zCZdzhBvwf/XakloXYhbJ9kIcWxibq+MMcX986fD+6n0VeUpD9BzHw== X-Gm-Gg: ASbGncsCrn1HubwZB9hcb3ErMLpczjnxfsLidKmuSkXUUIWT7pD7CqOAnDzn9SyGS/8 BslGAc8fBtFy1nCtBaKc4wQJrENQJMFo40RyhyNACH/atMJWz3oyhXqiMS+Azvsnj+BY9x2Asg8 lVy+BKxSm3+kJ/CetlTGfBw5UucTbVtg0d5Id6I+F+pK5kjsMS/gI58MYGVyL05jqmChMOhpFXu sadlAnTrIMN5CW3wYxgKU8X+M22zOKHxbZdpI1r2vaW0u0MFnRCScoCjE/MENhdrvvkjha2HTqk 3ugiGhlwuSPzYvyawfoeZbdvuD0CFHYrXMIcsxk3+iZlY4TkqkkZBpaK X-Google-Smtp-Source: AGHT+IHe6aWFkmZiHY5nT8j5aoB0QRlnyEc6aSnXFc+EinKV4FZp1IRJAIdkssVpYR5VErXOdJwaiQ== X-Received: by 2002:a17:902:e886:b0:235:e1d6:2ac0 with SMTP id d9443c01a7336-23dd1b589dcmr8614215ad.24.1751932020375; Mon, 07 Jul 2025 16:47:00 -0700 (PDT) Received: from localhost ([2a03:2880:ff:8::]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23c8455e720sm94844915ad.118.2025.07.07.16.47.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Jul 2025 16:47:00 -0700 (PDT) From: Joanne Koong To: miklos@szeredi.hu Cc: linux-fsdevel@vger.kernel.org, david@redhat.com, willy@infradead.org, linux-mm@kvack.org Subject: [PATCH v2 1/2] fuse: use default writeback accounting Date: Mon, 7 Jul 2025 16:46:05 -0700 Message-ID: <20250707234606.2300149-2-joannelkoong@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250707234606.2300149-1-joannelkoong@gmail.com> References: <20250707234606.2300149-1-joannelkoong@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: t9nam6p1zod4k1dk8iu45fa4gpipuujq X-Rspamd-Queue-Id: 8615316000B X-Rspamd-Server: rspam11 X-Rspam-User: X-HE-Tag: 1751932021-720891 X-HE-Meta: U2FsdGVkX1/gPypI+8V5OXLSTZEGuKCNx45DkIb48IAcfrN3FV/OzdfZSRauWquUjWBWwwh3Xqc0cEKBBnPb4XgLikvrk1GG2GfFrL1r5tbDa+FjwvocJCSVi3vzbAi+9arh6j4NQJ5+cOj6v5Q9LN96rHIJfXji8xRlwnHmJ00xDgGj34OGQeTbZSSeRLH2eVDKxUYUJuzGUgTVdFUEUPAHRdJIGM9y6knq8OZqnkatPpfDem/fIo65SrqvZBeodTbQUDgfZZ0CQAIAOdGgttZKL8GxB8YWUAXQNN4LihERgY8W3+w/bV+vcHH8V0k9D3rnS6SI8+0qT4TrXCRQzz/kuG5GQN2FV7Gyy7P5mOdrEO1cOnW5Wlu0JASYKfus3zi3HJ9nqMCuplUILXUrgkPxMbr8m8/BgGXNg5lBLLUFo5iE/38AlmnVbzC6TsxCyj36C5L18GPb1M7vxt98mvynYCGt8aBfXj15mPSDtnlEgPsWh7Bxtt8UNAF45pwKTIhXx7lDTLVR2oDjB6LESyfytqvpAiT5+J7AaSMvygSWbTElaCcQtu6C6BgY27SYD6HMJpBDqJZuAvoanHwKFeqVSLT6FsiiAhzb6c7ZxuCEIpczXmqvOoT6V+R+fNv1zv6LCi4EZ9WvpzuI0JV0JhKQHJ1uy4kw3Sr0fxaJNnMPs2kGlvBdj4cWk570ir1uk2EyXBziycbSXj7QOEjCHDxXyCr35+Q4erLQb8Abw+BInmNK1OB3wYvUhCqXqfyA1ydBp9vnW5FPSIcVNuKFR0Sqav21fg5PByts1AjBCz5+34QOvvRk0EX/UVBIO9xqvSH5Sf1Ka1nZGO5P/poTPFSD1lkrabJOVYg6b/01fVpc3NODwBdJtiTLUeUA5e21KsBfnVIzbwpxCrzwOeh/qFUXyZh3rcsHcTK3RpfWC+jEQdMOSP2wMjZYOy+MVxOJeBSbQxF6blnBUTiUC+d ifkuA2jY IIjmhiws+BY7FIJAVJzUwvvVhtvFJzMZc8LCILlo9Kr2vk6JOzelEphA2e0UVCdNna78PwHP8BogepL0IZDwfWh3zoz62ZY24RK6Jw9ts4wKtdK191XjBi3xtQ53iTlbh6c25jMe8d925rNc= 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: commit 0c58a97f919c ("fuse: remove tmp folio for writebacks and internal rb tree") removed temp folios for dirty page writeback. Consequently, fuse can now use the default writeback accounting. With switching fuse to use default writeback accounting, there are some added benefits. This updates wb->writeback_inodes tracking as well now and updates writeback throughput estimates after writeback completion. This commit also removes inc_wb_stat() and dec_wb_stat(). These have no callers anymore now that fuse does not call them. Signed-off-by: Joanne Koong --- fs/fuse/file.c | 9 +-------- fs/fuse/inode.c | 2 -- include/linux/backing-dev.h | 10 ---------- 3 files changed, 1 insertion(+), 20 deletions(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index adc4aa6810f5..e53331c851eb 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -1784,19 +1784,15 @@ static void fuse_writepage_finish(struct fuse_writepage_args *wpa) struct fuse_args_pages *ap = &wpa->ia.ap; struct inode *inode = wpa->inode; struct fuse_inode *fi = get_fuse_inode(inode); - struct backing_dev_info *bdi = inode_to_bdi(inode); int i; - for (i = 0; i < ap->num_folios; i++) { + for (i = 0; i < ap->num_folios; i++) /* * Benchmarks showed that ending writeback within the * scope of the fi->lock alleviates xarray lock * contention and noticeably improves performance. */ folio_end_writeback(ap->folios[i]); - dec_wb_stat(&bdi->wb, WB_WRITEBACK); - wb_writeout_inc(&bdi->wb); - } wake_up(&fi->page_waitq); } @@ -1982,14 +1978,11 @@ static void fuse_writepage_add_to_bucket(struct fuse_conn *fc, static void fuse_writepage_args_page_fill(struct fuse_writepage_args *wpa, struct folio *folio, uint32_t folio_index) { - struct inode *inode = folio->mapping->host; struct fuse_args_pages *ap = &wpa->ia.ap; ap->folios[folio_index] = folio; ap->descs[folio_index].offset = 0; ap->descs[folio_index].length = folio_size(folio); - - inc_wb_stat(&inode_to_bdi(inode)->wb, WB_WRITEBACK); } static struct fuse_writepage_args *fuse_writepage_args_setup(struct folio *folio, diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index bfe8d8af46f3..a6c064eb7d08 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -1557,8 +1557,6 @@ static int fuse_bdi_init(struct fuse_conn *fc, struct super_block *sb) if (err) return err; - /* fuse does it's own writeback accounting */ - sb->s_bdi->capabilities &= ~BDI_CAP_WRITEBACK_ACCT; sb->s_bdi->capabilities |= BDI_CAP_STRICTLIMIT; /* diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index e721148c95d0..9a1e895dd5df 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h @@ -66,16 +66,6 @@ static inline void wb_stat_mod(struct bdi_writeback *wb, percpu_counter_add_batch(&wb->stat[item], amount, WB_STAT_BATCH); } -static inline void inc_wb_stat(struct bdi_writeback *wb, enum wb_stat_item item) -{ - wb_stat_mod(wb, item, 1); -} - -static inline void dec_wb_stat(struct bdi_writeback *wb, enum wb_stat_item item) -{ - wb_stat_mod(wb, item, -1); -} - static inline s64 wb_stat(struct bdi_writeback *wb, enum wb_stat_item item) { return percpu_counter_read_positive(&wb->stat[item]); -- 2.47.1