OSDN Git Service

block: Use blk_co_pwritev() in blk_co_write_zeroes()
authorKevin Wolf <kwolf@redhat.com>
Tue, 8 Mar 2016 12:47:53 +0000 (13:47 +0100)
committerKevin Wolf <kwolf@redhat.com>
Thu, 17 Mar 2016 15:30:00 +0000 (16:30 +0100)
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/block-backend.c

index 972a617..dca21d1 100644 (file)
@@ -1462,12 +1462,13 @@ void *blk_aio_get(const AIOCBInfo *aiocb_info, BlockBackend *blk,
 int coroutine_fn blk_co_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;
+    if (nb_sectors < 0 || nb_sectors > BDRV_REQUEST_MAX_SECTORS) {
+        return -EINVAL;
     }
 
-    return bdrv_co_write_zeroes(blk_bs(blk), sector_num, nb_sectors, flags);
+    return blk_co_pwritev(blk, sector_num << BDRV_SECTOR_BITS,
+                          nb_sectors << BDRV_SECTOR_BITS, NULL,
+                          BDRV_REQ_ZERO_WRITE);
 }
 
 int blk_write_compressed(BlockBackend *blk, int64_t sector_num,