Description of problem: Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
Description of problem: As subject Version-Release number of selected component (if applicable): libvirt-6.0.0-13.virtcov.el8.x86_64 qemu-kvm-4.2.0-15.module+el8.2.0+6029+618ef2ec.x86_64 How reproducible: 100% Steps to Reproduce: 1. Prepare a running VM. Prepare nvme dest xml: # cat nvme.xml <disk type='nvme' device='disk'> <driver name='qemu' type='raw'/> <source type='pci' managed='yes' namespace='1'> <address domain='0x0000' bus='0x44' slot='0x00' function='0x0'/> </source> <target dev='sdb' bus='scsi'/> </disk> 2. Do blockcopy # virsh blockcopy new sda --xml /tmp/nvme.xml --transient-job error: Disconnected from qemu:///system due to end of file error: End of file while reading data: Input/output error Backtrace: (gdb) bt #0 0x00007f311ab3b48b in __strrchr_avx2 () at ../sysdeps/x86_64/multiarch/strrchr-avx2.S:54 #1 0x00007f311dcd0d1d in dm_task_set_name (dmt=dmt@entry=0x7f30ec003550, name=name@entry=0x0) at libdm-common.c:670 #2 0x00007f311ea5ca50 in virDevMapperGetTargetsImpl (path=0x0, devPaths_ret=devPaths_ret@entry=0x7f3112da7480, ttl=ttl@entry=32) at ../../src/util/virdevmapper.c:96 #3 0x00007f311ea5ce63 in virDevMapperGetTargets (path=<optimized out>, devPaths=devPaths@entry=0x7f3112da7480) at ../../src/util/virdevmapper.c:194 #4 0x00007f30e1778879 in qemuDomainNamespaceSetupDisk (vm=vm@entry=0x7f30b41a6500, src=src@entry=0x7f30ec008360) at ../../src/qemu/qemu_domain.c:15956 #5 0x00007f30e1778f7c in qemuDomainStorageSourceAccessModify (driver=driver@entry=0x7f30b4141d10, vm=vm@entry=0x7f30b41a6500, src=src@entry=0x7f30ec008360, flags=flags@entry=(QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_CHAIN | QEMU_DOMAIN_STORAGE_SOURCE_ACCESS_CHAIN_TOP)) at ../../src/qemu/qemu_domain.c:12051 #6 0x00007f30e17795ab in qemuDomainStorageSourceChainAccessAllow (driver=driver@entry=0x7f30b4141d10, vm=vm@entry=0x7f30b41a6500, src=src@entry=0x7f30ec008360) at ../../src/qemu/qemu_domain.c:12123 #7 0x00007f30e182fd9a in qemuDomainBlockCopyCommon (vm=0x7f30b41a6500, conn=<optimized out>, path=path@entry=0x7f30ec001350 "sda", mirrorsrc=0x7f30ec008360, bandwidth=bandwidth@entry=0, granularity=granularity@entry=0, buf_size=0, flags=4, keepParentLabel=false) at ../../src/qemu/qemu_driver.c:18401 #8 0x00007f30e1830e31 in qemuDomainBlockCopy (dom=0x7f30ec0018f0, disk=0x7f30ec001350 "sda", destxml=0x7f30ec001780 "<disk type='nvme' device='disk'>\n <driver name='qemu' type='raw'/>\n <source type='pci' managed='yes' namespace='1'>\n <address domain='0x0000' bus='0x44' slot='0x00' function='0x0'/>\n </source>\n "..., params=<optimized out>, nparams=<optimized out>, flags=4) at ../../src/qemu/qemu_driver.c:18678 #9 0x00007f311ed8a86f in virDomainBlockCopy (dom=dom@entry=0x7f30ec0018f0, disk=0x7f30ec001350 "sda", destxml=0x7f30ec001780 "<disk type='nvme' device='disk'>\n <driver name='qemu' type='raw'/>\n <source type='pci' managed='yes' namespace='1'>\n <address domain='0x0000' bus='0x44' slot='0x00' function='0x0'/>\n </source>\n "..., params=0x0, nparams=0, flags=4) at ../../src/libvirt-domain.c:10391 #10 0x0000564ff4ebee83 in remoteDispatchDomainBlockCopy (args=0x7f30ec001730, rerr=0x7f3112da78c0, msg=0x564ff64bc6d0, client=<optimized out>, server=0x564ff645ca90) at ./remote/remote_daemon_dispatch_stubs.h:3949 #11 0x0000564ff4ebee83 in remoteDispatchDomainBlockCopyHelper (server=0x564ff645ca90, client=<optimized out>, msg=0x564ff64bc6d0, rerr=0x7f3112da78c0, args=0x7f30ec001730, ret=0x0) at ./remote/remote_daemon_dispatch_stubs.h:3919 #12 0x00007f311ec5a9a1 in virNetServerProgramDispatchCall (msg=0x564ff64bc6d0, client=0x564ff64ac710, server=0x564ff645ca90, prog=0x564ff649aa20) at ../../src/rpc/virnetserverprogram.c:430 #13 0x00007f311ec5a9a1 in virNetServerProgramDispatch (prog=0x564ff649aa20, server=server@entry=0x564ff645ca90, client=client@entry=0x564ff64ac710, msg=msg@entry=0x564ff64bc6d0) at ../../src/rpc/virnetserverprogram.c:302 #14 0x00007f311ec62498 in virNetServerProcessMsg (srv=srv@entry=0x564ff645ca90, client=0x564ff64ac710, prog=<optimized out>, msg=0x564ff64bc6d0) at ../../src/rpc/virnetserver.c:136 #15 0x00007f311ec62905 in virNetServerHandleJob (jobOpaque=<optimized out>, opaque=0x564ff645ca90) at ../../src/rpc/virnetserver.c:153 #16 0x00007f311eaf6461 in virThreadPoolWorker (opaque=opaque@entry=0x564ff6441e30) at ../../src/util/virthreadpool.c:163 #17 0x00007f311eaf50bf in virThreadHelper (data=<optimized out>) at ../../src/util/virthread.c:196 #18 0x00007f311ada82de in start_thread (arg=<optimized out>) at pthread_create.c:486 #19 0x00007f311aad9e83 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Actual results: As above Expected results: NO SIGSEGV Additional info:
Created attachment 1671345 [details] libvirtd log, dest disk xml, vm xml, core backtrace
Patch proposed upstream: https://www.redhat.com/archives/libvir-list/2020-March/msg00683.html
Pushed upstream: aeb909bf9b qemu: Don't crash when getting targets for a multipath v6.1.0-190-gaeb909bf9b
To POST: http://post-office.corp.redhat.com/archives/rhvirt-patches/2020-March/msg00549.html
PASSed on v6.1.0-190-gaeb909bf9b
Clearing stale needinfo.
Verified Version: # rpm -q libvirt qemu-kvm libvirt-6.0.0-15.module+el8.3.0+6120+74650046.x86_64 qemu-kvm-4.2.0-16.module+el8.2.0+6092+4f2391c1.x86_64 Verified Steps: 1. Prepare a nvme disk destination xml: # cat nvme.xml <disk type='nvme' device='disk'> <driver name='qemu' type='raw'/> <source type='pci' managed='yes' namespace='1'> <address domain='0x0000' bus='0x44' slot='0x00' function='0x0'/> </source> <target dev='sdb' bus='scsi'/> </disk> 2. Blockcopy to nvme destination xml with --pivot. # virsh blockcopy new vda --xml nvme.xml --transient-job --pivot --verbose Block Copy: [100 %] Successfully pivoted # virsh dumpxml new | xmllint --xpath //disk - **VM disk pivot to the new disk source** 3. Clean the images created in step 2 and blockcopy to nvme destination xml with --finish # virsh blockcopy new vda --xml nvme.xml --transient-job --finish --verbose --wait Block Copy: [100 %] Successfully copied # virsh dumpxml new | xmllint --xpath //disk - **VM disk pivot to the old disk source** 4. Blockcopy to nvme destination xml with --pivot --reuse-external. virsh blockcopy new vda --xml nvme.xml --transient-job --pivot --reuse-external --verbose --wait Block Copy: [100 %] Successfully pivoted # virsh dumpxml new | xmllint --xpath //disk - **VM disk pivot to the new disk source**
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2020:2017