[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v2 09/13] qed: Convert to bdrv_co_pwrite_zeroes()
From: |
Eric Blake |
Subject: |
[Qemu-block] [PATCH v2 09/13] qed: Convert to bdrv_co_pwrite_zeroes() |
Date: |
Wed, 1 Jun 2016 15:10:09 -0600 |
Another step on our continuing quest to switch to byte-based
interfaces.
Kill an abuse of the comma operator while at it (fortunately,
the semantics were still right). Also, the test for requests
not aligned to clusters should be applied always, not just
when a backing file is present.
Signed-off-by: Eric Blake <address@hidden>
---
block/qed.c | 33 +++++++++++++++------------------
1 file changed, 15 insertions(+), 18 deletions(-)
diff --git a/block/qed.c b/block/qed.c
index 0ab5b40..45ec13d 100644
--- a/block/qed.c
+++ b/block/qed.c
@@ -1419,7 +1419,7 @@ typedef struct {
bool done;
} QEDWriteZeroesCB;
-static void coroutine_fn qed_co_write_zeroes_cb(void *opaque, int ret)
+static void coroutine_fn qed_co_pwrite_zeroes_cb(void *opaque, int ret)
{
QEDWriteZeroesCB *cb = opaque;
@@ -1430,10 +1430,10 @@ static void coroutine_fn qed_co_write_zeroes_cb(void
*opaque, int ret)
}
}
-static int coroutine_fn bdrv_qed_co_write_zeroes(BlockDriverState *bs,
- int64_t sector_num,
- int nb_sectors,
- BdrvRequestFlags flags)
+static int coroutine_fn bdrv_qed_co_pwrite_zeroes(BlockDriverState *bs,
+ int64_t offset,
+ int count,
+ BdrvRequestFlags flags)
{
BlockAIOCB *blockacb;
BDRVQEDState *s = bs->opaque;
@@ -1441,25 +1441,22 @@ static int coroutine_fn
bdrv_qed_co_write_zeroes(BlockDriverState *bs,
QEMUIOVector qiov;
struct iovec iov;
- /* Refuse if there are untouched backing file sectors */
- if (bs->backing) {
- if (qed_offset_into_cluster(s, sector_num * BDRV_SECTOR_SIZE) != 0) {
- return -ENOTSUP;
- }
- if (qed_offset_into_cluster(s, nb_sectors * BDRV_SECTOR_SIZE) != 0) {
- return -ENOTSUP;
- }
+ /* Fall back if the request is not */
+ if (qed_offset_into_cluster(s, offset) ||
+ qed_offset_into_cluster(s, count)) {
+ return -ENOTSUP;
}
/* Zero writes start without an I/O buffer. If a buffer becomes necessary
* then it will be allocated during request processing.
*/
- iov.iov_base = NULL,
- iov.iov_len = nb_sectors * BDRV_SECTOR_SIZE,
+ iov.iov_base = NULL;
+ iov.iov_len = count;
qemu_iovec_init_external(&qiov, &iov, 1);
- blockacb = qed_aio_setup(bs, sector_num, &qiov, nb_sectors,
- qed_co_write_zeroes_cb, &cb,
+ blockacb = qed_aio_setup(bs, offset >> BDRV_SECTOR_BITS, &qiov,
+ count >> BDRV_SECTOR_BITS,
+ qed_co_pwrite_zeroes_cb, &cb,
QED_AIOCB_WRITE | QED_AIOCB_ZERO);
if (!blockacb) {
return -EIO;
@@ -1664,7 +1661,7 @@ static BlockDriver bdrv_qed = {
.bdrv_co_get_block_status = bdrv_qed_co_get_block_status,
.bdrv_aio_readv = bdrv_qed_aio_readv,
.bdrv_aio_writev = bdrv_qed_aio_writev,
- .bdrv_co_write_zeroes = bdrv_qed_co_write_zeroes,
+ .bdrv_co_pwrite_zeroes = bdrv_qed_co_pwrite_zeroes,
.bdrv_truncate = bdrv_qed_truncate,
.bdrv_getlength = bdrv_qed_getlength,
.bdrv_get_info = bdrv_qed_get_info,
--
2.5.5
- [Qemu-block] [PATCH v2 01/13] iscsi: Use block size as minimum zero/discard alignment, (continued)
- [Qemu-block] [PATCH v2 01/13] iscsi: Use block size as minimum zero/discard alignment, Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 03/13] block: Add .bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 02/13] block: Track write zero limits in bytes, Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 06/13] qcow2: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 05/13] iscsi: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 13/13] block: Kill bdrv_co_write_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 08/13] gluster: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 04/13] block: Switch bdrv_write_zeroes() to byte interface, Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 07/13] blkreplay: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 09/13] qed: Convert to bdrv_co_pwrite_zeroes(),
Eric Blake <=
- [Qemu-block] [PATCH v2 10/13] raw-posix: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 12/13] vmdk: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- [Qemu-block] [PATCH v2 11/13] raw_bsd: Convert to bdrv_co_pwrite_zeroes(), Eric Blake, 2016/06/01
- Re: [Qemu-block] [PATCH v2 00/13] Kill sector-based write_zeroes, Kevin Wolf, 2016/06/02