summaryrefslogtreecommitdiff
path: root/btrfs-corrupt-block.c
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.com>2016-07-15 17:00:56 +0200
committerDavid Sterba <dsterba@suse.com>2016-07-15 17:03:28 +0200
commit029772be1152bbdf921ee74b95cfcde4003f5e46 (patch)
tree09024b990183616868e2911961cfd66ec2707570 /btrfs-corrupt-block.c
parente319aa1490c8b5382fe1c3094cdec13ae1c966e0 (diff)
btrfs-progs: corrupt block: handle eb read and write errors
Resolves-coverity-id: 1261558 Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'btrfs-corrupt-block.c')
-rw-r--r--btrfs-corrupt-block.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/btrfs-corrupt-block.c b/btrfs-corrupt-block.c
index 86d4d0bf..a488e479 100644
--- a/btrfs-corrupt-block.c
+++ b/btrfs-corrupt-block.c
@@ -69,10 +69,22 @@ static int debug_corrupt_block(struct extent_buffer *eb,
if (!copy || mirror_num == copy) {
ret = read_extent_from_disk(eb, 0, eb->len);
+ if (ret < 0) {
+ error("cannot read eb bytenr %llu: %s",
+ (unsigned long long)eb->dev_bytenr,
+ strerror(-ret));
+ return ret;
+ }
printf("corrupting %llu copy %d\n", eb->start,
mirror_num);
memset(eb->data, 0, eb->len);
- write_extent_to_disk(eb);
+ ret = write_extent_to_disk(eb);
+ if (ret < 0) {
+ error("cannot write eb bytenr %llu: %s",
+ (unsigned long long)eb->dev_bytenr,
+ strerror(-ret));
+ return ret;
+ }
fsync(eb->fd);
}