[Libguestfs] [nbdkit PATCH 7/7] nbd: Implement structured replies
Eric Blake
eblake at redhat.com
Tue Apr 23 13:56:22 UTC 2019
On 4/22/19 9:17 PM, Eric Blake wrote:
> On 4/22/19 7:50 PM, Eric Blake wrote:
>> Time to enhance the nbd plugin to request structured replies from the
>> server. For now, deal only with structured reads. The server can now
>> return sparse reads, even though we need nbdkit version 3 before we
>> can in turn return sparse reads back to the client.
>>
>> + if (rep.structured.length) {
>> + /* Special case for OFFSET_DATA in order to read tail of chunk
>> + directly into final buffer later on */
>> + len = (rep.structured.type == NBD_REPLY_TYPE_OFFSET_DATA &&
>> + rep.structured.length > sizeof offset) ? sizeof offset :
>> + rep.structured.length;
>> + buf = malloc (len);
> ...
>
>> + case NBD_REPLY_TYPE_OFFSET_DATA:
>> + if (rep.structured.length <= sizeof offset) {
>> + nbdkit_error ("structured reply OFFSET_DATA too small");
>> + free (buf);
>> + return nbd_mark_dead (h);
>> + }
>> + memcpy (&offset, buf, sizeof offset);
>> + offset = be64toh (offset);
>> + len = rep.structured.length - sizeof offset;
>> + break;
>
> leaks buf
These leaks would be a lot easier to avoid if we promote CLEANUP_FREE
out of server/internal.h into common/ for use by all filters and in-tree
plugins. Maybe I'll tackle that first (I've got it cleaned locally by
adding more free(buf) calls as appropriate, but without CLEANUP_FREE, it
gets even hairier when I also want to allocate something for .extents
handling that needs freeing in just as many places).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190423/d465de88/attachment.sig>
More information about the Libguestfs
mailing list