[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