Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp757322pxp; Fri, 11 Mar 2022 14:19:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJxNz7hXJl8Zbe+78kiVhIJf0sXmZ1NvbnXuA0vayqaeRdGJitvQbzWlvhUvp+qAqWntYILr X-Received: by 2002:a17:90a:1d04:b0:1bc:98ca:5e6f with SMTP id c4-20020a17090a1d0400b001bc98ca5e6fmr24175944pjd.32.1647037152599; Fri, 11 Mar 2022 14:19:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1647037152; cv=none; d=google.com; s=arc-20160816; b=k3JZfoPg/D0hG8RDjNfo1jzr+KB0vitKLzbtrtaUBX22+YqP4+TLVMnDc0dabQmgkj AVYUptezJ4nUkiWASDcwd4b+a1DG2ZnE4com+/Ym0AgPe3JmgrJwEN0hcz5Bv5oxPCck A9eUJTytTdcrOUGvFgnW7g60CfPn2PyjrTz5OJ9lDxlOvdRBX4enUetPteBHolSyqd1b rKhx5W55MyZ4we7cWFxlZICJSAY/SVRLdID/PF7wG8INZxWkEGZ6a1yh+M7J/+ShgVer E6VZfa37f4zSZJNGpI+kBHdPoEQdDIH0YbiIsdq1ifKxPk8cR20DD36wlv2hS4MLHccb Xugg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version; bh=Q0QOdS1sMxvUzRYvahLqWBcTBPRVF3/VPDGumtpDOcQ=; b=HLHKaLj4Dx5efjXH2UTIVRKfpOSg0ZNrNQWYbGDSzwdLZpE8REBQkDfvR5JHcnuyRT Q5FJMJ2BljYC2URGK860cQSCtdLdl9MpyUyYx4QpPlsukX7oAkwQ/4OBPL+C38ASchvs fP4zgdTfF4YdHUUbYvzzPSPwI3hhvl/reR270WPNmLJbt63gHX93Rguo8D90IIlsrhnk NfV2oUiKMedPhEQghBQzTkkattSNA9wQxhVZ3hLmur3M80TUhtp8HHa+9s74Ww0cmq+m o2NqO2NUTsNjWphIsMCbt3xPNl+dDSJ33h09wFY1tuM7+gVnN4dS5RmmlVYv4Y756dfb iyuA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=auristor.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id h2-20020a170902b94200b0015161c0ea2esi8723287pls.164.2022.03.11.14.19.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Mar 2022 14:19:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=auristor.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1849A3244FA; Fri, 11 Mar 2022 13:29:27 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346004AbiCKPyv (ORCPT + 99 others); Fri, 11 Mar 2022 10:54:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350261AbiCKPxv (ORCPT ); Fri, 11 Mar 2022 10:53:51 -0500 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 154DB1CD7E9; Fri, 11 Mar 2022 07:51:47 -0800 (PST) Received: by mail-ej1-f49.google.com with SMTP id r13so20007249ejd.5; Fri, 11 Mar 2022 07:51:47 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Q0QOdS1sMxvUzRYvahLqWBcTBPRVF3/VPDGumtpDOcQ=; b=BDheWuGFye9IiR1KGHqUTwkqweTfiCTEYX/DNvA+2sqyJFtsSb1vKBStMbIurshjIP 5/D9BN5e8igaKU9esTafkMqZzhydhRFEqcX9uufk8qdM5F2CVG+VA2xrrbS0huG9cnHM SnA1iCB4PNAuKJnuJR8ppvklin1nK9iSS4u44ZZb48ptQW5+4ROcGxgQpSQSkfGqyVhs UfAC20/7xqUBUmisJEP3Xtkkrc2egZJC3UyJC+Wbw8/CsZPj1SunB+yyi/15ijwKfq/D YIjrUW7Tnia3e2FuXQkCh2OPlB80piCIG+h+JinWldmAeot31tISu/EFd5kzZfx3uGuA 8/sg== X-Gm-Message-State: AOAM530i8amohfbzPcUEM8B1TT/v1hIF0FZMpQ1tvad9xnpHC3Ojh1pp INHfiIyZtWSl0qxNhRiDT78q6+gehvnF1A== X-Received: by 2002:a17:907:6d14:b0:6d9:565a:ed0 with SMTP id sa20-20020a1709076d1400b006d9565a0ed0mr9074772ejc.331.1647013891268; Fri, 11 Mar 2022 07:51:31 -0800 (PST) Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com. [209.85.128.43]) by smtp.gmail.com with ESMTPSA id n3-20020a1709061d0300b006da94efcc7esm3039654ejh.204.2022.03.11.07.51.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 11 Mar 2022 07:51:30 -0800 (PST) Received: by mail-wm1-f43.google.com with SMTP id q20so5363378wmq.1; Fri, 11 Mar 2022 07:51:30 -0800 (PST) X-Received: by 2002:a05:600c:2250:b0:383:bab2:9df5 with SMTP id a16-20020a05600c225000b00383bab29df5mr8274340wmm.162.1647013890307; Fri, 11 Mar 2022 07:51:30 -0800 (PST) MIME-Version: 1.0 References: <164692725757.2097000.2060513769492301854.stgit@warthog.procyon.org.uk> In-Reply-To: <164692725757.2097000.2060513769492301854.stgit@warthog.procyon.org.uk> From: Marc Dionne Date: Fri, 11 Mar 2022 11:51:16 -0400 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] afs: Fix potential thrashing in afs writeback To: David Howells Cc: linux-afs@lists.infradead.org, linux-fsdevel@vger.kernel.org, Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 10, 2022 at 11:47 AM David Howells wrote: > > In afs_writepages_region(), if the dirty page we find is undergoing > writeback or write to cache, but the sync_mode is WB_SYNC_NONE, we go round > the loop trying the same page again and again with no pausing or waiting > unless and until another thread manages to clear the writeback and fscache > flags. > > Fix this with three measures: > > (1) Advance the start to after the page we found. > > (2) Break out of the loop and return if rescheduling is requested. > > (3) Arbitrarily give up after a maximum of 5 skips. > > Fixes: 31143d5d515e ("AFS: implement basic file write support") > Reported-by: Marc Dionne > Signed-off-by: David Howells > --- > > fs/afs/write.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/fs/afs/write.c b/fs/afs/write.c > index 85c9056ba9fb..bd0201f4939a 100644 > --- a/fs/afs/write.c > +++ b/fs/afs/write.c > @@ -701,7 +701,7 @@ static int afs_writepages_region(struct address_space *mapping, > struct folio *folio; > struct page *head_page; > ssize_t ret; > - int n; > + int n, skips = 0; > > _enter("%llx,%llx,", start, end); > > @@ -752,8 +752,15 @@ static int afs_writepages_region(struct address_space *mapping, > #ifdef CONFIG_AFS_FSCACHE > folio_wait_fscache(folio); > #endif > + } else { > + start += folio_size(folio); > } > folio_put(folio); > + if (wbc->sync_mode == WB_SYNC_NONE) { > + if (skips >= 5 || need_resched()) > + break; > + skips++; > + } > continue; > } Looks good in testing, the problem would show up in xfstests generic/285. Tested-by: Marc Dionne Acked-by: Marc Dionne Marc