On Sat, Aug 4, 2018 at 10:58 PM Nir Soffer <nsof...@redhat.com> wrote:
> On Sat, Aug 4, 2018 at 4:04 PM Richard W.M. Jones <rjo...@redhat.com> > wrote: > >> This is only lightly tested (against just qemu NBD client), and the >> code might be structured a little better as the >> _negotiate_handshake_newstyle_options function has now grown to be >> huge. Anyway works for me. >> > > Works for my python nbd client: > > $ rm -f /tmp/nbd.sock && src/nbdkit -f > plugins/file/.libs/nbdkit-file-plugin.so file=test.raw -e export -U > /tmp/nbd.sock > > $ python -c "import logging; logging.basicConfig(level=logging.DEBUG); > from ovirt_imageio_common import nbd; c = nbd.Client('/tmp/nbd.sock', > 'export'); c.write(1024**2, 'it works'); print c.read(1024**2, 8)" > INFO:nbd:Connecting to '/tmp/nbd.sock' 'export' > DEBUG:nbd:Received server flags: 3 > DEBUG:nbd:Sending client flags: 1: > DEBUG:nbd:Sending option: 'IHAVEOPT\x00\x00\x00\x07\x00\x00\x00\x0c' data: > bytearray(b'\x00\x00\x00\x06export\x00\x00') > DEBUG:nbd:Received reply [magic=3e889045565a9 option=7 type=3 len=12] > DEBUG:nbd:Received export info [size=1073741824 flags=109] > DEBUG:nbd:Received reply [magic=3e889045565a9 option=7 type=1 len=0] > INFO:nbd:Ready for transmission > it works > But we have a bug - server configure to allow access to "export", but allow access to the default empty "" export. $ python -c "import logging; logging.basicConfig(level=logging.DEBUG); from ovirt_imageio_common import nbd; c = nbd.Client('/tmp/nbd.sock', '')" INFO:nbd:Connecting to '/tmp/nbd.sock' '' DEBUG:nbd:Received server flags: 3 DEBUG:nbd:Sending client flags: 1: DEBUG:nbd:Sending option: 'IHAVEOPT\x00\x00\x00\x07\x00\x00\x00\x06' data: bytearray(b'\x00\x00\x00\x00\x00\x00') DEBUG:nbd:Received reply [magic=3e889045565a9 option=7 type=3 len=12] DEBUG:nbd:Received export info [size=6442450944 flags=109] DEBUG:nbd:Received reply [magic=3e889045565a9 option=7 type=1 len=0] INFO:nbd:Ready for transmission Same with qemu-nbd: $ qemu-nbd -k /tmp/nbd.sock -t -f raw test.raw --export-name export --cache=none --aio=native --discard=unmap --detect-zeroes=unmap $ python -c "import logging; logging.basicConfig(level=logging.DEBUG); from ovirt_imageio_common import nbd; c = nbd.Client('/tmp/nbd.sock', '')" INFO:nbd:Connecting to '/tmp/nbd.sock' '' DEBUG:nbd:Received server flags: 3 DEBUG:nbd:Sending client flags: 1: DEBUG:nbd:Sending option: 'IHAVEOPT\x00\x00\x00\x07\x00\x00\x00\x06' data: bytearray(b'\x00\x00\x00\x00\x00\x00') DEBUG:nbd:Received reply [magic=3e889045565a9 option=7 type=80000006 len=21] Traceback (most recent call last): File "<string>", line 1, in <module> File "ovirt_imageio_common/nbd.py", line 126, in __init__ self._newstyle_handshake(export_name) File "ovirt_imageio_common/nbd.py", line 181, in _newstyle_handshake self._receive_go_reply() File "ovirt_imageio_common/nbd.py", line 206, in _receive_go_reply .format(ERROR_REPLY[reply], message)) ovirt_imageio_common.nbd.Error: The requested export is not available [message=export '' not present])
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs