summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/stackcollapse.py
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2026-10-01 14:46:15 +0930
committerDavid Sterba <dsterba@suse.com>2026-10-12 19:16:24 +0200
commitdd906477cc2c33c82ec17e6301bd4be4ea588565 (patch)
tree65975e622dd2703fa9843ee5bb5181b8e3f57cd7 /tools/perf/scripts/python/stackcollapse.py
parent95e3b8dc32179b9d2895fca5605d11a763e9d658 (diff)
downloadlinux-dd906477cc2c33c82ec17e6301bd4be4ea588565.tar.gz
linux-dd906477cc2c33c82ec17e6301bd4be4ea588565.zip
btrfs: qgroup: do not treat "ret > 0" as error when deleting a qgroup
[BUG] There is a bug report that when removing a child qgroup, if removing the qgroup requires a rescan, it will delete the on-disk relation and qgroup items but not the in-memory qgroup rb entry. This makes all later qgroup rescan to fail. [CAUSE] The call chain looks like the following: btrfs_remove_qgroup() |- __del_qgroup_relation() | |- quick_update_accounting() | Which returns 1, showing this operation will require | a qgroup rescan |- if (ret) goto out; Which skips the del_qgroup_rb() call, leaving the in-memory qgroup rb entry still intact. Then later qgroup rescan/update will always fail and mark qgroup inconsistent: btrfs_run_qgroups() |- update_qgroup_info_item() | |- btrfs_search_slot() | Which returns -ENOENT, as the qgroup info item is already | deleted. |- qgroup_mark_inconsistent() |- return -ENOENT; [FIX] Do not treat "ret > 0" as an error. Reported-by: c.f.a@posteo.de Link: https://lore.kernel.org/linux-btrfs/14846642-85d3-4afb-ad99-1b74b22f5f90@posteo.de/ Fixes: 9c8b35b1ba21 ("btrfs: quota: Automatically update related qgroups or mark INCONSISTENT flags when assigning/deleting a qgroup relations.") Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions