kvm tools: Tune up ops in 'struct disk_image_operations'
Make read/write ops in 'struct disk_image_operations'
always return the number of bytes read/written and close/flush
ops return int.
Signed-off-by: Asias He <asias.hejun@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
diff --git a/disk/qcow.c b/disk/qcow.c
index b29efb4..956775e 100644
--- a/disk/qcow.c
+++ b/disk/qcow.c
@@ -103,7 +103,7 @@
goto out;
}
-static int qcow1_read_sector(struct disk_image *disk, u64 sector, void *dst, u32 dst_len)
+static ssize_t qcow1_read_sector(struct disk_image *disk, u64 sector, void *dst, u32 dst_len)
{
struct qcow *q = disk->priv;
struct qcow_header *header = q->header;
@@ -129,7 +129,7 @@
sector += (nr >> SECTOR_SHIFT);
}
- return 0;
+ return dst_len;
}
static inline u64 file_size(int fd)
@@ -291,7 +291,7 @@
return -1;
}
-static int qcow1_write_sector(struct disk_image *disk, u64 sector, void *src, u32 src_len)
+static ssize_t qcow1_write_sector(struct disk_image *disk, u64 sector, void *src, u32 src_len)
{
struct qcow *q = disk->priv;
struct qcow_header *header = q->header;
@@ -317,33 +317,35 @@
offset += nr;
}
- return 0;
+ return nr_written;
}
-static int qcow1_nowrite_sector(struct disk_image *disk, u64 sector, void *src, u32 src_len)
+static ssize_t qcow1_nowrite_sector(struct disk_image *disk, u64 sector, void *src, u32 src_len)
{
/* I/O error */
return -1;
}
-static void qcow1_disk_close(struct disk_image *disk)
+static int qcow1_disk_close(struct disk_image *disk)
{
struct qcow *q;
if (!disk)
- return;
+ return 0;
q = disk->priv;
free(q->table.l1_table);
free(q->header);
free(q);
+
+ return 0;
}
static struct disk_image_operations qcow1_disk_readonly_ops = {
.read_sector = qcow1_read_sector,
.write_sector = qcow1_nowrite_sector,
- .close = qcow1_disk_close
+ .close = qcow1_disk_close,
};
static struct disk_image_operations qcow1_disk_ops = {