Skip to contentSkip to conversation

btrfs: quota: Reset rescan progress if we hit last leaf

PATCH New Qu Wenruo 1 participant 1 message Jun 27, 2018 Btrfs file system

lore
Share & tools
lore

Qu Wenruo

author
#0 lore raw

PATCH 1/1 btrfs: quota: Reset rescan progress if we hit last leaf

Commit ff3d27a048d9 ("btrfs: qgroup: Finish rescan when hit the last leaf of extent tree") added a new exit for rescan finish.

However after finishing quota rescan, we set fs_info->qgroup_rescan_progress to (u64)-1, as qgroup_rescan_progress is also used to determine whether we should account dirty extents.
Since if dirty extents is after qgroup_rescan_progress, we don't need to account it as rescan will account them later.

Without properly setting qgroup_rescan_progress to (u64)-1, all later dirty extents after qgroup_rescan_progress will be ignored, thus screwing up the whole quota accounting.

Fixes ff3d27a048d9 ("btrfs: qgroup: Finish rescan when hit the last leaf of extent tree")
---
 fs/btrfs/qgroup.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
fs/btrfs/qgroup.c +3 -1
index 1874a6d2e6f5..99f2b9ce0f15 100644
@@ -2680,8 +2680,10 @@ qgroup_rescan_leaf(struct btrfs_fs_info *fs_info, struct btrfs_path *path,
 		free_extent_buffer(scratch_leaf);
 	}
 
-	if (done && !ret)
+	if (done && !ret) {
 		ret = 1;
+		fs_info->qgroup_rescan_progress.objectid = (u64)-1;
+	}
 	return ret;
 }
 
Signature · 1 line
2.18.0