Add a fsck symlink to btrfsck
[platform/upstream/btrfs-progs.git] / disk-io.c
index 0b83be7..72d4453 100644 (file)
--- a/disk-io.c
+++ b/disk-io.c
@@ -184,8 +184,7 @@ struct extent_buffer *btrfs_find_tree_block(struct btrfs_fs_info *fs_info,
 struct extent_buffer* btrfs_find_create_tree_block(
                struct btrfs_fs_info *fs_info, u64 bytenr)
 {
-       return alloc_extent_buffer(&fs_info->extent_cache, bytenr,
-                       fs_info->nodesize);
+       return alloc_extent_buffer(fs_info, bytenr, fs_info->nodesize);
 }
 
 void readahead_tree_block(struct btrfs_fs_info *fs_info, u64 bytenr,
@@ -396,10 +395,12 @@ int read_extent_data(struct btrfs_fs_info *fs_info, char *data, u64 logical,
        }
        device = multi->stripes[0].dev;
 
-       if (device->fd <= 0)
-               goto err;
        if (*len > max_len)
                *len = max_len;
+       if (device->fd < 0) {
+               ret = -EIO;
+               goto err;
+       }
 
        ret = pread64(device->fd, data, *len, multi->stripes[0].physical);
        if (ret != *len)
@@ -1115,14 +1116,14 @@ static struct btrfs_fs_info *__open_ctree_fd(int fp, const char *path,
                fs_info->ignore_chunk_tree_error = 1;
 
        if ((flags & OPEN_CTREE_RECOVER_SUPER)
-            && (flags & OPEN_CTREE_FS_PARTIAL)) {
+            && (flags & OPEN_CTREE_TEMPORARY_SUPER)) {
                fprintf(stderr,
-                   "cannot open a partially created filesystem for recovery");
+       "cannot open a filesystem with temporary super block for recovery");
                goto out;
        }
 
-       if (flags & OPEN_CTREE_FS_PARTIAL)
-               sbflags = SBREAD_PARTIAL;
+       if (flags & OPEN_CTREE_TEMPORARY_SUPER)
+               sbflags = SBREAD_TEMPORARY;
 
        ret = btrfs_scan_fs_devices(fp, path, &fs_devices, sb_bytenr, sbflags,
                        (flags & OPEN_CTREE_NO_DEVICES));
@@ -1212,7 +1213,7 @@ struct btrfs_fs_info *open_ctree_fs_info(const char *filename,
 
        ret = stat(filename, &st);
        if (ret < 0) {
-               error("cannot stat '%s': %s", filename, strerror(errno));
+               error("cannot stat '%s': %m", filename);
                return NULL;
        }
        if (!(((st.st_mode & S_IFMT) == S_IFREG) || ((st.st_mode & S_IFMT) == S_IFBLK))) {
@@ -1225,7 +1226,7 @@ struct btrfs_fs_info *open_ctree_fs_info(const char *filename,
 
        fp = open(filename, oflags);
        if (fp < 0) {
-               error("cannot open '%s': %s", filename, strerror(errno));
+               error("cannot open '%s': %m", filename);
                return NULL;
        }
        info = __open_ctree_fd(fp, filename, sb_bytenr, root_tree_bytenr,
@@ -1283,8 +1284,8 @@ static int check_super(struct btrfs_super_block *sb, unsigned sbflags)
        int csum_size;
 
        if (btrfs_super_magic(sb) != BTRFS_MAGIC) {
-               if (btrfs_super_magic(sb) == BTRFS_MAGIC_PARTIAL) {
-                       if (!(sbflags & SBREAD_PARTIAL)) {
+               if (btrfs_super_magic(sb) == BTRFS_MAGIC_TEMPORARY) {
+                       if (!(sbflags & SBREAD_TEMPORARY)) {
                                error("superblock magic doesn't match");
                                return -EIO;
                        }
@@ -1566,8 +1567,7 @@ write_err:
        if (ret > 0)
                fprintf(stderr, "WARNING: failed to write all sb data\n");
        else
-               fprintf(stderr, "WARNING: failed to write sb: %s\n",
-                       strerror(errno));
+               fprintf(stderr, "WARNING: failed to write sb: %m\n");
        return ret;
 }