libbtrfsutil: always build libbtrfsutil.so.$MAJOR
[platform/upstream/btrfs-progs.git] / convert / common.c
index 7a9b596..2b944fd 100644 (file)
@@ -22,6 +22,8 @@
 #include "mkfs/common.h"
 #include "convert/common.h"
 
+#define BTRFS_CONVERT_META_GROUP_SIZE SZ_32M
+
 /*
  * Reserve space from free_tree.
  * The algorithm is very simple, find the first cache_extent with enough space
@@ -62,7 +64,7 @@ static inline int write_temp_super(int fd, struct btrfs_super_block *sb,
        u32 crc = ~(u32)0;
        int ret;
 
-       crc = btrfs_csum_data(NULL, (char *)sb + BTRFS_CSUM_SIZE, crc,
+       crc = btrfs_csum_data((char *)sb + BTRFS_CSUM_SIZE, crc,
                              BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
        btrfs_csum_final(crc, &sb->csum[0]);
        ret = pwrite(fd, sb, BTRFS_SUPER_INFO_SIZE, sb_bytenr);
@@ -126,7 +128,7 @@ static int setup_temp_super(int fd, struct btrfs_mkfs_config *cfg,
         */
        btrfs_set_super_bytes_used(super, 6 * cfg->nodesize);
        btrfs_set_super_sectorsize(super, cfg->sectorsize);
-       btrfs_set_super_leafsize(super, cfg->nodesize);
+       super->__unused_leafsize = cpu_to_le32(cfg->nodesize);
        btrfs_set_super_nodesize(super, cfg->nodesize);
        btrfs_set_super_stripesize(super, cfg->stripesize);
        btrfs_set_super_csum_type(super, BTRFS_CSUM_TYPE_CRC32);
@@ -165,7 +167,7 @@ static int setup_temp_extent_buffer(struct extent_buffer *buf,
        btrfs_set_header_generation(buf, 1);
        btrfs_set_header_backref_rev(buf, BTRFS_MIXED_BACKREF_REV);
        btrfs_set_header_owner(buf, owner);
-       btrfs_set_header_flags(buf, BTRFS_HEADER_FLAG_WRITTEN);
+       btrfs_set_header_flag(buf, BTRFS_HEADER_FLAG_WRITTEN);
        write_extent_buffer(buf, chunk_uuid, btrfs_header_chunk_tree_uuid(buf),
                            BTRFS_UUID_SIZE);
        write_extent_buffer(buf, fsid, btrfs_header_fsid(), BTRFS_FSID_SIZE);
@@ -217,7 +219,7 @@ static inline int write_temp_extent_buffer(int fd, struct extent_buffer *buf,
 {
        int ret;
 
-       csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
+       csum_tree_block_size(buf, btrfs_csum_sizes[BTRFS_CSUM_TYPE_CRC32], 0);
 
        /* Temporary extent buffer is always mapped 1:1 on disk */
        ret = pwrite(fd, buf->data, buf->len, bytenr);
@@ -780,8 +782,8 @@ out:
 int make_convert_btrfs(int fd, struct btrfs_mkfs_config *cfg,
                              struct btrfs_convert_context *cctx)
 {
-       struct cache_tree *free = &cctx->free;
-       struct cache_tree *used = &cctx->used;
+       struct cache_tree *free_space = &cctx->free_space;
+       struct cache_tree *used_space = &cctx->used_space;
        u64 sys_chunk_start;
        u64 meta_chunk_start;
        /* chunk tree bytenr, in system chunk */
@@ -794,15 +796,15 @@ int make_convert_btrfs(int fd, struct btrfs_mkfs_config *cfg,
        u64 csum_bytenr;
        int ret;
 
-       /* Shouldn't happen */
-       BUG_ON(cache_tree_empty(used));
+       /* Source filesystem must be opened, checked and analyzed in advance */
+       ASSERT(!cache_tree_empty(used_space));
 
        /*
         * reserve space for temporary superblock first
         * Here we allocate a little larger space, to keep later
         * free space will be STRIPE_LEN aligned
         */
-       ret = reserve_free_space(free, BTRFS_STRIPE_LEN,
+       ret = reserve_free_space(free_space, BTRFS_STRIPE_LEN,
                                 &cfg->super_bytenr);
        if (ret < 0)
                goto out;
@@ -813,11 +815,11 @@ int make_convert_btrfs(int fd, struct btrfs_mkfs_config *cfg,
         * If using current 4M, it can only handle less than one TB for
         * worst case and then run out of sys space.
         */
-       ret = reserve_free_space(free, BTRFS_MKFS_SYSTEM_GROUP_SIZE,
+       ret = reserve_free_space(free_space, BTRFS_MKFS_SYSTEM_GROUP_SIZE,
                                 &sys_chunk_start);
        if (ret < 0)
                goto out;
-       ret = reserve_free_space(free, BTRFS_CONVERT_META_GROUP_SIZE,
+       ret = reserve_free_space(free_space, BTRFS_CONVERT_META_GROUP_SIZE,
                                 &meta_chunk_start);
        if (ret < 0)
                goto out;