From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48334) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bFkRI-0002Ro-23 for qemu-devel@nongnu.org; Wed, 22 Jun 2016 11:51:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bFkRD-0002CU-2A for qemu-devel@nongnu.org; Wed, 22 Jun 2016 11:51:39 -0400 From: Eric Blake Date: Wed, 22 Jun 2016 09:51:10 -0600 Message-Id: <1466610674-23157-14-git-send-email-eblake@redhat.com> In-Reply-To: <1466610674-23157-1-git-send-email-eblake@redhat.com> References: <1466610674-23157-1-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH 13/17] nbd: Switch .bdrv_co_discard() to byte-based List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, kwolf@redhat.com, Paolo Bonzini , Max Reitz Another step towards killing off sector-based block APIs. While at it, call directly into nbd-client.c instead of having a pointless trivial wrapper in nbd.c. Signed-off-by: Eric Blake --- block/nbd-client.h | 3 +-- block/nbd-client.c | 11 ++++++----- block/nbd.c | 12 +++--------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/block/nbd-client.h b/block/nbd-client.h index c618dad..62dec33 100644 --- a/block/nbd-client.h +++ b/block/nbd-client.h @@ -44,8 +44,7 @@ int nbd_client_init(BlockDriverState *bs, Error **errp); void nbd_client_close(BlockDriverState *bs); -int nbd_client_co_discard(BlockDriverState *bs, int64_t sector_num, - int nb_sectors); +int nbd_client_co_pdiscard(BlockDriverState *bs, int64_t offset, int count); int nbd_client_co_flush(BlockDriverState *bs); int nbd_client_co_writev(BlockDriverState *bs, int64_t sector_num, int nb_sectors, QEMUIOVector *qiov, int flags); diff --git a/block/nbd-client.c b/block/nbd-client.c index 5841a32..070bb9d 100644 --- a/block/nbd-client.c +++ b/block/nbd-client.c @@ -295,19 +295,20 @@ int nbd_client_co_flush(BlockDriverState *bs) return -reply.error; } -int nbd_client_co_discard(BlockDriverState *bs, int64_t sector_num, - int nb_sectors) +int nbd_client_co_pdiscard(BlockDriverState *bs, int64_t offset, int count) { NbdClientSession *client = nbd_get_client_session(bs); - struct nbd_request request = { .type = NBD_CMD_TRIM }; + struct nbd_request request = { + .type = NBD_CMD_TRIM, + .from = offset, + .len = count, + }; struct nbd_reply reply; ssize_t ret; if (!(client->nbdflags & NBD_FLAG_SEND_TRIM)) { return 0; } - request.from = sector_num * 512; - request.len = nb_sectors * 512; nbd_coroutine_start(client, &request); ret = nbd_co_send_request(bs, &request, NULL); diff --git a/block/nbd.c b/block/nbd.c index 8a13078..42cae0e 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -360,12 +360,6 @@ static void nbd_refresh_limits(BlockDriverState *bs, Error **errp) bs->bl.max_transfer = NBD_MAX_BUFFER_SIZE; } -static int nbd_co_discard(BlockDriverState *bs, int64_t sector_num, - int nb_sectors) -{ - return nbd_client_co_discard(bs, sector_num, nb_sectors); -} - static void nbd_close(BlockDriverState *bs) { nbd_client_close(bs); @@ -448,7 +442,7 @@ static BlockDriver bdrv_nbd = { .bdrv_co_writev_flags = nbd_client_co_writev, .bdrv_close = nbd_close, .bdrv_co_flush_to_os = nbd_co_flush, - .bdrv_co_discard = nbd_co_discard, + .bdrv_co_pdiscard = nbd_client_co_pdiscard, .bdrv_refresh_limits = nbd_refresh_limits, .bdrv_getlength = nbd_getlength, .bdrv_detach_aio_context = nbd_detach_aio_context, @@ -466,7 +460,7 @@ static BlockDriver bdrv_nbd_tcp = { .bdrv_co_writev_flags = nbd_client_co_writev, .bdrv_close = nbd_close, .bdrv_co_flush_to_os = nbd_co_flush, - .bdrv_co_discard = nbd_co_discard, + .bdrv_co_pdiscard = nbd_client_co_pdiscard, .bdrv_refresh_limits = nbd_refresh_limits, .bdrv_getlength = nbd_getlength, .bdrv_detach_aio_context = nbd_detach_aio_context, @@ -484,7 +478,7 @@ static BlockDriver bdrv_nbd_unix = { .bdrv_co_writev_flags = nbd_client_co_writev, .bdrv_close = nbd_close, .bdrv_co_flush_to_os = nbd_co_flush, - .bdrv_co_discard = nbd_co_discard, + .bdrv_co_pdiscard = nbd_client_co_pdiscard, .bdrv_refresh_limits = nbd_refresh_limits, .bdrv_getlength = nbd_getlength, .bdrv_detach_aio_context = nbd_detach_aio_context, -- 2.5.5