mirror of
https://github.com/kdave/btrfs-progs
synced 2024-12-25 07:32:22 +00:00
btrfs-progs: add squota kernel definitions
Copy over structs, accessors, and constants for simple quotas Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Boris Burkov <boris@bur.io> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c59fc1d89c
commit
2c729bbe91
@ -417,9 +417,13 @@ static inline u32 btrfs_extent_inline_ref_size(int type)
|
||||
if (type == BTRFS_EXTENT_DATA_REF_KEY)
|
||||
return sizeof(struct btrfs_extent_data_ref) +
|
||||
offsetof(struct btrfs_extent_inline_ref, offset);
|
||||
if (type == BTRFS_EXTENT_OWNER_REF_KEY)
|
||||
return sizeof(struct btrfs_extent_inline_ref);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BTRFS_SETGET_FUNCS(extent_owner_ref_root_id, struct btrfs_extent_owner_ref, root_id, 64);
|
||||
|
||||
/* struct btrfs_node */
|
||||
BTRFS_SETGET_FUNCS(key_blockptr, struct btrfs_key_ptr, blockptr, 64);
|
||||
BTRFS_SETGET_FUNCS(key_generation, struct btrfs_key_ptr, generation, 64);
|
||||
@ -1017,6 +1021,9 @@ BTRFS_SETGET_FUNCS(qgroup_status_flags, struct btrfs_qgroup_status_item,
|
||||
flags, 64);
|
||||
BTRFS_SETGET_FUNCS(qgroup_status_rescan, struct btrfs_qgroup_status_item,
|
||||
rescan, 64);
|
||||
BTRFS_SETGET_FUNCS(qgroup_status_enable_gen, struct btrfs_qgroup_status_item,
|
||||
enable_gen, 64);
|
||||
|
||||
BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_generation,
|
||||
struct btrfs_qgroup_status_item, generation, 64);
|
||||
BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_version,
|
||||
@ -1025,6 +1032,8 @@ BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_flags,
|
||||
struct btrfs_qgroup_status_item, flags, 64);
|
||||
BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_rescan,
|
||||
struct btrfs_qgroup_status_item, rescan, 64);
|
||||
BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_enable_gen,
|
||||
struct btrfs_qgroup_status_item, enable_gen, 64);
|
||||
|
||||
/* btrfs_qgroup_info_item */
|
||||
BTRFS_SETGET_FUNCS(qgroup_info_generation, struct btrfs_qgroup_info_item,
|
||||
|
@ -104,7 +104,8 @@ static inline u32 __BTRFS_LEAF_DATA_SIZE(u32 nodesize)
|
||||
BTRFS_FEATURE_INCOMPAT_METADATA_UUID | \
|
||||
BTRFS_FEATURE_INCOMPAT_ZONED | \
|
||||
BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 | \
|
||||
BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE)
|
||||
BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE | \
|
||||
BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA)
|
||||
#else
|
||||
#define BTRFS_FEATURE_INCOMPAT_SUPP \
|
||||
(BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF | \
|
||||
@ -119,7 +120,8 @@ static inline u32 __BTRFS_LEAF_DATA_SIZE(u32 nodesize)
|
||||
BTRFS_FEATURE_INCOMPAT_NO_HOLES | \
|
||||
BTRFS_FEATURE_INCOMPAT_RAID1C34 | \
|
||||
BTRFS_FEATURE_INCOMPAT_METADATA_UUID | \
|
||||
BTRFS_FEATURE_INCOMPAT_ZONED)
|
||||
BTRFS_FEATURE_INCOMPAT_ZONED | \
|
||||
BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -357,6 +357,7 @@ _static_assert(sizeof(struct btrfs_ioctl_fs_info_args) == 1024);
|
||||
#define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
|
||||
#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
|
||||
#define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14)
|
||||
#define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16)
|
||||
|
||||
struct btrfs_ioctl_feature_flags {
|
||||
__u64 compat_flags;
|
||||
|
@ -230,6 +230,9 @@
|
||||
|
||||
#define BTRFS_SHARED_DATA_REF_KEY 184
|
||||
|
||||
/* Extent owner, used by squota. */
|
||||
#define BTRFS_EXTENT_OWNER_REF_KEY 188
|
||||
|
||||
/*
|
||||
* block groups give us hints into the extent allocation trees. Which
|
||||
* blocks are free etc etc
|
||||
@ -812,6 +815,11 @@ struct btrfs_shared_data_ref {
|
||||
__le32 count;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/* Extent owner, used by squota. */
|
||||
struct btrfs_extent_owner_ref {
|
||||
__le64 root_id;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_inline_ref {
|
||||
__u8 type;
|
||||
__le64 offset;
|
||||
@ -1229,9 +1237,17 @@ static inline __u16 btrfs_qgroup_level(__u64 qgroupid)
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
|
||||
|
||||
/*
|
||||
* Whether or not this filesystem is using simple quotas. Not exactly the
|
||||
* incompat bit, because we support using simple quotas, disabling it, then
|
||||
* going back to full qgroup quotas.
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE (1ULL << 3)
|
||||
|
||||
#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_RESCAN | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
|
||||
BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE)
|
||||
|
||||
#define BTRFS_QGROUP_STATUS_VERSION 1
|
||||
|
||||
@ -1253,6 +1269,12 @@ struct btrfs_qgroup_status_item {
|
||||
* of the scan. It contains a logical address
|
||||
*/
|
||||
__le64 rescan;
|
||||
|
||||
/*
|
||||
* (Added in 6.7.) Used by simple quotas to ignore old extent
|
||||
* deletions. Present when incompat flag SIMPLE_QUOTA is set.
|
||||
*/
|
||||
__le64 enable_gen;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_qgroup_info_item {
|
||||
|
Loading…
Reference in New Issue
Block a user