summaryrefslogtreecommitdiff
path: root/btrfs-map-logical.c
diff options
context:
space:
mode:
Diffstat (limited to 'btrfs-map-logical.c')
-rw-r--r--btrfs-map-logical.c28
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) {