X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=disk-io.c;h=76958aef239e511c21e072c757c0f5e2e23aea59;hb=3ccad2a6443fcae0fee2cd94132580d2d06268dd;hp=f5edc47966198242004df791fbe70caa118a6038;hpb=c6487a7d1d0ae7c4c37785838c4817bd4f864fb7;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/disk-io.c b/disk-io.c index f5edc47..76958ae 100644 --- a/disk-io.c +++ b/disk-io.c @@ -1212,7 +1212,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 +1225,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, @@ -1419,6 +1419,23 @@ error_out: return -EIO; } +/* + * btrfs_read_dev_super - read a valid superblock from a block device + * @fd: file descriptor of the device + * @sb: buffer where the superblock is going to be read in + * @sb_bytenr: offset of the particular superblock copy we want + * @sbflags: flags controlling how the superblock is read + * + * This function is used by various btrfs comands to obtain a valid superblock. + * + * It's mode of operation is controlled by the @sb_bytenr and @sbdflags + * parameters. If SBREAD_RECOVER flag is set and @sb_bytenr is + * BTRFS_SUPER_INFO_OFFSET then the function reads all 3 superblock copies and + * returns the newest one. If SBREAD_RECOVER is not set then only a single + * copy is read, which one is decided by @sb_bytenr. If @sb_bytenr != + * BTRFS_SUPER_INFO_OFFSET then the @sbflags is effectively ignored and only a + * single copy is read. + */ int btrfs_read_dev_super(int fd, struct btrfs_super_block *sb, u64 sb_bytenr, unsigned sbflags) { @@ -1549,14 +1566,12 @@ 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; } int write_all_supers(struct btrfs_fs_info *fs_info) { - struct list_head *cur; struct list_head *head = &fs_info->fs_devices->devices; struct btrfs_device *dev; struct btrfs_super_block *sb; @@ -1566,8 +1581,7 @@ int write_all_supers(struct btrfs_fs_info *fs_info) sb = fs_info->super_copy; dev_item = &sb->dev_item; - list_for_each(cur, head) { - dev = list_entry(cur, struct btrfs_device, dev_list); + list_for_each_entry(dev, head, dev_list) { if (!dev->writeable) continue;