summaryrefslogtreecommitdiff
path: root/block/vvfat.c
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2014-05-16 11:00:18 +0200
committerStefan Hajnoczi <stefanha@redhat.com>2014-05-28 14:28:47 +0200
commitd11c8917b2b286dbea93c7b05b2f368831e50724 (patch)
tree8922bcab2e4b94b0dde7faeb3b8bbce72bbb9749 /block/vvfat.c
parent68c70af16d75fc2f4d111536c7cf81cdd63851fa (diff)
downloadqemu-d11c8917b2b286dbea93c7b05b2f368831e50724.tar.gz
block/vvfat: Propagate errors through init_directories()
Completes the conversion of the open method to Error started in commit 015a103. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'block/vvfat.c')
-rw-r--r--block/vvfat.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/block/vvfat.c b/block/vvfat.c
index 9b9b8f1037..8f5114bd16 100644
--- a/block/vvfat.c
+++ b/block/vvfat.c
@@ -831,7 +831,8 @@ static inline off_t cluster2sector(BDRVVVFATState* s, uint32_t cluster_num)
}
static int init_directories(BDRVVVFATState* s,
- const char *dirname, int heads, int secs)
+ const char *dirname, int heads, int secs,
+ Error **errp)
{
bootsector_t* bootsector;
mapping_t* mapping;
@@ -892,8 +893,8 @@ static int init_directories(BDRVVVFATState* s,
if (mapping->mode & MODE_DIRECTORY) {
mapping->begin = cluster;
if(read_directory(s, i)) {
- fprintf(stderr, "Could not read directory %s\n",
- mapping->path);
+ error_setg(errp, "Could not read directory %s",
+ mapping->path);
return -1;
}
mapping = array_get(&(s->mapping), i);
@@ -919,9 +920,10 @@ static int init_directories(BDRVVVFATState* s,
cluster = mapping->end;
if(cluster > s->cluster_count) {
- fprintf(stderr,"Directory does not fit in FAT%d (capacity %.2f MB)\n",
- s->fat_type, s->sector_count / 2000.0);
- return -EINVAL;
+ error_setg(errp,
+ "Directory does not fit in FAT%d (capacity %.2f MB)",
+ s->fat_type, s->sector_count / 2000.0);
+ return -1;
}
/* fix fat for entry */
@@ -1169,7 +1171,7 @@ DLOG(if (stderr == NULL) {
bs->total_sectors = cyls * heads * secs;
- if (init_directories(s, dirname, heads, secs)) {
+ if (init_directories(s, dirname, heads, secs, errp)) {
ret = -EIO;
goto fail;
}