Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3014041imu; Mon, 19 Nov 2018 09:21:53 -0800 (PST) X-Google-Smtp-Source: AJdET5cgZtf0fIGCBDRISpPQe/HGxKF0UbCuyZFqN0S+zZTVPwVy40URwdlCZPqttUrXQFHpRn8V X-Received: by 2002:a17:902:6113:: with SMTP id t19mr22576544plj.248.1542648113345; Mon, 19 Nov 2018 09:21:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542648113; cv=none; d=google.com; s=arc-20160816; b=CfVZ6WWBaL+Qjsx2PK1W5a2pX7bGDsqPzi8dvOEDKESQXpntitYNO/a85k4v0Fvwm4 hZrRKAKQrNp8Z8BEtv8QhCdlRF2v8aOdtqs06m1k9r+6mA+bGpphUreI6EB0bRcvM/31 SjOmBHvuNUh7j+uQ6ch03j7wCiu9NcdnHguwBKOxspnXdvN21JID7EB2PbNUyHHWKqUg xvzpVynrGjIFtCsas+XqY8A+qyU0AuhfWb0YCrM1vg2XfkvnynXHeI17UjQfV1QDJbS+ WnVTL2kYj+oFyUTzyT+JviL19saKJSQVkFY9zxdXvVp2lxnJAn3+H8w/7OqjNotpswQI g3nw== 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=3GF5uJ9KP+iHxvILm0DwOnrnUFQXd1mJg/zpFRy9wVU=; b=uIK/pnlAfIg794zV5SVYeqGRHT5b7iSBvsaAMYT+P8+lKWPraD47xX3Xwhpj0Oduf2 lb05pzJBC+iRk5v6zmWpON6bXtAcuph39dHIjQ4Hp0ybMzOOVYHulfEWs8LLDgjDNlTP fegoXOTfhf4G2LlJuwzzSQucZ/+zT6O4OMnxxp0lJ2qxVPPnCO2rJCSh89RT0e81J2ce zVz8BUNDwlYqIky/sdxIvKMQ5w7V4Gd0k6mArZahYgJ4j2AtMR1EhrFRHSPjCl3h4oJj wUj1DLR59pP3yG/+2sQse/If51HQZ46qVGR+zwnv+rMPVvYIm+LOk7fGyXTg0Fh22C6C NGlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="LP+n/uXl"; 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 k23si4160846pll.241.2018.11.19.09.21.38; Mon, 19 Nov 2018 09:21:53 -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; dkim=pass header.i=@kernel.org header.s=default header.b="LP+n/uXl"; 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 S2405204AbeKTDYK (ORCPT + 99 others); Mon, 19 Nov 2018 22:24:10 -0500 Received: from mail.kernel.org ([198.145.29.99]:36376 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404390AbeKTDYJ (ORCPT ); Mon, 19 Nov 2018 22:24:09 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.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 8D31F215EA; Mon, 19 Nov 2018 16:59:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542646793; bh=CuI2TlyF4iFg5uzMeGuehEqFaOerVCMk+M8jbHiJlqA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LP+n/uXlMuGh+sbWw/ZNvoykSqnuJFAfxeKV2zX6Kw2PYgsrepOfSxo8Tmi5kTLXD ixM3bO9j+IgUtuv7iuQ5if3nMKu4MMuUWKW/8oa/4zv1vpVzAMQc6Baw8Y+GnSqqyh UaOzPwW6H4vbm8d8oL2kg/d9MC+hCV5YhcjFm2fA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Misono Tomohiro , Qu Wenruo , David Sterba Subject: [PATCH 4.4 092/160] btrfs: qgroup: Dirty all qgroups before rescan Date: Mon, 19 Nov 2018 17:28:51 +0100 Message-Id: <20181119162640.126151253@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181119162630.031306128@linuxfoundation.org> References: <20181119162630.031306128@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Qu Wenruo commit 9c7b0c2e8dbfbcd80a71e2cbfe02704f26c185c6 upstream. [BUG] In the following case, rescan won't zero out the number of qgroup 1/0: $ mkfs.btrfs -fq $DEV $ mount $DEV /mnt $ btrfs quota enable /mnt $ btrfs qgroup create 1/0 /mnt $ btrfs sub create /mnt/sub $ btrfs qgroup assign 0/257 1/0 /mnt $ dd if=/dev/urandom of=/mnt/sub/file bs=1k count=1000 $ btrfs sub snap /mnt/sub /mnt/snap $ btrfs quota rescan -w /mnt $ btrfs qgroup show -pcre /mnt qgroupid rfer excl max_rfer max_excl parent child -------- ---- ---- -------- -------- ------ ----- 0/5 16.00KiB 16.00KiB none none --- --- 0/257 1016.00KiB 16.00KiB none none 1/0 --- 0/258 1016.00KiB 16.00KiB none none --- --- 1/0 1016.00KiB 16.00KiB none none --- 0/257 So far so good, but: $ btrfs qgroup remove 0/257 1/0 /mnt WARNING: quotas may be inconsistent, rescan needed $ btrfs quota rescan -w /mnt $ btrfs qgroup show -pcre /mnt qgoupid rfer excl max_rfer max_excl parent child -------- ---- ---- -------- -------- ------ ----- 0/5 16.00KiB 16.00KiB none none --- --- 0/257 1016.00KiB 16.00KiB none none --- --- 0/258 1016.00KiB 16.00KiB none none --- --- 1/0 1016.00KiB 16.00KiB none none --- --- ^^^^^^^^^^ ^^^^^^^^ not cleared [CAUSE] Before rescan we call qgroup_rescan_zero_tracking() to zero out all qgroups' accounting numbers. However we don't mark all qgroups dirty, but rely on rescan to do so. If we have any high level qgroup without children, it won't be marked dirty during rescan, since we cannot reach that qgroup. This will cause QGROUP_INFO items of childless qgroups never get updated in the quota tree, thus their numbers will stay the same in "btrfs qgroup show" output. [FIX] Just mark all qgroups dirty in qgroup_rescan_zero_tracking(), so even if we have childless qgroups, their QGROUP_INFO items will still get updated during rescan. Reported-by: Misono Tomohiro CC: stable@vger.kernel.org # 4.4+ Signed-off-by: Qu Wenruo Reviewed-by: Misono Tomohiro Tested-by: Misono Tomohiro Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/qgroup.c | 1 + 1 file changed, 1 insertion(+) --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -2446,6 +2446,7 @@ qgroup_rescan_zero_tracking(struct btrfs qgroup->rfer_cmpr = 0; qgroup->excl = 0; qgroup->excl_cmpr = 0; + qgroup_dirty(fs_info, qgroup); } spin_unlock(&fs_info->qgroup_lock); }