Btrfs: Fix allocation profile init
authorChris Mason <chris.mason@oracle.com>
Fri, 4 Apr 2008 19:40:00 +0000 (15:40 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:04:01 +0000 (11:04 -0400)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/ctree.h
fs/btrfs/disk-io.c
fs/btrfs/extent-tree.c

index 72deae63ec28e61818ca55aaca56b35795206b58..4b3b20459f6eba3ab26b3852f46a4887c6a6a01a 100644 (file)
@@ -506,12 +506,13 @@ struct btrfs_fs_info {
        u64 delalloc_bytes;
        u64 last_alloc;
        u64 last_data_alloc;
-       int avail_data_alloc_bits;
-       int avail_metadata_alloc_bits;
-       int avail_system_alloc_bits;
-       int data_alloc_profile;
-       int metadata_alloc_profile;
-       int system_alloc_profile;
+
+       u64 avail_data_alloc_bits;
+       u64 avail_metadata_alloc_bits;
+       u64 avail_system_alloc_bits;
+       u64 data_alloc_profile;
+       u64 metadata_alloc_profile;
+       u64 system_alloc_profile;
 };
 
 /*
index 42522232fde4c32e70385aff6b3384ee986a1896..bc5bd5abb28a67d89a9793497156ae35200f0ce6 100644 (file)
@@ -912,13 +912,10 @@ struct btrfs_root *open_ctree(struct super_block *sb,
        btrfs_read_block_groups(extent_root);
 
        fs_info->generation = btrfs_super_generation(disk_super) + 1;
-       if (btrfs_super_num_devices(disk_super) > 0) {
-               fs_info->data_alloc_profile = BTRFS_BLOCK_GROUP_RAID0 |
-                       BTRFS_BLOCK_GROUP_RAID1;
-               fs_info->metadata_alloc_profile = BTRFS_BLOCK_GROUP_RAID1 |
-                       BTRFS_BLOCK_GROUP_DUP;
-               fs_info->system_alloc_profile = fs_info->metadata_alloc_profile;
-       }
+       fs_info->data_alloc_profile = (u64)-1;
+       fs_info->metadata_alloc_profile = (u64)-1;
+       fs_info->system_alloc_profile = fs_info->metadata_alloc_profile;
+
        mutex_unlock(&fs_info->fs_mutex);
        return tree_root;
 
index 0c0dde6d96149288a6d6abb5ce1207fddc2cb882..0cb742884cdfa63d82a0bddf64848e8af3220455 100644 (file)
@@ -1100,7 +1100,6 @@ printk("space info full %Lu\n", flags);
                     start, num_bytes);
        BUG_ON(ret);
 
-       set_avail_alloc_bits(extent_root->fs_info, flags);
        return 0;
 }
 
@@ -2813,13 +2812,7 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans,
                                &cache->space_info);
        BUG_ON(ret);
 
-       if (type & BTRFS_BLOCK_GROUP_DATA) {
-               bit = BLOCK_GROUP_DATA;
-       } else if (type & BTRFS_BLOCK_GROUP_SYSTEM) {
-               bit = BLOCK_GROUP_SYSTEM;
-       } else if (type & BTRFS_BLOCK_GROUP_METADATA) {
-               bit = BLOCK_GROUP_METADATA;
-       }
+       bit = block_group_state_bits(type);
        set_extent_bits(block_group_cache, chunk_objectid,
                        chunk_objectid + size - 1,
                        bit | EXTENT_LOCKED, GFP_NOFS);
@@ -2833,5 +2826,6 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans,
        finish_current_insert(trans, extent_root);
        ret = del_pending_extents(trans, extent_root);
        BUG_ON(ret);
+       set_avail_alloc_bits(extent_root->fs_info, type);
        return 0;
 }