diff options
author | Filipe David Borba Manana <fdmanana@gmail.com> | 2013-08-17 14:48:29 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2013-09-03 19:41:13 +0200 |
commit | d608d404c3b5312d086401847b9f30df4f790861 (patch) | |
tree | 70666a5a6644a4b80b3c0f2497347ffbecb8294b /mkfs.c | |
parent | da10563d8b9c1e63ac55a318c85f3a03fff952c4 (diff) |
Btrfs-progs: mkfs can now create fs with skinny extents
Before this change, passing -O skinny-metadata to mkfs.btrfs would
only set the skinny metadata incompat flag in the super block after
the filesystem was created. This change makes mkfs.btrfs directly
create a filesystem with only skinny extents for metadata.
Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'mkfs.c')
-rw-r--r-- | mkfs.c | 37 |
1 files changed, 15 insertions, 22 deletions
@@ -1352,8 +1352,6 @@ int main(int ac, char **av) u64 num_of_meta_chunks = 0; u64 size_of_data = 0; u64 source_dir_size = 0; - struct btrfs_super_block *super; - u64 flags; int dev_cnt = 0; int saved_optind; char estr[100]; @@ -1526,9 +1524,23 @@ int main(int ac, char **av) leafsize * i; } + /* + * FS features that can be set by other means than -O + * just set the bit here + */ + if (mixed) + features |= BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS; + + if ((data_profile | metadata_profile) & + (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)) { + features |= BTRFS_FEATURE_INCOMPAT_RAID56; + } + + process_fs_features(features); + ret = make_btrfs(fd, file, label, blocks, dev_block_count, nodesize, leafsize, - sectorsize, stripesize); + sectorsize, stripesize, features); if (ret) { fprintf(stderr, "error during mkfs: %s\n", strerror(-ret)); exit(1); @@ -1602,25 +1614,6 @@ raid_groups: ret = create_data_reloc_tree(trans, root); BUG_ON(ret); - super = root->fs_info->super_copy; - flags = btrfs_super_incompat_flags(super); - - /* - * FS features that can be set by other means than -O - * just set the bit here - */ - if (mixed) - features |= BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS; - - if ((data_profile | metadata_profile) & - (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)) { - features |= BTRFS_FEATURE_INCOMPAT_RAID56; - } - - process_fs_features(features); - flags |= features; - btrfs_set_super_incompat_flags(super, flags); - printf("fs created label %s on %s\n\tnodesize %u leafsize %u " "sectorsize %u size %s\n", label, first_file, nodesize, leafsize, sectorsize, |