summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--disk-io.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/disk-io.c b/disk-io.c
index 8496aded..c3da18c7 100644
--- a/disk-io.c
+++ b/disk-io.c
@@ -1412,7 +1412,8 @@ static int write_dev_supers(struct btrfs_root *root,
ret = pwrite64(device->fd, root->fs_info->super_copy,
BTRFS_SUPER_INFO_SIZE,
root->fs_info->super_bytenr);
- BUG_ON(ret != BTRFS_SUPER_INFO_SIZE);
+ if (ret != BTRFS_SUPER_INFO_SIZE)
+ goto write_err;
return 0;
}
@@ -1434,10 +1435,19 @@ static int write_dev_supers(struct btrfs_root *root,
*/
ret = pwrite64(device->fd, root->fs_info->super_copy,
BTRFS_SUPER_INFO_SIZE, bytenr);
- BUG_ON(ret != BTRFS_SUPER_INFO_SIZE);
+ if (ret != BTRFS_SUPER_INFO_SIZE)
+ goto write_err;
}
return 0;
+
+write_err:
+ if (ret > 0)
+ fprintf(stderr, "WARNING: failed to write all sb data\n");
+ else
+ fprintf(stderr, "WARNING: failed to write sb: %s\n",
+ strerror(errno));
+ return ret;
}
int write_all_supers(struct btrfs_root *root)