diff options
Diffstat (limited to 'btrfs-map-logical.c')
-rw-r--r-- | btrfs-map-logical.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/btrfs-map-logical.c b/btrfs-map-logical.c index 4508f365..57278fe1 100644 --- a/btrfs-map-logical.c +++ b/btrfs-map-logical.c @@ -75,7 +75,8 @@ again: ret = btrfs_previous_extent_item(fs_info->extent_root, path, 0); else - ret = btrfs_next_item(fs_info->extent_root, path); + ret = btrfs_next_extent_item(fs_info->extent_root, + path, 0); if (ret) goto out; goto again; @@ -112,9 +113,10 @@ static int __print_mapping_info(struct btrfs_fs_info *fs_info, u64 logical, ret = btrfs_map_block(fs_info, READ, logical + cur_offset, &cur_len, &multi, mirror_num, NULL); if (ret) { + errno = -ret; fprintf(info_file, - "Error: fails to map mirror%d logical %llu: %s\n", - mirror_num, logical, strerror(-ret)); + "Error: fails to map mirror%d logical %llu: %m\n", + mirror_num, logical); return ret; } for (i = 0; i < multi->num_stripes; i++) { @@ -172,17 +174,18 @@ static int write_extent_content(struct btrfs_fs_info *fs_info, int out_fd, ret = read_extent_data(fs_info, buffer, logical + cur_offset, &cur_len, mirror); if (ret < 0) { + errno = -ret; fprintf(stderr, - "Failed to read extent at [%llu, %llu]: %s\n", - logical, logical + length, strerror(-ret)); + "Failed to read extent at [%llu, %llu]: %m\n", + logical, logical + length); return ret; } ret = write(out_fd, buffer, cur_len); if (ret < 0 || ret != cur_len) { if (ret > 0) ret = -EINTR; - fprintf(stderr, "output file write failed: %s\n", - strerror(-ret)); + errno = -ret; + fprintf(stderr, "output file write failed: %m\n"); return ret; } cur_offset += cur_len; @@ -292,8 +295,9 @@ int main(int argc, char **argv) /* First find the nearest extent */ ret = map_one_extent(root->fs_info, &cur_logical, &cur_len, 0); if (ret < 0) { - fprintf(stderr, "Failed to find extent at [%llu,%llu): %s\n", - cur_logical, cur_logical + cur_len, strerror(-ret)); + errno = -ret; + fprintf(stderr, "Failed to find extent at [%llu,%llu): %m\n", + cur_logical, cur_logical + cur_len); goto out_close_fd; } /* @@ -304,10 +308,10 @@ int main(int argc, char **argv) if (ret > 0) { ret = map_one_extent(root->fs_info, &cur_logical, &cur_len, 1); if (ret < 0) { + errno = -ret; fprintf(stderr, - "Failed to find extent at [%llu,%llu): %s\n", - cur_logical, cur_logical + cur_len, - strerror(-ret)); + "Failed to find extent at [%llu,%llu): %m\n", + cur_logical, cur_logical + cur_len); goto out_close_fd; } if (ret > 0) { |