Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp689986ybz; Fri, 1 May 2020 06:53:06 -0700 (PDT) X-Google-Smtp-Source: APiQypLYY4nCossQwifj349j+NrYzwDIM8tEXiTKgnB7OQG4Hrz7JzmkTwhFiC0AwdUw0RR71FyQ X-Received: by 2002:a17:906:6b1b:: with SMTP id q27mr3217542ejr.158.1588341185919; Fri, 01 May 2020 06:53:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588341185; cv=none; d=google.com; s=arc-20160816; b=RKhVF7ZqP+fYdwPUk3jiTTUDhiivWRzjpGps05f7Pbku0uKZisKsWCAx8A90yxe4mb gQBt5dcHrJ9EcRlwXYZNz+I/r9nlCEEF7Xc9fk6kpNYQ2n3dy7auh8Se4rXRd3pgZuM7 PtRL28VO9PZRThTwn3Ix+HbP1i3odDBKXQv+OKalFndJeH/5KRmL9NJJ5VvQo8/HdcVw RzgNaPC4Ygw7rhQQUoxak8ecSMMtTH++BaK0P27qK+hp0YpZrbB2p05BjqpzPTYBrvvj ewj8VExFDMJwOJLxJdhZdRNJu2BPac6UjJixsFnA2bVrx04xkUgHoSXUEMgsDf4FU4AV I8Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=VA1tBz+xpBAdWF1fzHuBVtBsr/BkhH+nmldMYEVAcKc=; b=jjbGU+pOwFt5RZ9QNl+bouAsbkKh/noKcihhMZO2O5GoXlWOU6sYv9twibrLbUsUCK rfp+joaLHU5DE67mv/nr1DqQ5Y9daRUv7jR5Kc6RIbM0HhrMr/+R1VDqbb8wOJKNp/zw ORYnjQ41t8itGyle43zSNbCh6MyFgByBmmZ6kgJTrpsiB/FHOY8rjuBAGEzwXexzRMcD 4a42U89/itfrRYdB2lSsQ2Pu0VcIbRJ1ymUrwmHwMRnXNZ4Te6xSMOOewJlcbdWwTu5L KE+sZl/fbE3hqRPcxWEPVMS8cExK+JO26HlmJxMWNsgW2MnpaVFnAbJxNF2gounZGU2b qiMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xsj576hE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a20si1784002ejj.269.2020.05.01.06.52.42; Fri, 01 May 2020 06:53:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xsj576hE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731340AbgEANuw (ORCPT + 99 others); Fri, 1 May 2020 09:50:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:39112 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731179AbgEANjY (ORCPT ); Fri, 1 May 2020 09:39:24 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 60158205C9; Fri, 1 May 2020 13:39:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588340363; bh=p262YZn7SlOJ9SdgjgOh7lUmTweP6tiBeMxeDpl8gu0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xsj576hEoQes6wKvS/cvdA9nuWhb5tyj684d8SuYn7oyd9f0qFCvaYcnIxr6l55jm 7MxcCkzEdqxMRp05howhJEL8JJSBmBtrO25Y2BIm4ZXq4R5VNH2wZyXmyaW4bqaxmG 96HzMJJskgPvxCJbOXEwl81s5XBtDo2Ipe2+FddI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Paul Furtado , Brian Foster , Chandan Rajendra , Christoph Hellwig , Allison Collins , "Darrick J. Wong" Subject: [PATCH 5.4 25/83] xfs: acquire superblock freeze protection on eofblocks scans Date: Fri, 1 May 2020 15:23:04 +0200 Message-Id: <20200501131530.318495482@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200501131524.004332640@linuxfoundation.org> References: <20200501131524.004332640@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Brian Foster commit 4b674b9ac852937af1f8c62f730c325fb6eadcdb upstream. The filesystem freeze sequence in XFS waits on any background eofblocks or cowblocks scans to complete before the filesystem is quiesced. At this point, the freezer has already stopped the transaction subsystem, however, which means a truncate or cowblock cancellation in progress is likely blocked in transaction allocation. This results in a deadlock between freeze and the associated scanner. Fix this problem by holding superblock write protection across calls into the block reapers. Since protection for background scans is acquired from the workqueue task context, trylock to avoid a similar deadlock between freeze and blocking on the write lock. Fixes: d6b636ebb1c9f ("xfs: halt auto-reclamation activities while rebuilding rmap") Reported-by: Paul Furtado Signed-off-by: Brian Foster Reviewed-by: Chandan Rajendra Reviewed-by: Christoph Hellwig Reviewed-by: Allison Collins Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong Signed-off-by: Greg Kroah-Hartman --- fs/xfs/xfs_icache.c | 10 ++++++++++ fs/xfs/xfs_ioctl.c | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -907,7 +907,12 @@ xfs_eofblocks_worker( { struct xfs_mount *mp = container_of(to_delayed_work(work), struct xfs_mount, m_eofblocks_work); + + if (!sb_start_write_trylock(mp->m_super)) + return; xfs_icache_free_eofblocks(mp, NULL); + sb_end_write(mp->m_super); + xfs_queue_eofblocks(mp); } @@ -934,7 +939,12 @@ xfs_cowblocks_worker( { struct xfs_mount *mp = container_of(to_delayed_work(work), struct xfs_mount, m_cowblocks_work); + + if (!sb_start_write_trylock(mp->m_super)) + return; xfs_icache_free_cowblocks(mp, NULL); + sb_end_write(mp->m_super); + xfs_queue_cowblocks(mp); } --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -2401,7 +2401,10 @@ xfs_file_ioctl( if (error) return error; - return xfs_icache_free_eofblocks(mp, &keofb); + sb_start_write(mp->m_super); + error = xfs_icache_free_eofblocks(mp, &keofb); + sb_end_write(mp->m_super); + return error; } default: