btrfs: quota: Reset rescan progress if we hit last leaf
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.
Reported-by Misono Tomohiro <[email protected]>
Fixes ff3d27a048d9 ("btrfs: qgroup: Finish rescan when hit the last leaf of extent tree")
Signed-off-by Qu Wenruo <[email protected]>
--- fs/btrfs/qgroup.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/btrfs/qgroup.c +3 -1
@@ -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