summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2016-03-08 13:47:50 +0100
committerKevin Wolf <kwolf@redhat.com>2016-03-17 15:47:57 +0100
commitfc1453cdfc815e879829ec1ebbc8a0667f86959c (patch)
treead5d8a9e580174dd899eb402a3a8e32124533116
parent5bd51196676b07d3f9ddb3086057b0d82ae95f36 (diff)
downloadfocaccia-qemu-fc1453cdfc815e879829ec1ebbc8a0667f86959c.tar.gz
focaccia-qemu-fc1453cdfc815e879829ec1ebbc8a0667f86959c.zip
block: Use blk_co_pwritev() in blk_write_zeroes()
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--block/block-backend.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/block/block-backend.c b/block/block-backend.c
index 475d27a4da..886c2f4023 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -744,7 +744,8 @@ static void blk_write_entry(void *opaque)
 }
 
 static int blk_rw(BlockBackend *blk, int64_t sector_num, uint8_t *buf,
-                  int nb_sectors, CoroutineEntry co_entry)
+                  int nb_sectors, CoroutineEntry co_entry,
+                  BdrvRequestFlags flags)
 {
     AioContext *aio_context;
     QEMUIOVector qiov;
@@ -766,6 +767,7 @@ static int blk_rw(BlockBackend *blk, int64_t sector_num, uint8_t *buf,
         .blk    = blk,
         .offset = sector_num << BDRV_SECTOR_BITS,
         .qiov   = &qiov,
+        .flags  = flags,
         .ret    = NOT_DONE,
     };
 
@@ -783,7 +785,7 @@ static int blk_rw(BlockBackend *blk, int64_t sector_num, uint8_t *buf,
 int blk_read(BlockBackend *blk, int64_t sector_num, uint8_t *buf,
              int nb_sectors)
 {
-    return blk_rw(blk, sector_num, buf, nb_sectors, blk_read_entry);
+    return blk_rw(blk, sector_num, buf, nb_sectors, blk_read_entry, 0);
 }
 
 int blk_read_unthrottled(BlockBackend *blk, int64_t sector_num, uint8_t *buf,
@@ -808,18 +810,15 @@ int blk_read_unthrottled(BlockBackend *blk, int64_t sector_num, uint8_t *buf,
 int blk_write(BlockBackend *blk, int64_t sector_num, const uint8_t *buf,
               int nb_sectors)
 {
-    return blk_rw(blk, sector_num, (uint8_t*) buf, nb_sectors, blk_write_entry);
+    return blk_rw(blk, sector_num, (uint8_t*) buf, nb_sectors,
+                  blk_write_entry, 0);
 }
 
 int blk_write_zeroes(BlockBackend *blk, int64_t sector_num,
                      int nb_sectors, BdrvRequestFlags flags)
 {
-    int ret = blk_check_request(blk, sector_num, nb_sectors);
-    if (ret < 0) {
-        return ret;
-    }
-
-    return bdrv_write_zeroes(blk_bs(blk), sector_num, nb_sectors, flags);
+    return blk_rw(blk, sector_num, NULL, nb_sectors, blk_write_entry,
+                  BDRV_REQ_ZERO_WRITE);
 }
 
 static void error_callback_bh(void *opaque)