|
@@ -758,6 +758,7 @@ struct btrfs_csum_item {
|
|
#define BTRFS_BLOCK_GROUP_RAID1 (1ULL << 4)
|
|
#define BTRFS_BLOCK_GROUP_RAID1 (1ULL << 4)
|
|
#define BTRFS_BLOCK_GROUP_DUP (1ULL << 5)
|
|
#define BTRFS_BLOCK_GROUP_DUP (1ULL << 5)
|
|
#define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
|
|
#define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
|
|
|
|
+#define BTRFS_BLOCK_GROUP_RESERVED BTRFS_AVAIL_ALLOC_BIT_SINGLE
|
|
#define BTRFS_NR_RAID_TYPES 5
|
|
#define BTRFS_NR_RAID_TYPES 5
|
|
|
|
|
|
#define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \
|
|
#define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \
|
|
@@ -768,6 +769,15 @@ struct btrfs_csum_item {
|
|
BTRFS_BLOCK_GROUP_RAID1 | \
|
|
BTRFS_BLOCK_GROUP_RAID1 | \
|
|
BTRFS_BLOCK_GROUP_DUP | \
|
|
BTRFS_BLOCK_GROUP_DUP | \
|
|
BTRFS_BLOCK_GROUP_RAID10)
|
|
BTRFS_BLOCK_GROUP_RAID10)
|
|
|
|
+/*
|
|
|
|
+ * We need a bit for restriper to be able to tell when chunks of type
|
|
|
|
+ * SINGLE are available. This "extended" profile format is used in
|
|
|
|
+ * fs_info->avail_*_alloc_bits (in-memory) and balance item fields
|
|
|
|
+ * (on-disk). The corresponding on-disk bit in chunk.type is reserved
|
|
|
|
+ * to avoid remappings between two formats in future.
|
|
|
|
+ */
|
|
|
|
+#define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48)
|
|
|
|
+
|
|
struct btrfs_block_group_item {
|
|
struct btrfs_block_group_item {
|
|
__le64 used;
|
|
__le64 used;
|
|
__le64 chunk_objectid;
|
|
__le64 chunk_objectid;
|
|
@@ -1140,6 +1150,11 @@ struct btrfs_fs_info {
|
|
spinlock_t ref_cache_lock;
|
|
spinlock_t ref_cache_lock;
|
|
u64 total_ref_cache_size;
|
|
u64 total_ref_cache_size;
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * these three are in extended format (availability of single
|
|
|
|
+ * chunks is denoted by BTRFS_AVAIL_ALLOC_BIT_SINGLE bit, other
|
|
|
|
+ * types are denoted by corresponding BTRFS_BLOCK_GROUP_* bits)
|
|
|
|
+ */
|
|
u64 avail_data_alloc_bits;
|
|
u64 avail_data_alloc_bits;
|
|
u64 avail_metadata_alloc_bits;
|
|
u64 avail_metadata_alloc_bits;
|
|
u64 avail_system_alloc_bits;
|
|
u64 avail_system_alloc_bits;
|