diff options
author | Eric Blake <eblake@redhat.com> | 2017-09-05 14:11:14 -0500 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2017-09-06 10:11:54 -0500 |
commit | 030fa7f6f950f5c8963f1dee8e6bb7387ed86a99 (patch) | |
tree | c604ccc0c3afbfa97fa60839fce99619bf20e457 /block | |
parent | e8ffaa311080a570a7c86d03c139c160cd11a831 (diff) |
nbd: Use new qio_channel_*_all() functions
Rather than open-coding our own read/write-all functions, we
can make use of the recently-added qio code. It slightly
changes the error message in one of the iotests.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20170905191114.5959-4-eblake@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/nbd-client.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/block/nbd-client.c b/block/nbd-client.c index f0dbea24d3..ee7f758e68 100644 --- a/block/nbd-client.c +++ b/block/nbd-client.c @@ -121,7 +121,7 @@ static int nbd_co_send_request(BlockDriverState *bs, QEMUIOVector *qiov) { NBDClientSession *s = nbd_get_client_session(bs); - int rc, ret, i; + int rc, i; qemu_co_mutex_lock(&s->send_mutex); while (s->in_flight == MAX_NBD_REQUESTS) { @@ -156,9 +156,9 @@ static int nbd_co_send_request(BlockDriverState *bs, qio_channel_set_cork(s->ioc, true); rc = nbd_send_request(s->ioc, request); if (rc >= 0 && !s->quit) { - ret = nbd_rwv(s->ioc, qiov->iov, qiov->niov, request->len, false, - NULL); - if (ret != request->len) { + assert(request->len == iov_size(qiov->iov, qiov->niov)); + if (qio_channel_writev_all(s->ioc, qiov->iov, qiov->niov, + NULL) < 0) { rc = -EIO; } } @@ -184,7 +184,6 @@ static void nbd_co_receive_reply(NBDClientSession *s, QEMUIOVector *qiov) { int i = HANDLE_TO_INDEX(s, request->handle); - int ret; /* Wait until we're woken up by nbd_read_reply_entry. */ s->requests[i].receiving = true; @@ -195,9 +194,9 @@ static void nbd_co_receive_reply(NBDClientSession *s, reply->error = EIO; } else { if (qiov && reply->error == 0) { - ret = nbd_rwv(s->ioc, qiov->iov, qiov->niov, request->len, true, - NULL); - if (ret != request->len) { + assert(request->len == iov_size(qiov->iov, qiov->niov)); + if (qio_channel_readv_all(s->ioc, qiov->iov, qiov->niov, + NULL) < 0) { reply->error = EIO; s->quit = true; } |