btrfs-progs: corrupt block: handle eb read and write errors

Resolves-coverity-id: 1261558
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba 2016-07-15 17:00:56 +02:00
parent e319aa1490
commit 029772be11
1 changed files with 13 additions and 1 deletions

View File

@ -69,10 +69,22 @@ static int debug_corrupt_block(struct extent_buffer *eb,
if (!copy || mirror_num == copy) { if (!copy || mirror_num == copy) {
ret = read_extent_from_disk(eb, 0, eb->len); 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, printf("corrupting %llu copy %d\n", eb->start,
mirror_num); mirror_num);
memset(eb->data, 0, eb->len); 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); fsync(eb->fd);
} }