[Libguestfs] nbdkit & qemu 2.12: qemu-img: Protocol error: simple reply when structured reply chunk was expected

Richard W.M. Jones rjones at redhat.com
Sat Mar 23 11:42:50 UTC 2019


nbdkit (upstream 5a7a394c699) currently fails with qemu 2.12.0:

  $ ./nbdkit memory size=64M --run 'qemu-img convert $nbd /var/tmp/out'
  nbdkit: memory.2: error: invalid request: unknown command (7) ignored
  qemu-img: Protocol error: simple reply when structured reply chunk was expected

This was a bug in qemu which was fixed upstream quite a long time ago
by the commit I've attached at the end of this email.

Unfortunately RHEL 7.6 & 7.7 (qemu-kvm-rhev-2.12.0-25.el7) doesn't
contain the fix.  I wonder if we should:

(a) Not worry about it - it's Red Hat's problem.

(b) Try and get it fixed in RHEL.  I filed a BZ already but I guess it
won't be fixed any time soon: https://bugzilla.redhat.com/1692018

(c) Add a workaround in nbdkit.

I feel that we probably shouldn't be broken out of the box with RHEL
and CentOS 7.6 and 7.7, even though it's not an nbdkit (or qemu) bug.

Rich.

----------------------------------------------------------------------
89aa0d87634e2cb98517509dc8bdb876f26ecf8b is the first bad commit
commit 89aa0d87634e2cb98517509dc8bdb876f26ecf8b
Author: Vladimir Sementsov-Ogievskiy <vsementsov at virtuozzo.com>
Date:   Fri Apr 27 17:20:01 2018 +0300

    nbd/client: fix nbd_negotiate_simple_meta_context
    
    Initialize received variable. Otherwise, is is possible for server to
    answer without any contexts, but we will set context_id to something
    random (received_id is not initialized too) and return 1, which is
    wrong.
    
    To solve it, just initialize received to false. Initialize received_id
    too, just to make all possible checkers happy.
    
    Bug was introduced in 78a33ab58782efdb206de14 "nbd: BLOCK_STATUS for
    standard get_block_status function: client part" with the whole
    function.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov at virtuozzo.com>
    Message-Id: <20180427142002.21930-2-vsementsov at virtuozzo.com>
    Reviewed-by: Eric Blake <eblake at redhat.com>
    CC: qemu-stable at nongnu.org
    Signed-off-by: Eric Blake <eblake at redhat.com>

:040000 040000 9993feb118af1a9a59dbc8fe92015a324e93e557 14db90d621d6b7f1ee5ff97a0ca2cb92f6f2f7e9 M	nbd


-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v




More information about the Libguestfs mailing list