Received: by 10.223.176.5 with SMTP id f5csp853537wra; Tue, 6 Feb 2018 08:26:36 -0800 (PST) X-Google-Smtp-Source: AH8x2261nmnY8CMdMDXioXtC97tt5G4Z/CC69+FY6N7ysft78wW25BIr5eh0SuLKQBFTXMfww+Lk X-Received: by 2002:a17:902:3f83:: with SMTP id a3-v6mr2879314pld.263.1517934396013; Tue, 06 Feb 2018 08:26:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517934395; cv=none; d=google.com; s=arc-20160816; b=bjQsvsKQp1nbyIHswQpPFlWooXJblIvUYzjw/GmrMgsf4ygbvuCpEjak1nXH3TPqrf UHDxgfF/QRuY6g3vZ3kjmoo8VAHKiiqU4DWakcbJsrB5RmiokNFnZgHkc8I2mkORmrZ3 uivl8p2OO40blg6X9hjFNMydgyM7eCiRbUD7wJ4faECGSq0NwXleqfs2I68JyW74dnlJ znDazLrB0ThwMs+UJeHDH2kKMP2Lo86J/rcrA6D5Rr9RqPAKEd1pwbpk2TPBiGGUUzif M819f4cHf/E7yzrmkfkhjKSKf0f7qI0Cpoolqm9aobIFb6MO5OEfvKnVrIMRhTrjqSlC LGaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=YraFJ2wBc3WwQNKDDLAJwTMdr/Od0IpRgs8uxZc9H6k=; b=YVpZofIEvC43o9a7qhU/shKJB4Z1UdwvHuc00PYL0bxkWEAs2iB22VkwXZ8Rw78/Pj QcfeNTDhOvWW9om/nBX4UQukyhX3t4D9k+L0c6hpZTB8Pst49dJAxKLt+VgXfGcNVRW+ xMwOuPIN15m7s2UzAtIzerSh3SHJRQUN4TzAZvZrQsJnsVriNt1thv0i0n2RXG2INB7Y gkZtJ62CXJN1TQ4bDDjx4+VFT7nv4mbEJAZPpOI/9LLDmBxc2l+rwfVOl3ApKUROMtXb e6tNNs+zz1z9f913s+uTTdhcTT9t3VupRI7YmUI1TOp0KcABR+bOu8rQ3AH1sA2cYPNo cbew== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d13si3311702pfl.371.2018.02.06.08.26.22; Tue, 06 Feb 2018 08:26:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752676AbeBFQZa (ORCPT + 99 others); Tue, 6 Feb 2018 11:25:30 -0500 Received: from mx2.suse.de ([195.135.220.15]:37962 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752003AbeBFQZW (ORCPT ); Tue, 6 Feb 2018 11:25:22 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 2E13AAB02; Tue, 6 Feb 2018 16:25:21 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id 541C51E0A70; Tue, 6 Feb 2018 17:25:18 +0100 (CET) Date: Tue, 6 Feb 2018 17:25:18 +0100 From: Jan Kara To: Tejun Heo Cc: Jens Axboe , Miklos Szeredi , Joshua Miller , kernel-team@fb.com, Johannes Weiner , Jan Kara , stable@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 2/2] FUSE: fix congested state leak on aborted connections Message-ID: <20180206162518.tdoszuggqxpkrqvn@quack2.suse.cz> References: <20180202175328.GL1121507@devbig577.frc2.facebook.com> <20180202175414.GM1121507@devbig577.frc2.facebook.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180202175414.GM1121507@devbig577.frc2.facebook.com> User-Agent: NeoMutt/20170421 (1.8.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri 02-02-18 09:54:14, Tejun Heo wrote: > If a connection gets aborted while congested, FUSE can leave > nr_wb_congested[] stuck until reboot causing wait_iff_congested() to > wait spuriously which can lead to severe performance degradation. > > The leak is caused by gating congestion state clearing with > fc->connected test in request_end(). This was added way back in 2009 > by 26c3679101db ("fuse: destroy bdi on umount"). While the commit > description doesn't explain why the test was added, it most likely was > to avoid dereferencing bdi after it got destroyed. > > Since then, bdi lifetime rules have changed many times and now we're > always guaranteed to have access to the bdi while the superblock is > alive (fc->sb). > > Drop fc->connected conditional to avoid leaking congestion states. > > Signed-off-by: Tejun Heo > Reported-by: Joshua Miller > Cc: Johannes Weiner > Cc: Miklos Szeredi > Cc: Jan Kara > Cc: stable@vger.kernel.org Yeah, this should be fine AFAICT but my knowledge of FUSE is very cursory. Anyway: Acked-by: Jan Kara Honza > --- > fs/fuse/dev.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > --- a/fs/fuse/dev.c > +++ b/fs/fuse/dev.c > @@ -381,8 +381,7 @@ static void request_end(struct fuse_conn > if (!fc->blocked && waitqueue_active(&fc->blocked_waitq)) > wake_up(&fc->blocked_waitq); > > - if (fc->num_background == fc->congestion_threshold && > - fc->connected && fc->sb) { > + if (fc->num_background == fc->congestion_threshold && fc->sb) { > clear_bdi_congested(fc->sb->s_bdi, BLK_RW_SYNC); > clear_bdi_congested(fc->sb->s_bdi, BLK_RW_ASYNC); > } -- Jan Kara SUSE Labs, CR