Received: by 10.223.176.5 with SMTP id f5csp847928wra; Tue, 6 Feb 2018 08:21:07 -0800 (PST) X-Google-Smtp-Source: AH8x226tvmbx0I9oQB4Ao7+8DUngtbKyOZRN988LMzXLjiYqB2hE5aLZCM+y1PoSwddpzRQHNq7l X-Received: by 2002:a17:902:7841:: with SMTP id e1-v6mr2938927pln.130.1517934067657; Tue, 06 Feb 2018 08:21:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517934067; cv=none; d=google.com; s=arc-20160816; b=s8blgJlN9IQ9M+ERo88A2JkAJy+J9pWL1dm3+DnhNoHs3OLpUVmyS4P6skkIab3WVM gfMPDvEsJkDZnm2HrN80bxqmDkV4NMTcEeRTSVOckQPhaqqMNXl1BmRSH+Wy46nRMR7q ugm4k+i/WtVmLuDhz25+qmyJc9OZ0lyNZDdcEs74+etSoyIaGAYM6mmvUDsh6apvVTdw 9fDYuolA6iUSIRwTM7XEoiOMy92ZzliV1DIsQreirno34WlcyPgvA5IWp2R6vLAb3lCo alIHMHz3DrKFpCGihwQlCPOmYSCDTggs6VgfM1+ClVe3cQiQf8al7z4vIoT4/H4IMO7Q VboQ== 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=CDGH8WWRws13dniAUg9jkKjYHns6igTxLPcmwnXOCig=; b=u/4AtCvwwPFCRbSp7QQnDF8x3A79FvP4lBPS0D+0Y/R5IeJ9qXmsBQQMTK+kMW6gbP Iki1qWr5q8n9Ac9AT08oKrgVQuBGPiJWzltJo5wQV1a3DFmfejniDmdJ2cltv4HmWcSB PPsMCUaZxneRykNapQhPhNt3Z40rfRfiXuoOUCZ6deQiRbWHs56ZYTCSwcr4GsY5yNw7 L8r39PGGS5CXQYn2mUvwJ35VV0jRVuG4/PkbGa5zIW8LIXDkHapC1AMhFuRgdRc3olLg D2KYBRipTySMdMFIeCVc2SfVM/y8hsODwV0VFFJtHRvUu8tT+iGpAA+vG72Hmub+6cSe zPyQ== 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 y4si3749734pgp.800.2018.02.06.08.20.52; Tue, 06 Feb 2018 08:21:07 -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 S1752724AbeBFQTg (ORCPT + 99 others); Tue, 6 Feb 2018 11:19:36 -0500 Received: from mx2.suse.de ([195.135.220.15]:37521 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752621AbeBFQTR (ORCPT ); Tue, 6 Feb 2018 11:19:17 -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 8D3FBAB02; Tue, 6 Feb 2018 16:19:15 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id E0C5F1E0A70; Tue, 6 Feb 2018 17:19:14 +0100 (CET) Date: Tue, 6 Feb 2018 17:19:14 +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 1/2] bdi: make sure congestion states are clear on free Message-ID: <20180206161914.gi7xctcgkhh7v6iq@quack2.suse.cz> References: <20180202175328.GL1121507@devbig577.frc2.facebook.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180202175328.GL1121507@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:53:28, Tejun Heo wrote: > FUSE has a bug where it fails to clear congestion states if a > connection gets aborted while congested, which can leave > nr_wb_congested[] stuck until reboot causing wait_iff_congested() to > wait spuriously. > > While the bdi owner, FUSE, is primarily responsible for clearing > congestion states before destroying bdi_writebacks, bdi layer can > ensure that congestion states are not leaked beyond bdi_writeback > lifecycle. > > Signed-off-by: Tejun Heo > Reported-by: Joshua Miller > Cc: Johannes Weiner > Cc: Jan Kara > Cc: stable@vger.kernel.org Looks good. You can add: Reviewed-by: Jan Kara Honza > --- > include/linux/backing-dev.h | 14 +++++++++++++- > mm/backing-dev.c | 2 +- > 2 files changed, 14 insertions(+), 2 deletions(-) > > --- a/include/linux/backing-dev.h > +++ b/include/linux/backing-dev.h > @@ -220,6 +220,18 @@ static inline int bdi_sched_wait(void *w > return 0; > } > > +static inline void __wb_congested_free(struct bdi_writeback_congested *congested) > +{ > + /* > + * Make sure congestion states are cleared before freeing to avoid > + * nr_wb_congested() corruption which can lead to misbehaving > + * wait_iff_congested(). > + */ > + clear_wb_congested(congested, BLK_RW_SYNC); > + clear_wb_congested(congested, BLK_RW_ASYNC); > + kfree(congested); > +} > + > #ifdef CONFIG_CGROUP_WRITEBACK > > struct bdi_writeback_congested * > @@ -409,7 +421,7 @@ wb_congested_get_create(struct backing_d > static inline void wb_congested_put(struct bdi_writeback_congested *congested) > { > if (atomic_dec_and_test(&congested->refcnt)) > - kfree(congested); > + __wb_congested_free(congested); > } > > static inline struct bdi_writeback *wb_find_current(struct backing_dev_info *bdi) > --- a/mm/backing-dev.c > +++ b/mm/backing-dev.c > @@ -509,7 +509,7 @@ void wb_congested_put(struct bdi_writeba > } > > spin_unlock_irqrestore(&cgwb_lock, flags); > - kfree(congested); > + __wb_congested_free(congested); > } > > static void cgwb_release_workfn(struct work_struct *work) -- Jan Kara SUSE Labs, CR