btrfs: make OWNER_REF_KEY type value smallest among inline refs
authorBoris Burkov <boris@bur.io>
Fri, 3 Nov 2023 18:38:04 +0000 (11:38 -0700)
committerDavid Sterba <dsterba@suse.com>
Thu, 9 Nov 2023 13:02:12 +0000 (14:02 +0100)
commitd3933152442b7f94419e9ea71835d71b620baf0e
treee7964031ba9ebb916691dddef741969ead69f32d
parent609d99379736aa6c5b0658654084198aa808035a
btrfs: make OWNER_REF_KEY type value smallest among inline refs

BTRFS_EXTENT_OWNER_REF_KEY is the type of simple quotas extent owner
refs. This special inline ref goes in front of all other inline refs.

In general, inline refs have a required sorted order s.t. type never
decreases (among other requirements). This was recently reified into a
tree-checker and fsck rule, which broke simple quotas. To be fair,
though, in a sense, the new owner ref item had also violated that not
yet fully enforced requirement.

This fix brings the owner ref item into compliance with the requirement
that inline ref type never decrease.

btrfs/301 exercises this behavior and should pass again with this fix.

Fixes: d9a620f77e33 ("btrfs: new inline ref storing owning subvol of data extents")
Signed-off-by: Boris Burkov <boris@bur.io>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
include/uapi/linux/btrfs_tree.h