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 DC062EB64DA for ; Thu, 29 Jun 2023 01:02:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 78D5C8D0003; Wed, 28 Jun 2023 21:02:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 73D288D0001; Wed, 28 Jun 2023 21:02:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 605D78D0003; Wed, 28 Jun 2023 21:02:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 4DF018D0001 for ; Wed, 28 Jun 2023 21:02:35 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 1E9A91402F3 for ; Thu, 29 Jun 2023 01:02:35 +0000 (UTC) X-FDA: 80953985070.09.8D97B1A Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by imf03.hostedemail.com (Postfix) with ESMTP id 3C4A620009 for ; Thu, 29 Jun 2023 01:02:32 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=fromorbit-com.20221208.gappssmtp.com header.s=20221208 header.b=J9tin5TA; dmarc=pass (policy=quarantine) header.from=fromorbit.com; spf=pass (imf03.hostedemail.com: domain of david@fromorbit.com designates 209.85.210.175 as permitted sender) smtp.mailfrom=david@fromorbit.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688000552; 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=c2Qe9k1wI4NImJPimcE18OoLTXPGy2kmsiDzrgzIU0o=; b=FOIFFfMdryfvXtdEjVLGCLV5Hy+AO6Ky7Y0bUfhLx0ljYVUcuOW9WkoSn7tEox1NVZl78X fDGqgzfbNNfSv22aGf/BSqkBhecoTZ5zVFB1sBOP/NHXAxHmIG50uJnoywxvbuqab5YU6/ 5IZJ6+Nub2wPqE8C2fsIO2LCqMP88Jc= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=fromorbit-com.20221208.gappssmtp.com header.s=20221208 header.b=J9tin5TA; dmarc=pass (policy=quarantine) header.from=fromorbit.com; spf=pass (imf03.hostedemail.com: domain of david@fromorbit.com designates 209.85.210.175 as permitted sender) smtp.mailfrom=david@fromorbit.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688000552; a=rsa-sha256; cv=none; b=SNoZlzCTQsghmIw9S7guSa4kJH74jxenhLTuElJeI9bszSK/8uPXjYNZN58PfVzYGkzwcu TZ24fWVGWKrsh4uF+7ARai0aHuC+NKFM1+5wzO535MRoEzlCEH6VvLF7IbEySDujGvM5vn 0BcmM8vdnCz85Z3yTkTg12r0R/unlLI= Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-668730696a4so111745b3a.1 for ; Wed, 28 Jun 2023 18:02:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fromorbit-com.20221208.gappssmtp.com; s=20221208; t=1688000551; x=1690592551; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=c2Qe9k1wI4NImJPimcE18OoLTXPGy2kmsiDzrgzIU0o=; b=J9tin5TAWI6Bgtay2dLaEy44IRQA3vhqvyU+2EoptZC8ahj7cwaWWPEuofaZoRdb1L Ln+kLqFTIG8TETXYx0275C8HLM7BNq+hiek1hmjXkjGlwk1Fh/awidoFpUP39JlhTfqI XMUtdCGTn6hGybZ2a9kRZufwbNW4VZXvenqxeA1a330V+3x/yz0MFolEvZqsQo4RGr3R hjaeFmuPbA6Qw5xVG9aJ4PJ9JX/aUzMO85m5YIG4wdRCsGLTjW+BBBsYKumeGXenujmF aNvbaniIn25eUCcm4CWktgsiwfzMd8gomlhIpN5WEvFXOzsPB3nDb8FfTPHTBjvI9Qld PvUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688000551; x=1690592551; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=c2Qe9k1wI4NImJPimcE18OoLTXPGy2kmsiDzrgzIU0o=; b=CsWw3In83/THTR8nCFj5cAbClqW2h+9KrcBBBSD+digvmeZZtInjkAnjS2P4iFCHm8 Ao3hUjY5YHn+GjWQMnTS5WU2mHhTSUQI6IA7U16vr33R+3GMjxjkT0r0RM/zDAy7HJDa 5G6+8kMiob/F8WIDw0TIc604XdaM7jkFibIFbD7K7M9PxUr3/6ynwutbTWYQqvZ4XRhm cCokZSCSmAlQKFYqctFUXg7Yylnn2wmLANgzZzbhtguv99SaR1gepdl6VBj0vmusWkoI PWBox61SD++NswQkLfQmRQi+mvIayMF8AFAqsYWMjwBg8BflzNj+GgAzAOPe1mGZSThf gTyg== X-Gm-Message-State: AC+VfDz7QSNrySMo3pkvyrHtxEQF7qeBzAIAiHTFpxTYGk2Tn9ugfd4g Xy/+55u5LKrIUbjW0JJAtFVU7g== X-Google-Smtp-Source: ACHHUZ6+/87qKROJEzGsaCEegkUINIJxHr91lwvVXGaDx8yj/qGTlZI7YYxGc8Bj+5xHIEvscdyZ9g== X-Received: by 2002:a05:6a00:3996:b0:67e:bf65:ae61 with SMTP id fi22-20020a056a00399600b0067ebf65ae61mr5430342pfb.28.1688000551024; Wed, 28 Jun 2023 18:02:31 -0700 (PDT) Received: from dread.disaster.area (pa49-186-94-37.pa.vic.optusnet.com.au. [49.186.94.37]) by smtp.gmail.com with ESMTPSA id d14-20020aa78e4e000000b0067acbc74977sm4282819pfr.96.2023.06.28.18.02.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jun 2023 18:02:30 -0700 (PDT) Received: from dave by dread.disaster.area with local (Exim 4.96) (envelope-from ) id 1qEg3I-00HRAH-0N; Thu, 29 Jun 2023 11:02:28 +1000 Date: Thu, 29 Jun 2023 11:02:28 +1000 From: Dave Chinner To: Matthew Wilcox Cc: Andrew Morton , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Jan Kara , Christoph Hellwig Subject: Re: [PATCH] writeback: Account the number of pages written back Message-ID: References: <20230628185548.981888-1-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 3C4A620009 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: okgk3cjh8gobyu4eso7bnr1rjthd9wwi X-HE-Tag: 1688000552-892118 X-HE-Meta: U2FsdGVkX1/zAt3ySJ9JWzZ6Op9wdvShAGzNTO6XdAPT82lH/stIOOBEqIIvQ6oRlYziq5vagp3hJ5b94ljJ8SQ/bwLGPOVsPYnC19jDjhKNWUFPgZf8z/vWi9Qx+4Tiu3hkWA39QdN5pasrfNn5BXGNiA12jQCxvlGi4RFsuHBFgh20ke/HcY9auX1mFlfcyyGcOA1InDeMaA6f1NxFwDrA6kP0g14WUfxkvMF5G6ib3PS7wqetszJyEIG/DdOyT9ZkhyVROd5ST0eX5QvhKcVnA1yt4nztGSux3CloEujemEWj1g1lpCXRMtmn05lwANTqnEX2xTFmZItm4+180QzAWzPnhuSpZ4dw73Q2tsjoPWUPwpxlZt9wtXhkikshnlo5kKr5Pesy+nEPZhD8o5VfxoQ2smyCui1Q62hXiVmmUb3GNZMo8cK0VCDMcIKS1a4NAiFLMC9wUlYdCLzsNJypOz23sKYlGFtdGj9KGMsnBg4NENlSlF03MIqbVt6Dq7TjJJIq+FNRqTNQKGgTtb32ebzUUG6zP6IqI147sWU37OvFBZkAC1LqoaCtyEXafWioV05n1s7BRIahPGFEG3okMooW5ZfM6XKUGncVRHscxgQtBPmNFFRYn6V9m9isIn1i4+wtLe3uOdqiP1Wjk5UjejtLnaa804aCAAJHJp0J4o1DHgUTs4I8XYmJJpodFbJwVw+KMeZ73Ibmi/djURaByY5tGCb+5p/C8GB198mLZLgrPfoM/XnIUR0YuGYf5zSh5vv3BtOHUHzhHDHMvhZYkXFETD88DFicEGEZXPojQbrNi+Kfjx0j7MENbmmg8pdlFreKNl1fpEbk61lXPg0Mqi/H9M71AYQ+yRgu8LdDxZgCPuRPF6CueQaoWdofsegVRg7SV39oMz54dKaQ1najBxH+d0PswIrv+jZufiypGDCW/oYGbXSOCSqRP7joMEYzClPgRvUwjFE9IRa iDQ3iJ6K JiFLd9b5jCBC8TdROzYW3Svm3ye5T/yxdxA8deHUNYCBAQBK+ADnGGDG8AAMrL+7z74YbRlbPi6+wVCHQXu0DS4eTAJGgL6aUQkOjtFQVsQUwK64kz1brA4XZDUXSYKXwDoZxJOLO6PCVF5/QubS2ndyacWjgmxfWBCJpvsoJn9si0hXqSSiJQWaH3GMjrwWCxTo/7mi2DbSB/VamNLvp1hwKbD73NbIv4s0xPxWYEcYLY2sLjt2ZkGaeVC2rUqyE/n5xvA+PMKioR+s86jhXfU4YHarYuxSHVItRmePyZfHks1eZY+7eAulGAQEmUZTZdGeGtwPpj2ksVxYB4pZGqN0IKVos7Fy6r0Sv3oVhGOuUzrisWhi1nziwxc7dQ5DiOTYqMSfci+X87HuSM9y3PeFhxvDjWjF4iTVfI2UlhhLgBGfjZ/7OLEX90jywZaHhPqLTZ76KNvajki29OysrJiBoq4XYWIbkngbxFgaxwrkJx1PI3Z6yESh3mQ75IbZtU1QS 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: On Thu, Jun 29, 2023 at 01:01:59AM +0100, Matthew Wilcox wrote: > On Thu, Jun 29, 2023 at 07:53:44AM +1000, Dave Chinner wrote: > > On Wed, Jun 28, 2023 at 07:55:48PM +0100, Matthew Wilcox (Oracle) wrote: > > > nr_to_write is a count of pages, so we need to decrease it by the number > > > of pages in the folio we just wrote, not by 1. Most callers specify > > > either LONG_MAX or 1, so are unaffected, but writeback_sb_inodes() > > > might end up writing 512x as many pages as it asked for. > > > > > > Fixes: 793917d997df ("mm/readahead: Add large folio readahead") > > > Signed-off-by: Matthew Wilcox (Oracle) > > > --- > > > mm/page-writeback.c | 8 +++++--- > > > 1 file changed, 5 insertions(+), 3 deletions(-) > > > > > > diff --git a/mm/page-writeback.c b/mm/page-writeback.c > > > index 1d17fb1ec863..d3f42009bb70 100644 > > > --- a/mm/page-writeback.c > > > +++ b/mm/page-writeback.c > > > @@ -2434,6 +2434,7 @@ int write_cache_pages(struct address_space *mapping, > > > > > > for (i = 0; i < nr_folios; i++) { > > > struct folio *folio = fbatch.folios[i]; > > > + unsigned long nr; > > > > > > done_index = folio->index; > > > > > > @@ -2471,6 +2472,7 @@ int write_cache_pages(struct address_space *mapping, > > > > > > trace_wbc_writepage(wbc, inode_to_bdi(mapping->host)); > > > error = writepage(folio, wbc, data); > > > + nr = folio_nr_pages(folio); > > > > This should really be done before writepage() is called, right? By > > the time the writepage() returns, the folio can be unlocked, the > > entire write completed and the folio partially invalidated which may > > try to split the folio... > > > > Even if this can't happen (folio refcount is elevated, right?), it > > makes much more sense to me to sample the size of the folio while it > > is obviously locked and not going to change... > > It can't change because of the refcount we hold (that's put in the call > to folio_batch_release()). I didn't want to call it before the call to > writepage() because that makes the compiler stick it on the stack instead > of a local variable. I don't care for micro-optimisations when the result is code that looks dodgy and suspect and requires lots of additional thinking about to determine that it is safe. > Also, when we transform this into an iterator (see > patches posted yesterday), we'd have to stash it away in the iterator. That's no big deal, either. -Dave. -- Dave Chinner david@fromorbit.com