• Qu Wenruo's avatar
    btrfs: qgroup: Fix root item corruption when multiple same source snapshots... · 4d31778a
    Qu Wenruo authored
    btrfs: qgroup: Fix root item corruption when multiple same source snapshots are created with quota enabled
    
    When multiple pending snapshots referring to the same source subvolume
    are executed, enabled quota will cause root item corruption, where root
    items are using old bytenr (no backref in extent tree).
    
    This can be triggered by fstests btrfs/152.
    
    The cause is when source subvolume is still dirty, extra commit
    (simplied transaction commit) of qgroup_account_snapshot() can skip
    dirty roots not recorded in current transaction, making root item of
    source subvolume not updated.
    
    Fix it by forcing recording source subvolume in current transaction
    before qgroup sub-transaction commit.
    Reported-by: default avatarJustin Maggard <jmaggard@netgear.com>
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    4d31778a
transaction.c 66.4 KB