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 41C5EC83F03 for ; Thu, 3 Jul 2025 16:47:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A596F6B01F6; Thu, 3 Jul 2025 12:47:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A2F936B01F7; Thu, 3 Jul 2025 12:47:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9456E6B01F8; Thu, 3 Jul 2025 12:47:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 80DBF6B01F6 for ; Thu, 3 Jul 2025 12:47:22 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 074AC1D4805 for ; Thu, 3 Jul 2025 16:47:22 +0000 (UTC) X-FDA: 83623533924.11.1BF4103 Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.175]) by imf02.hostedemail.com (Postfix) with ESMTP id 3DD3D80004 for ; Thu, 3 Jul 2025 16:47:20 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UBdOwS0R; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.215.175 as permitted sender) smtp.mailfrom=joannelkoong@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751561240; 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:references:dkim-signature; bh=2KUF9W1aMfxOl49LI4mdnr5jcMJGDfiWEvrCB2aqcB8=; b=oN7OoUJ8RhQ5Kcz1v/qLnLlOthmajrn5L6/scKXHguOQeAzByJNzchOA9xkNN9w1tC/QMU AiDIwhSQKTYNHq901IcPjBWhzfTL2qAWVLcQYEMihVLJRI4z1TUQjBYHyf8asogU9d9fud JlWDuQGNQ8JXIUgf2yyYYaCCynHn3UU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751561240; a=rsa-sha256; cv=none; b=7VtwI8VkE2XbNXoQ41lGHyhHvvzK8WcryC0J88jKLlTQKL/v5L8rQIWWhplU7WGBV20fM6 Zw3rrPNf/ODU56Fzd8te2iDEEh0F8wCd1TAR5dVju3c4C9oBjzpCmQDuO8uI1ZAOXG31vH dT/repdN+kmgsb9d8MOXR8DnFL9PvDY= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UBdOwS0R; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of joannelkoong@gmail.com designates 209.85.215.175 as permitted sender) smtp.mailfrom=joannelkoong@gmail.com Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-b0b2d0b2843so75602a12.2 for ; Thu, 03 Jul 2025 09:47:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751561239; x=1752166039; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=2KUF9W1aMfxOl49LI4mdnr5jcMJGDfiWEvrCB2aqcB8=; b=UBdOwS0RLF+tKiMRBTA4Nol2fM1SSp+rTvq56ou6yo8RnNHQOWXCrxcPoMMTwniV8X 6qcs+OJTj4/hti/thmTQ87OuBJqMRkHcI2tdTaJM4jZElmAHE4LFHvz4NVugk+4b+QCJ xkLW5WbTQb0RArzZbpzgrfw/oJh5GAdYllU/CH/o7osb3bB0bhxsusrNoHNz+RUgTjZf Z+3m8Wre3TCOeFjsba9FKBgggt2jIgSSXPGNK80iFUDpJAgu5sTrr1yRoYJ/N4Iid42J uyAoSJCpsDOkw2Uuz+aHw7ICPxor8PBtURjymvhPrWC+XOrBs/OwlYXL6bVtKPuJrBNF mTcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751561239; x=1752166039; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=2KUF9W1aMfxOl49LI4mdnr5jcMJGDfiWEvrCB2aqcB8=; b=SsxaGS21DOxhteWJVR5Lpmn7ixW8W7bn6oHFu8hIRtqWaxCBDxxw6Bjev3b/YODrYg aFLFVs0gdUBKaT2V544O9ifFmVI9jm9uFtHsITM8PB6XTER9zbCWrKQo/WS/Rkd+59uO M8ALw1q8tpSd/ILlthvqnMrXzYgp+QfPoBfm+aytVCIe3eyHRgp3JCgAWbCw2HizODku rG8iphjzGGz99kp6+idkL9Gxqpwh1oJP8fcBq7ZeAQjcQgwENqw8oG6JHgIyld7UjGpb 5x7BOsNy4TPj3+lGH+2ArO1ZGk4aCphOjZqze2B2Aaz3XilL6KF4lcCjMJAbxtDOPxY3 HHKg== X-Forwarded-Encrypted: i=1; AJvYcCWC4iVfrKUSCjV1qKJSNuEoYeV0J1PUOBKn8A6McILSaNnK5R2ALSt6XlDkloMs0WKOIw4+jxo+aw==@kvack.org X-Gm-Message-State: AOJu0YxfbRej7piDlp033LO1FOZtLBGVr8PHklTQ9cP6HAZvd7WS9RCO j6N50fj09KScVu94POoZFBL0c7o7hJVxnQN72BuZyPVA8zdAxSvh1sS7 X-Gm-Gg: ASbGncu/cuTeoyjD1rYyjBH5wdRA3aNAtYKywqtCwfLd/aXX5bC1qvCGg9hySvG7tDC aH+/6/mkWfTwOlxJlQS5YFeTDO3Zk2VkU7xRUyiwtlzJ/bgUFjYTBIkst7KbBgX3yTdBZBNrEDU nAgqJhBZItmey0sMY34MhJb185a3PgX4vvkOtzHfOMUg22yXfRro+yqfgjkGEwENb3gkzqL4kIH 3RrzkZ5XQz1oV88zXVrRv4Qw+VibK2jyzlc/fFHL3uhcZNCYV1Tq4STj9lGn1azTzD8LGX/idk9 x8nSRXJEYB11tficunZrS9dJNncYi/uQvUs2TqRCjCKoNQdRELsWIgHA2A== X-Google-Smtp-Source: AGHT+IEMnV2oUSHrfRLVZzjJoW2h/2zbww2c2SuiLfs7Gloqz1DwNceB43b8y/fW/e+NuAdovgfXmA== X-Received: by 2002:a05:6a20:7344:b0:220:eef:e8f0 with SMTP id adf61e73a8af0-2243e6a73e4mr5395561637.23.1751561238877; Thu, 03 Jul 2025 09:47:18 -0700 (PDT) Received: from localhost ([2a03:2880:ff:48::]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b38ee5fb022sm80861a12.49.2025.07.03.09.47.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Jul 2025 09:47:18 -0700 (PDT) From: Joanne Koong To: miklos@szeredi.hu Cc: linux-fsdevel@vger.kernel.org, willy@infradead.org, linux-mm@kvack.org Subject: [PATCH v1 1/2] fuse: use default writeback accounting Date: Thu, 3 Jul 2025 09:45:55 -0700 Message-ID: <20250703164556.1576674-1-joannelkoong@gmail.com> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: bxs7yricf44fgpj58kpy3qxcigtz5ydq X-Rspamd-Queue-Id: 3DD3D80004 X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1751561240-446166 X-HE-Meta: U2FsdGVkX18ASlO4ihDjiYTOCH3KYw4tROknjkozdZgZFJUm/KAIa0Ycu00zuR/E9AZjMgaT5ZuizfuchuBJZu8vaX2NLtTjlciLpPrqj96RxXa79bYLAT9b9QwgWTmjICXVfVxmYRnS9N8ohUO57g8p9XwgwhjqF1kVCG9Ju8+HafZwr5UU2pcuFDeLPjrcpAunMRaVgsrAMnr0SKukMqEfWeA3GskzH/NksqUTAyltT++B44qFkT+xolqdV3FwnVe6tkELNeP+k/b4jCuk4nGOvUI5opD3tK+ZQW13rfmzuk6ZAyLyg/AC5axH3rJ0vXukKB+FwpMxQMixBGvrJSgn3tWmN7JR0OWAeQb3OW0cBA7tTLONN6j1a4kMc1nzu/e9Vjc5N6Z74yg/wuqMx1W5t269fgZX1CGPUxm5k37PjmIVIpeFiEUwvBLNuDAM6YctoNZ5h7YXAV57/6qeSOEE7DWvlY72L4cnDIeSy3AyVBGJbA9VgOv/tcSuPooEwYScIXcGjcdDmoAgw5IpIa3XvXiEzYndMCrdcuxNmd07hdpkaXZzo1VhV2Y0eHF+/+bmNHEL7zPL+DRJZYxytMbWVM5m90aEUvpMgHOeogCC7UOtNz937P22XMaEAiKj50pIbrEIQZ6yNg0x7Gtp0bhKylcAlGtZEF1jbIYlOhmIS0UYSJJoSrxrglt1NzdqWlTpB3UxW+gwJdYe+pJ25MQE7ZIHPzIuwJc397M6jg48d/xNsj+Nm8yOisGgEmlnWRkEmb/WE6aPH841gDph7ESZqYOLPF2KZHkAbR+f6bmlJxdbuFB/SbmMbE8F2C55Gqlx5IlNHIhGxNAQKO17xnN8uK7z02N95FQQOJprseyRzVI8ZwgGraE7OF/G5OVVUzrJ+UFdjvf5JgfOvPIn2Lj/LdQj0vHNWg4G+PRFxkcbOjDpcYixADcK8s9oNiDy9sjrLVABt2Rb7dcoe54 IEBif0tP AvuIMLD05yTVbBvZODSw8NaVDO52kbQ9V1yQsMhjoWWuWOrj90E4cu1hUHb10LqMNgiP1RnBAG6bxvlhsoYWZt1hhA/svEM9ipjxtIfocqkBeqS08eMhM3UT1SQARB9gqt0MJXZ6cQqE706Ms2tzMERyU0BCHPddMFQSgWnPXpiVjLXzqp2MmGVS9TaawoxfU7rtWiblPtx8kaulO9lBdvMJLU8VIaZRU9spjWiDS6jGWxegEvBGjzYujN7U8GlAJ3n89OPn0ttCH9tyDzzw547wEPDnup6yLVdJ78zN57J+HvGTsEMhXSeRNR2UvQTrvhO/9ZnJcgztUslns1WJ4IwSNlSY573Vz6Z1AJsjXrsCEIyOMITCUYVfRXYT+T9EaIfNlVXNiTzmBlWozHLvDmHIPLCD/XqZYe5REHCLMyPCNOHfJIaXQYYGRP8YIC07cPYN6a18m0K1P4cCSqPaeQLsI9E/cpXs5CcBiOIuRqFphUqEvFBLc0EaJ+Q== 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 | 7 +------ fs/fuse/inode.c | 2 -- include/linux/backing-dev.h | 10 ---------- 3 files changed, 1 insertion(+), 18 deletions(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index adc4aa6810f5..8b1902d3b52f 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -1787,16 +1787,13 @@ static void fuse_writepage_finish(struct fuse_writepage_args *wpa) 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); } @@ -1988,8 +1985,6 @@ static void fuse_writepage_args_page_fill(struct fuse_writepage_args *wpa, struc 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