btrfs-progs: mkfs: delete un-used parameter fd
[platform/upstream/btrfs-progs.git] / volumes.c
index e4f67d3..2f3943d 100644 (file)
--- a/volumes.c
+++ b/volumes.c
@@ -585,7 +585,7 @@ error:
  * the btrfs_device struct should be fully filled in
  */
 int btrfs_add_device(struct btrfs_trans_handle *trans,
-                    struct btrfs_root *root,
+                    struct btrfs_fs_info *fs_info,
                     struct btrfs_device *device)
 {
        int ret;
@@ -593,11 +593,10 @@ int btrfs_add_device(struct btrfs_trans_handle *trans,
        struct btrfs_dev_item *dev_item;
        struct extent_buffer *leaf;
        struct btrfs_key key;
+       struct btrfs_root *root = fs_info->chunk_root;
        unsigned long ptr;
        u64 free_devid = 0;
 
-       root = root->fs_info->chunk_root;
-
        path = btrfs_alloc_path();
        if (!path)
                return -ENOMEM;
@@ -635,7 +634,7 @@ int btrfs_add_device(struct btrfs_trans_handle *trans,
        ptr = (unsigned long)btrfs_device_uuid(dev_item);
        write_extent_buffer(leaf, device->uuid, ptr, BTRFS_UUID_SIZE);
        ptr = (unsigned long)btrfs_device_fsid(dev_item);
-       write_extent_buffer(leaf, root->fs_info->fsid, ptr, BTRFS_UUID_SIZE);
+       write_extent_buffer(leaf, fs_info->fsid, ptr, BTRFS_UUID_SIZE);
        btrfs_mark_buffer_dirty(leaf);
        ret = 0;
 
@@ -690,11 +689,10 @@ out:
        return ret;
 }
 
-int btrfs_add_system_chunk(struct btrfs_root *root,
-                          struct btrfs_key *key,
+int btrfs_add_system_chunk(struct btrfs_fs_info *fs_info, struct btrfs_key *key,
                           struct btrfs_chunk *chunk, int item_size)
 {
-       struct btrfs_super_block *super_copy = root->fs_info->super_copy;
+       struct btrfs_super_block *super_copy = fs_info->super_copy;
        struct btrfs_disk_key disk_key;
        u32 array_size;
        u8 *ptr;
@@ -835,11 +833,11 @@ error:
                                / sizeof(struct btrfs_stripe) + 1)
 
 int btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
-                     struct btrfs_root *extent_root, u64 *start,
+                     struct btrfs_fs_info *info, u64 *start,
                      u64 *num_bytes, u64 type)
 {
        u64 dev_offset;
-       struct btrfs_fs_info *info = extent_root->fs_info;
+       struct btrfs_root *extent_root = info->extent_root;
        struct btrfs_root *chunk_root = info->chunk_root;
        struct btrfs_stripe *stripes;
        struct btrfs_device *device = NULL;
@@ -1083,7 +1081,7 @@ again:
        BUG_ON(ret);
 
        if (type & BTRFS_BLOCK_GROUP_SYSTEM) {
-               ret = btrfs_add_system_chunk(chunk_root, &key,
+               ret = btrfs_add_system_chunk(info, &key,
                                    chunk, btrfs_chunk_item_size(num_stripes));
                BUG_ON(ret);
        }
@@ -1101,11 +1099,11 @@ again:
  * occupied.
  */
 int btrfs_alloc_data_chunk(struct btrfs_trans_handle *trans,
-                          struct btrfs_root *extent_root, u64 *start,
+                          struct btrfs_fs_info *info, u64 *start,
                           u64 num_bytes, u64 type, int convert)
 {
        u64 dev_offset;
-       struct btrfs_fs_info *info = extent_root->fs_info;
+       struct btrfs_root *extent_root = info->extent_root;
        struct btrfs_root *chunk_root = info->chunk_root;
        struct btrfs_stripe *stripes;
        struct btrfs_device *device = NULL;
@@ -1281,6 +1279,8 @@ int btrfs_next_bg(struct btrfs_fs_info *fs_info, u64 *logical,
                        *size = ce->size;
                        return 0;
                }
+               if (!cur)
+                       ce = next_cache_extent(ce);
        }
 
        return -ENOENT;
@@ -1637,11 +1637,11 @@ btrfs_find_device_by_devid(struct btrfs_fs_devices *fs_devices,
        return NULL;
 }
 
-int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset)
+int btrfs_chunk_readonly(struct btrfs_fs_info *fs_info, u64 chunk_offset)
 {
        struct cache_extent *ce;
        struct map_lookup *map;
-       struct btrfs_mapping_tree *map_tree = &root->fs_info->mapping_tree;
+       struct btrfs_mapping_tree *map_tree = &fs_info->mapping_tree;
        int readonly = 0;
        int i;
 
@@ -1650,7 +1650,7 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset)
         * corresponding chunk, we will rebuild it later
         */
        ce = search_cache_extent(&map_tree->cache_tree, chunk_offset);
-       if (!root->fs_info->is_chunk_recover)
+       if (!fs_info->is_chunk_recover)
                BUG_ON(!ce);
        else
                return 0;
@@ -1783,11 +1783,10 @@ int btrfs_check_chunk_valid(struct btrfs_fs_info *fs_info,
  *
  * For sys chunk in superblock, pass -1 to indicate sys chunk.
  */
-static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,
+static int read_one_chunk(struct btrfs_fs_info *fs_info, struct btrfs_key *key,
                          struct extent_buffer *leaf,
                          struct btrfs_chunk *chunk, int slot)
 {
-       struct btrfs_fs_info *fs_info = root->fs_info;
        struct btrfs_mapping_tree *map_tree = &fs_info->mapping_tree;
        struct map_lookup *map;
        struct cache_extent *ce;
@@ -1846,7 +1845,7 @@ static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,
                        printf("warning, device %llu is missing\n",
                               (unsigned long long)devid);
                        list_add(&map->stripes[i].dev->dev_list,
-                                &root->fs_info->fs_devices->devices);
+                                &fs_info->fs_devices->devices);
                }
 
        }
@@ -1913,11 +1912,10 @@ out:
        return ret;
 }
 
-static int read_one_dev(struct btrfs_root *root,
+static int read_one_dev(struct btrfs_fs_info *fs_info,
                        struct extent_buffer *leaf,
                        struct btrfs_dev_item *dev_item)
 {
-       struct btrfs_fs_info *fs_info = root->fs_info;
        struct btrfs_device *device;
        u64 devid;
        int ret = 0;
@@ -1953,9 +1951,9 @@ static int read_one_dev(struct btrfs_root *root,
        return ret;
 }
 
-int btrfs_read_sys_array(struct btrfs_root *root)
+int btrfs_read_sys_array(struct btrfs_fs_info *fs_info)
 {
-       struct btrfs_super_block *super_copy = root->fs_info->super_copy;
+       struct btrfs_super_block *super_copy = fs_info->super_copy;
        struct extent_buffer *sb;
        struct btrfs_disk_key *disk_key;
        struct btrfs_chunk *chunk;
@@ -1968,7 +1966,7 @@ int btrfs_read_sys_array(struct btrfs_root *root)
        u32 cur_offset;
        struct btrfs_key key;
 
-       sb = btrfs_find_create_tree_block(root->fs_info,
+       sb = btrfs_find_create_tree_block(fs_info,
                                          BTRFS_SUPER_INFO_OFFSET,
                                          BTRFS_SUPER_INFO_SIZE);
        if (!sb)
@@ -2016,7 +2014,7 @@ int btrfs_read_sys_array(struct btrfs_root *root)
                        if (cur_offset + len > array_size)
                                goto out_short_read;
 
-                       ret = read_one_chunk(root, &key, sb, chunk, -1);
+                       ret = read_one_chunk(fs_info, &key, sb, chunk, -1);
                        if (ret)
                                break;
                } else {
@@ -2040,17 +2038,16 @@ out_short_read:
        return -EIO;
 }
 
-int btrfs_read_chunk_tree(struct btrfs_root *root)
+int btrfs_read_chunk_tree(struct btrfs_fs_info *fs_info)
 {
        struct btrfs_path *path;
        struct extent_buffer *leaf;
        struct btrfs_key key;
        struct btrfs_key found_key;
+       struct btrfs_root *root = fs_info->chunk_root;
        int ret;
        int slot;
 
-       root = root->fs_info->chunk_root;
-
        path = btrfs_alloc_path();
        if (!path)
                return -ENOMEM;
@@ -2083,12 +2080,12 @@ int btrfs_read_chunk_tree(struct btrfs_root *root)
                        struct btrfs_dev_item *dev_item;
                        dev_item = btrfs_item_ptr(leaf, slot,
                                                  struct btrfs_dev_item);
-                       ret = read_one_dev(root, leaf, dev_item);
+                       ret = read_one_dev(fs_info, leaf, dev_item);
                        BUG_ON(ret);
                } else if (found_key.type == BTRFS_CHUNK_ITEM_KEY) {
                        struct btrfs_chunk *chunk;
                        chunk = btrfs_item_ptr(leaf, slot, struct btrfs_chunk);
-                       ret = read_one_chunk(root, &found_key, leaf, chunk,
+                       ret = read_one_chunk(fs_info, &found_key, leaf, chunk,
                                             slot);
                        BUG_ON(ret);
                }