This patchset introduce 2 fixes for data extent owner hacks. One can be triggered by balance, another one can be trigged by log replay after power loss.
Root cause are all similar: EXTENT_DATA owner is changed by dirty hacks, from swapping tree blocks containing EXTENT_DATA to manually update extent backref without using inc/dec_extent_ref. The first patch introduces needed functions, then 2 fixes. The reproducer are all merged into xfstests, btrfs/123 and btrfs/119. 3rd patch stay untouched while 2nd patch get update thanks for the report from Goldwyn. Changelog: v2: Update 2nd patch to handle cases where the whole subtree, not only level 2 nodes get updated. Qu Wenruo (3): btrfs: qgroup: Refactor btrfs_qgroup_insert_dirty_extent() btrfs: relocation: Fix leaking qgroups numbers on data extents btrfs: qgroup: Fix qgroup incorrectness caused by log replay fs/btrfs/delayed-ref.c | 5 +-- fs/btrfs/extent-tree.c | 36 +++------------- fs/btrfs/qgroup.c | 39 ++++++++++++++--- fs/btrfs/qgroup.h | 44 +++++++++++++++++-- fs/btrfs/relocation.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++--- fs/btrfs/tree-log.c | 16 +++++++ 6 files changed, 205 insertions(+), 49 deletions(-) -- 2.9.2 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html