|
@@ -1120,6 +1120,7 @@ struct btrfs_fs_info {
|
|
|
struct btrfs_root *dev_root;
|
|
|
struct btrfs_root *fs_root;
|
|
|
struct btrfs_root *csum_root;
|
|
|
+ struct btrfs_root *quota_root;
|
|
|
|
|
|
/* the log root tree is a directory of all the other log roots */
|
|
|
struct btrfs_root *log_root_tree;
|
|
@@ -1374,6 +1375,29 @@ struct btrfs_fs_info {
|
|
|
#ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
|
|
|
u32 check_integrity_print_mask;
|
|
|
#endif
|
|
|
+ /*
|
|
|
+ * quota information
|
|
|
+ */
|
|
|
+ unsigned int quota_enabled:1;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * quota_enabled only changes state after a commit. This holds the
|
|
|
+ * next state.
|
|
|
+ */
|
|
|
+ unsigned int pending_quota_state:1;
|
|
|
+
|
|
|
+ /* is qgroup tracking in a consistent state? */
|
|
|
+ u64 qgroup_flags;
|
|
|
+
|
|
|
+ /* holds configuration and tracking. Protected by qgroup_lock */
|
|
|
+ struct rb_root qgroup_tree;
|
|
|
+ spinlock_t qgroup_lock;
|
|
|
+
|
|
|
+ /* list of dirty qgroups to be written at next commit */
|
|
|
+ struct list_head dirty_qgroups;
|
|
|
+
|
|
|
+ /* used by btrfs_qgroup_record_ref for an efficient tree traversal */
|
|
|
+ u64 qgroup_seq;
|
|
|
|
|
|
/* filesystem state */
|
|
|
u64 fs_state;
|