diff options
author | Boris Burkov <boris@bur.io> | 2023-01-30 14:45:55 -0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2023-10-12 16:44:11 +0200 |
commit | d9a620f77e33f2b0e9a5f131f3ee3c66d3285c57 (patch) | |
tree | 58c86124cd45a5777de063a8efa5b5cd08454302 /fs/btrfs/tree-checker.c | |
parent | cf79ac47932b377d0cfe6b61f4472cdc17eac042 (diff) | |
download | linux-stable-d9a620f77e33f2b0e9a5f131f3ee3c66d3285c57.tar.gz linux-stable-d9a620f77e33f2b0e9a5f131f3ee3c66d3285c57.tar.bz2 linux-stable-d9a620f77e33f2b0e9a5f131f3ee3c66d3285c57.zip |
btrfs: new inline ref storing owning subvol of data extents
In order to implement simple quota groups, we need to be able to
associate a data extent with the subvolume that created it. Once you
account for reflink, this information cannot be recovered without
explicitly storing it. Options for storing it are:
- a new key/item
- a new extent inline ref item
The former is backwards compatible, but wastes space, the latter is
incompat, but is efficient in space and reuses the existing inline ref
machinery, while only abusing it a tiny amount -- specifically, the new
item is not a ref, per-se.
Signed-off-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/tree-checker.c')
-rw-r--r-- | fs/btrfs/tree-checker.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c index 1547090bf2c0..1f2c389b0bfa 100644 --- a/fs/btrfs/tree-checker.c +++ b/fs/btrfs/tree-checker.c @@ -1467,6 +1467,9 @@ static int check_extent_item(struct extent_buffer *leaf, } inline_refs += btrfs_shared_data_ref_count(leaf, sref); break; + case BTRFS_EXTENT_OWNER_REF_KEY: + WARN_ON(!btrfs_fs_incompat(fs_info, SIMPLE_QUOTA)); + break; default: extent_err(leaf, slot, "unknown inline ref type: %u", inline_type); |