Message ID | 20180704112302.471456-2-vsementsov@virtuozzo.com |
---|---|
State | New |
Headers | show |
Series | nbd base:allocation several extents | expand |
On 07/04/2018 06:23 AM, Vladimir Sementsov-Ogievskiy wrote: > Call nbd_co_send_extents() with correct length parameter > (extent.length may be smaller than original length). Only matters for tracing purposes, but indeed worth an accurate trace. > > Also, switch length parameter type to uint32_t, to correspond with > request->len and similar nbd_co_send_bitmap(). No semantic impact. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > nbd/server.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/nbd/server.c b/nbd/server.c > index e52b76bd1a..ea5fe0eb33 100644 > --- a/nbd/server.c > +++ b/nbd/server.c > @@ -1910,7 +1910,7 @@ static int nbd_co_send_extents(NBDClient *client, uint64_t handle, > /* Get block status from the exported device and send it to the client */ > static int nbd_co_send_block_status(NBDClient *client, uint64_t handle, > BlockDriverState *bs, uint64_t offset, > - uint64_t length, bool last, > + uint32_t length, bool last, > uint32_t context_id, Error **errp) > { > int ret; > @@ -1922,7 +1922,8 @@ static int nbd_co_send_block_status(NBDClient *client, uint64_t handle, > client, handle, -ret, "can't get block status", errp); > } > > - return nbd_co_send_extents(client, handle, &extent, 1, length, last, > + return nbd_co_send_extents(client, handle, &extent, 1, > + be32_to_cpu(extent.length), last, be32_to_cpu() is necessary to undo the fact that extent is already encoded for transmission over the wire. Alternatively, blockstatus_to_extent_be() could be modified to return negative on error, or the total length encoded on success, or set the final length via a pointer parameter. But the next patch will probably deal with that more directly. This one is fine for 3.0, Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/nbd/server.c b/nbd/server.c index e52b76bd1a..ea5fe0eb33 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -1910,7 +1910,7 @@ static int nbd_co_send_extents(NBDClient *client, uint64_t handle, /* Get block status from the exported device and send it to the client */ static int nbd_co_send_block_status(NBDClient *client, uint64_t handle, BlockDriverState *bs, uint64_t offset, - uint64_t length, bool last, + uint32_t length, bool last, uint32_t context_id, Error **errp) { int ret; @@ -1922,7 +1922,8 @@ static int nbd_co_send_block_status(NBDClient *client, uint64_t handle, client, handle, -ret, "can't get block status", errp); } - return nbd_co_send_extents(client, handle, &extent, 1, length, last, + return nbd_co_send_extents(client, handle, &extent, 1, + be32_to_cpu(extent.length), last, context_id, errp); }
Call nbd_co_send_extents() with correct length parameter (extent.length may be smaller than original length). Also, switch length parameter type to uint32_t, to correspond with request->len and similar nbd_co_send_bitmap(). Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> --- nbd/server.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)