[Libguestfs] nbdkit: cow.c:591: cow_extents: Assertion `count > 0' failed.

Richard W.M. Jones rjones at redhat.com
Sat Jul 24 10:17:43 UTC 2021


Just noting this because I don't have time to look into it at the
moment.  I suspect (but don't have any evidence for) that this might
be an issue in the cacheextents filter.

nbdkit-1.27.2-1.fc35.x86_64
libnbd-1.9.2-1.fc35.x86_64

nbdkit is running against a web server with this command line:

nbdkit --exit-with-parent --foreground --newstyle \
       --pidfile /run/user/1000/v2vnbdkit.MHmNIZ/nbdkit1.pid \
       --unix /tmp/v2v.wxXvoj/in0 \
       --threads 16 \
       --selinux-label system_u:object_r:svirt_socket_t:s0 \
       -D nbdkit.backend.datapath=0 \
       --exportname / --verbose \
       --filter cow \
       --filter cacheextents \
       --filter retry \
       curl timeout=2000 \
            cookie-script=/tmp/v2vcse4d3ca.sh \
       	    cookie-script-renew=1500 \
	    sslverify=false \
       	    url=https://[redacted]

nbdinfo --map command failed:

$ nbdinfo --map nbd+unix:///?socket=in0 
nbdinfo: nbd_block_status: block-status: command failed: Transport endpoint is not connected

Looking at the nbdkit log:

nbdkit: debug: accepted connection
nbdkit: curl[7]: debug: cow: preconnect
nbdkit: curl[7]: debug: cacheextents: preconnect
nbdkit: curl[7]: debug: retry: preconnect
nbdkit: curl[7]: debug: curl: preconnect
nbdkit: curl[7]: debug: newstyle negotiation: flags: global 0x3
nbdkit: curl[7]: debug: newstyle negotiation: client flags: 0x3
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_STRUCTURED_REPLY: client requested structured replies
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_SET_META_CONTEXT: client requested export ''
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_SET_META_CONTEXT: set count: 1
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_SET_META_CONTEXT: set base:allocation
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_SET_META_CONTEXT: replying with base:allocation id 1
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_SET_META_CONTEXT: reply complete
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_GO: client requested export ''
nbdkit: curl[7]: debug: cow: open readonly=0 exportname="" tls=0
nbdkit: curl[7]: debug: cow: default_export readonly=0 tls=0
nbdkit: curl[7]: debug: cacheextents: default_export readonly=0 tls=0
nbdkit: curl[7]: debug: retry: default_export readonly=0 tls=0
nbdkit: curl[7]: debug: curl: default_export readonly=0 tls=0
nbdkit: curl[7]: debug: cacheextents: open readonly=1 exportname="" tls=0
nbdkit: curl[7]: debug: cacheextents: default_export readonly=1 tls=0
nbdkit: curl[7]: debug: retry: open readonly=1 exportname="" tls=0
nbdkit: curl[7]: debug: retry: default_export readonly=1 tls=0
nbdkit: curl[7]: debug: curl: open readonly=1 exportname="" tls=0
nbdkit: curl[7]: debug: curl: default_export readonly=1 tls=0
nbdkit: curl[7]: debug: content length: 12884901888
nbdkit: curl[7]: debug: accept range supported (for HTTP/HTTPS)
nbdkit: curl[7]: debug: curl: open returned handle 0x7ff9840012b0
nbdkit: curl[7]: debug: retry: open returned handle 0x7ff98400c370
nbdkit: curl[7]: debug: cacheextents: open returned handle 0x7ff992ffd4c0
nbdkit: curl[7]: debug: cow: open returned handle 0x7ff992ffd4c0
nbdkit: curl[7]: debug: curl: prepare readonly=1
nbdkit: curl[7]: debug: retry: prepare readonly=1
nbdkit: curl[7]: debug: cacheextents: prepare readonly=1
nbdkit: curl[7]: debug: cow: prepare readonly=0
nbdkit: curl[7]: debug: cacheextents: get_size
nbdkit: curl[7]: debug: retry: get_size
nbdkit: curl[7]: debug: curl: get_size
nbdkit: curl[7]: debug: cow: underlying file size: 12884901888
nbdkit: curl[7]: debug: bitmap resized to 786432 bytes
nbdkit: curl[7]: debug: cow: get_size
nbdkit: curl[7]: debug: cow: underlying file size: 12884901888
nbdkit: curl[7]: debug: bitmap resized to 786432 bytes
nbdkit: curl[7]: debug: cow: can_write
nbdkit: curl[7]: debug: cow: can_zero
nbdkit: curl[7]: debug: cacheextents: can_zero
nbdkit: curl[7]: debug: cow: can_fast_zero
nbdkit: curl[7]: debug: cow: can_trim
nbdkit: curl[7]: debug: cow: can_fua
nbdkit: curl[7]: debug: cow: can_flush
nbdkit: curl[7]: debug: cow: is_rotational
nbdkit: curl[7]: debug: cacheextents: is_rotational
nbdkit: curl[7]: debug: retry: is_rotational
nbdkit: curl[7]: debug: curl: is_rotational
nbdkit: curl[7]: debug: cow: can_multi_conn
nbdkit: curl[7]: debug: cow: can_cache
nbdkit: curl[7]: debug: cacheextents: can_cache
nbdkit: curl[7]: debug: retry: can_cache
nbdkit: curl[7]: debug: curl: can_cache
nbdkit: curl[7]: debug: cow: can_extents
nbdkit: curl[7]: debug: newstyle negotiation: flags: export 0x5ad
nbdkit: curl[7]: debug: newstyle negotiation: NBD_OPT_GO: ignoring NBD_INFO_* request 3 (NBD_INFO_BLOCK_SIZE)
nbdkit: curl[7]: debug: handshake complete, processing requests serially
nbdkit: curl[7]: debug: cacheextents: can_extents
nbdkit: curl[7]: debug: retry: can_extents
nbdkit: curl[7]: debug: curl: can_extents
nbdkit: cow.c:591: cow_extents: Assertion `count > 0' failed.

Rich.

-- 
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