btrfs-progs: update CHANGES for v4.16
[platform/upstream/btrfs-progs.git] / convert / main.c
index 0babf0e..6bdfab4 100644 (file)
@@ -768,7 +768,7 @@ static int create_image(struct btrfs_root *root,
        if (ret < 0)
                goto out;
        ret = btrfs_add_link(trans, root, ino, BTRFS_FIRST_FREE_OBJECTID, name,
-                            strlen(name), BTRFS_FT_REG_FILE, NULL, 1);
+                            strlen(name), BTRFS_FT_REG_FILE, NULL, 1, 0);
        if (ret < 0)
                goto out;
 
@@ -916,9 +916,7 @@ static int make_convert_data_block_groups(struct btrfs_trans_handle *trans,
                        if (ret < 0)
                                break;
                        ret = btrfs_make_block_group(trans, fs_info, 0,
-                                       BTRFS_BLOCK_GROUP_DATA,
-                                       BTRFS_FIRST_CHUNK_TREE_OBJECTID,
-                                       cur, len);
+                                       BTRFS_BLOCK_GROUP_DATA, cur, len);
                        if (ret < 0)
                                break;
                        cur += len;
@@ -1028,7 +1026,7 @@ static int migrate_super_block(int fd, u64 old_bytenr)
        BUG_ON(btrfs_super_bytenr(super) != old_bytenr);
        btrfs_set_super_bytenr(super, BTRFS_SUPER_INFO_OFFSET);
 
-       csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
+       csum_tree_block_size(buf, btrfs_csum_sizes[BTRFS_CSUM_TYPE_CRC32], 0);
        ret = pwrite(fd, buf->data, BTRFS_SUPER_INFO_SIZE,
                BTRFS_SUPER_INFO_OFFSET);
        if (ret != BTRFS_SUPER_INFO_SIZE)
@@ -1115,7 +1113,7 @@ static int do_convert(const char *devname, u32 convert_flags, u32 nodesize,
                goto fail;
        fd = open(devname, O_RDWR);
        if (fd < 0) {
-               error("unable to open %s: %s", devname, strerror(errno));
+               error("unable to open %s: %m", devname);
                goto fail;
        }
        btrfs_parse_features_to_string(features_buf, features);
@@ -1197,7 +1195,7 @@ static int do_convert(const char *devname, u32 convert_flags, u32 nodesize,
        }
 
        image_root = btrfs_mksubvol(root, subvol_name,
-                                   CONV_IMAGE_SUBVOL_OBJECTID);
+                                   CONV_IMAGE_SUBVOL_OBJECTID, true);
        if (!image_root) {
                error("unable to link subvolume %s", subvol_name);
                goto fail;
@@ -1443,6 +1441,8 @@ next:
                }
        }
        btrfs_release_path(&path);
+       if (ret)
+               return ret;
        /*
         * For HOLES mode (without NO_HOLES), we must ensure file extents
         * cover the whole range of the image
@@ -1524,12 +1524,18 @@ static int do_rollback(const char *devname)
        }
        fd = open(devname, O_RDWR);
        if (fd < 0) {
-               error("unable to open %s: %s", devname, strerror(errno));
+               error("unable to open %s: %m", devname);
                ret = -EIO;
                goto free_mem;
        }
        fsize = lseek(fd, 0, SEEK_END);
-       root = open_ctree_fd(fd, devname, 0, OPEN_CTREE_WRITES);
+
+       /*
+        * For rollback, we don't really need to write anything so open it
+        * read-only.  The write part will happen after we close the
+        * filesystem.
+        */
+       root = open_ctree_fd(fd, devname, 0, 0);
        if (!root) {
                error("unable to open ctree");
                ret = -EIO;