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 = {