aboutsummaryrefslogtreecommitdiffstats
path: root/tools/blktap
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-03-09 09:48:45 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-03-09 09:48:45 +0000
commit19801a52bfdbf48bdaa155bd9bd4b69c28eabd25 (patch)
treef870644f6625b9431d4345ce6625303f09d1219d /tools/blktap
parent2441e7179c0ffe09dcc9e3fa2276917594760bbd (diff)
downloadxen-19801a52bfdbf48bdaa155bd9bd4b69c28eabd25.tar.gz
xen-19801a52bfdbf48bdaa155bd9bd4b69c28eabd25.tar.bz2
xen-19801a52bfdbf48bdaa155bd9bd4b69c28eabd25.zip
blktap: Fix compile warnings in block-qcow2.c
Signed-off-by: Yosuke Iwamatsu <y-iwamatsu@ab.jp.nec.com>
Diffstat (limited to 'tools/blktap')
-rw-r--r--tools/blktap/drivers/block-qcow2.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/tools/blktap/drivers/block-qcow2.c b/tools/blktap/drivers/block-qcow2.c
index 744022697c..b0392e1802 100644
--- a/tools/blktap/drivers/block-qcow2.c
+++ b/tools/blktap/drivers/block-qcow2.c
@@ -1984,6 +1984,7 @@ int qcow2_create(const char *filename, uint64_t total_size,
const char *backing_file, int flags)
{
int fd, header_size, backing_filename_len, l1_size, i, shift, l2_bits;
+ int ret = 0;
QCowHeader header;
uint64_t tmp, offset;
QCowCreateState s1, *s = &s1;
@@ -2042,25 +2043,37 @@ int qcow2_create(const char *filename, uint64_t total_size,
create_refcount_update(s, s->refcount_block_offset, s->cluster_size);
/* write all the data */
- write(fd, &header, sizeof(header));
+ ret = write(fd, &header, sizeof(header));
+ if (ret < 0)
+ goto out;
if (backing_file) {
- write(fd, backing_file, backing_filename_len);
+ ret = write(fd, backing_file, backing_filename_len);
+ if (ret < 0)
+ goto out;
}
lseek(fd, s->l1_table_offset, SEEK_SET);
tmp = 0;
for(i = 0;i < l1_size; i++) {
- write(fd, &tmp, sizeof(tmp));
+ ret = write(fd, &tmp, sizeof(tmp));
+ if (ret < 0)
+ goto out;
}
lseek(fd, s->refcount_table_offset, SEEK_SET);
- write(fd, s->refcount_table, s->cluster_size);
+ ret = write(fd, s->refcount_table, s->cluster_size);
+ if (ret < 0)
+ goto out;
lseek(fd, s->refcount_block_offset, SEEK_SET);
- write(fd, s->refcount_block, s->cluster_size);
+ ret = write(fd, s->refcount_block, s->cluster_size);
+ if (ret < 0)
+ goto out;
+ ret = 0;
+ out:
qemu_free(s->refcount_table);
qemu_free(s->refcount_block);
close(fd);
- return 0;
+ return ret;
}