summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2015-07-01 19:12:38 +0200
committerDavid Sterba <dsterba@suse.com>2015-07-01 19:12:38 +0200
commit21f26887cdde8e16a55031782a99a3c4fb4cfc11 (patch)
tree3a242b2600b6f32502f1095585aa9bb5b1191dc9
parent00d07721ec732334bc0620dc3057c3f1291675df (diff)
btrfs-progs: split metadata group creation out of make_root_dir
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--mkfs.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/mkfs.c b/mkfs.c
index 59dd8848..084dd27e 100644
--- a/mkfs.c
+++ b/mkfs.c
@@ -59,11 +59,10 @@ struct mkfs_allocation {
u64 system;
};
-static int make_root_dir(struct btrfs_root *root, int mixed,
+static int create_metadata_block_groups(struct btrfs_root *root, int mixed,
struct mkfs_allocation *allocation)
{
struct btrfs_trans_handle *trans;
- struct btrfs_key location;
u64 bytes_used;
u64 chunk_start = 0;
u64 chunk_size = 0;
@@ -117,6 +116,20 @@ static int make_root_dir(struct btrfs_root *root, int mixed,
root->fs_info->system_allocs = 0;
btrfs_commit_transaction(trans, root);
+
+err:
+ return ret;
+}
+
+static int make_root_dir(struct btrfs_root *root, int mixed,
+ struct mkfs_allocation *allocation)
+{
+ struct btrfs_trans_handle *trans;
+ struct btrfs_key location;
+ u64 chunk_start = 0;
+ u64 chunk_size = 0;
+ int ret;
+
trans = btrfs_start_transaction(root, 1);
BUG_ON(!trans);
@@ -1530,6 +1543,12 @@ int main(int ac, char **av)
}
root->fs_info->alloc_start = alloc_start;
+ ret = create_metadata_block_groups(root, mixed, &allocation);
+ if (ret) {
+ fprintf(stderr, "failed to create default block groups\n");
+ exit(1);
+ }
+
ret = make_root_dir(root, mixed, &allocation);
if (ret) {
fprintf(stderr, "failed to setup the root directory\n");