[Libguestfs] [libnbd PATCH] python: Accept buffers in nbd.Buffer.from_bytearray()

Eric Blake eblake at redhat.com
Thu May 26 14:28:51 UTC 2022


On Thu, May 26, 2022 at 09:16:18AM +0100, Richard W.M. Jones wrote:
...
> > But Python already has a handy way to convert any object that supports
> > the buffer interface into a bytearray.  Using it, we can now support
> > many more parameters; passing in b"1"*9 now correctly creates a 9-byte
> > buffer rather than failing.  And the error message for a non-buffer
> > also improves:
> > 
> > $ ./run nbdsh -c 'nbd.Buffer.from_bytearray(h)'
> > Traceback (most recent call last):
> > ...
> >   File "/home/eblake/libnbd/python/nbd.py", line 132, in from_bytearray
> >     o = libnbdmod.aio_buffer_from_bytearray(ba)
> > TypeError: cannot convert 'NBD' object to bytearray
> > 
> > (A reliable TypeError is always better than an unexpected MemoryError
> > or segfault).
> > ---

> 
> Reviewed-by: Richard W.M. Jones <rjones at redhat.com>
> 
> Thanks!

Now in as commit d477f7c, after also adjusting python unit test 580 to
cover some of the now-permitted cases.  There's still probably some
efficiency gains to be had by reworking our aio buffers to use
Python's memoryview objects for zero-copy where possible (similar to
the work we did for Go in 7f5767e3), but that will require a Python
API change and more work, so I'm not tackling it in the short term.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


More information about the Libguestfs mailing list