Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp834540pxb; Tue, 3 Nov 2020 13:55:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJzCT1QcBXIOj5NcOe5knlfjnGHiLxs8+CR2ASbWU6ViMylJb1ThJUV8x+33Jf9x7BfPLgPC X-Received: by 2002:a17:906:4bc4:: with SMTP id x4mr21959235ejv.66.1604440503887; Tue, 03 Nov 2020 13:55:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604440503; cv=none; d=google.com; s=arc-20160816; b=bmc8dJCuLyyRzWfgU1uwxLFpMqAuPbyAU7dl7rc33vLcGASkMoL4w/ovD9uxKzmMYb cGZtBpXn+gtahPVfMniRi1p288jErDka5K08Ddi1N9QMpVsqEnJ+MWES3sqAZvDRxDYZ xccI7aISYQ+HXFrFZ/C5kJDmbVTRkpQKYLfNbOAXLI/lVgfV/WxI1lojgyUdr0sbEoq4 5WQb3jsMZB9CLQy9WFbFH078Ivn12DxdnbZEYJHhMb/nFqylWhgb9PWzfKuRMEbD7Vnf hbsvc56gv9cREk+iFc8S6wBLxXmW/NGsVrcAAicyGlQnwVanVmXgJ+LL6I83PEHdKCWc Kfew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=4dX8Wap9+yA0gulpYy31yX9Avn62SS4ofu327UgNBR8=; b=x8BZLe8AtR+gBzJcSW+MeVekAAbL8ClyGSw8SVGlosK9BSrxTVcsubXiOVm0LHNJM+ ib2kLntIw7DtuaVv+OZpCNpRPtZRxzNEqopPvXzSBoc/YIVMoN41yVm+ioO+4301YBrX fSl2e+AeABE0+Jj9DPK1Nm4hRwPWoTSEJMLNf1ZlEWKA54j2bHGdjTFPEgaCDK3drdbQ lTjK8Pc12fPLohr+aM35EvxGCtFROoOnLM+sEOBeaJoucpMUSWRU3HA5rZP2jfQskmPr Ni8h0hpA8lAgsBHmSrlm3+5UovqdwagTG8KKYpZSM+LyCprGstdxvsOqg5Qz2CPDGTqJ 2kXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ioJ3UXmN; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id me9si108564ejb.199.2020.11.03.13.54.40; Tue, 03 Nov 2020 13:55:03 -0800 (PST) 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=ioJ3UXmN; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731262AbgKCUqz (ORCPT + 99 others); Tue, 3 Nov 2020 15:46:55 -0500 Received: from mail.kernel.org ([198.145.29.99]:36616 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729561AbgKCUqv (ORCPT ); Tue, 3 Nov 2020 15:46:51 -0500 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (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 DDF1E20719; Tue, 3 Nov 2020 20:46:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604436410; bh=V1ebKRZILqhuVkapQZVuUtsopgzgh0nAYU7+1qLih9I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ioJ3UXmNo32o5KX9nlONgk7X1Gka0KzOMa/ey7zXUFD8avLiMBnPJdg2/i4hKdB/5 iot+8vfchFhBeivvLc92/GfnFg2EM4MTafjVVMY8GF8wgwQ69ZyRXeRkYeLuz4ftBg War+6tgTsiRzlHJzbpo9g0lGRFUc9bTYirQPJVCE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Josef Bacik , Qu Wenruo , David Sterba Subject: [PATCH 5.9 221/391] btrfs: qgroup: fix wrong qgroup metadata reserve for delayed inode Date: Tue, 3 Nov 2020 21:34:32 +0100 Message-Id: <20201103203401.856850027@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201103203348.153465465@linuxfoundation.org> References: <20201103203348.153465465@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Qu Wenruo commit b4c5d8fdfff3e2b6c4fa4a5043e8946dff500f8c upstream. For delayed inode facility, qgroup metadata is reserved for it, and later freed. However we're freeing more bytes than we reserved. In btrfs_delayed_inode_reserve_metadata(): num_bytes = btrfs_calc_metadata_size(fs_info, 1); ... ret = btrfs_qgroup_reserve_meta_prealloc(root, fs_info->nodesize, true); ... if (!ret) { node->bytes_reserved = num_bytes; But in btrfs_delayed_inode_release_metadata(): if (qgroup_free) btrfs_qgroup_free_meta_prealloc(node->root, node->bytes_reserved); else btrfs_qgroup_convert_reserved_meta(node->root, node->bytes_reserved); This means, we're always releasing more qgroup metadata rsv than we have reserved. This won't trigger selftest warning, as btrfs qgroup metadata rsv has extra protection against cases like quota enabled half-way. But we still need to fix this problem any way. This patch will use the same num_bytes for qgroup metadata rsv so we could handle it correctly. Fixes: f218ea6c4792 ("btrfs: delayed-inode: Remove wrong qgroup meta reservation calls") CC: stable@vger.kernel.org # 4.19+ Reviewed-by: Josef Bacik Signed-off-by: Qu Wenruo Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/delayed-inode.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -627,8 +627,7 @@ static int btrfs_delayed_inode_reserve_m */ if (!src_rsv || (!trans->bytes_reserved && src_rsv->type != BTRFS_BLOCK_RSV_DELALLOC)) { - ret = btrfs_qgroup_reserve_meta_prealloc(root, - fs_info->nodesize, true); + ret = btrfs_qgroup_reserve_meta_prealloc(root, num_bytes, true); if (ret < 0) return ret; ret = btrfs_block_rsv_add(root, dst_rsv, num_bytes,