diff options
author | David Sterba <dsterba@suse.com> | 2016-07-15 17:00:56 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2016-07-15 17:03:28 +0200 |
commit | 029772be1152bbdf921ee74b95cfcde4003f5e46 (patch) | |
tree | 09024b990183616868e2911961cfd66ec2707570 /btrfs-corrupt-block.c | |
parent | e319aa1490c8b5382fe1c3094cdec13ae1c966e0 (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.c | 14 |
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); } |