btrfs-progs: corrupt block: handle eb read and write errors
authorDavid Sterba <dsterba@suse.com>
Fri, 15 Jul 2016 15:00:56 +0000 (17:00 +0200)
committerDavid Sterba <dsterba@suse.com>
Fri, 15 Jul 2016 15:03:28 +0000 (17:03 +0200)
Resolves-coverity-id: 1261558
Signed-off-by: David Sterba <dsterba@suse.com>
btrfs-corrupt-block.c

index 86d4d0b..a488e47 100644 (file)
@@ -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);
                }