Bug 1447590 - qemu curl driver hangs in a particular libguestfs file download
Summary: qemu curl driver hangs in a particular libguestfs file download
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm-rhev
Version: 7.4
Hardware: x86_64
OS: Linux
Target Milestone: rc
: ---
Assignee: Paolo Bonzini
QA Contact: Suqin Huang
Whiteboard: V2V
Depends On:
Blocks: TRACKER-bugs-affecting-libguestfs 1449577 1437393
TreeView+ depends on / blocked
Reported: 2017-05-03 09:23 UTC by kuwei@redhat.com
Modified: 2017-08-02 04:38 UTC (History)
15 users (show)

Fixed In Version: qemu-kvm-rhev-2.9.0-6.el7
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2017-08-02 04:38:29 UTC
Target Upstream Version:

Attachments (Terms of Use)
v2v.log (89.15 KB, text/plain)
2017-05-03 09:23 UTC, kuwei@redhat.com
no flags Details
v2v.log for one hour (89.22 KB, text/plain)
2017-05-03 10:49 UTC, kuwei@redhat.com
no flags Details

System ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2017:2392 normal SHIPPED_LIVE Important: qemu-kvm-rhev security, bug fix, and enhancement update 2017-08-01 20:04:36 UTC

Description kuwei@redhat.com 2017-05-03 09:23:21 UTC
Created attachment 1275853 [details]

Description of problem:
Failed to convert guest from vmware to kvm by virt-v2v with qemu-img-rhev-2.9.0-2.el7.x86_64

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1:Convert a rhel7.3 guest from vmware to kvm,details pls refer to attachment v2vlog 
#virt-v2v -ic vpx://root@ esx5.5-rhel7.3-x86_64  --password-file /tmp/passwd -on test
[   0.0] Opening the source -i libvirt -ic vpx://root@ esx5.5-rhel7.3-x86_64
[   1.3] Creating an overlay to protect the source from being modified
[   1.7] Initializing the target -o libvirt -os default
[   1.7] Opening the overlay
Result:  the above conversion  can't be finished 

Addition info
1.It is works fine below packages it:

2.A same bug i think :Bug 1430287

Comment 3 kuwei@redhat.com 2017-05-03 10:49:53 UTC
Created attachment 1275872 [details]
v2v.log for one hour

Comment 4 Richard W.M. Jones 2017-05-03 13:34:12 UTC
I am able to reproduce this with:

* qemu-kvm-rhev-2.9.0-2.el7.x86_64
* Upstream qemu (e619b14746e5d)

Does NOT reproduce with:

* qemu-kvm-rhev-2.8.0-6.el7.x86_64

Also (as kuwei also reported to me on IRC) the file is stuck at 8K in
the download.

So it's an actual bug in upstream qemu.

I'm going to bisect this to see if I can isolate a particular commit.

Comment 5 Richard W.M. Jones 2017-05-03 14:54:38 UTC
ba3186c4e473963ba83b5792f3d02d4ac0a76ba5 is the first bad commit
commit ba3186c4e473963ba83b5792f3d02d4ac0a76ba5
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Feb 22 19:07:23 2017 +0100

    curl: do not use aio_context_acquire/release
    Now that all bottom halves and callbacks take care of taking the
    AioContext lock, we can migrate some users away from it and to a
    specific QemuMutex or CoMutex.
    Protect BDRVCURLState access with a QemuMutex.
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Message-id: 20170222180725.28611-2-pbonzini@redhat.com
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>

:040000 040000 1a66f1866953d188bdd51318f470c43f6aedf06e d0f24bf0226fa8cc5d8311d74c5542fa225638ea M	block

Reverting this commit fixes the problem.

Comment 6 Richard W.M. Jones 2017-05-03 15:43:00 UTC
Started a discussion upstream:


As this is a clear regression, I'm marking it as such.

Comment 8 Richard W.M. Jones 2017-05-03 16:03:28 UTC
Paolo posted a fix which worked for me:


Comment 9 Richard W.M. Jones 2017-05-10 14:57:13 UTC
There have been several iterations of this patch.  The latest
I am testing is:


Comment 10 Paolo Bonzini 2017-05-10 16:03:03 UTC
Patches posted:
[PATCH v2 0/7] curl: locking cleanups/fixes, coroutine conversion, remove aio_poll
Message-Id: <20170510143205.32013-1-pbonzini@redhat.com>

Comment 14 Suqin Huang 2017-06-07 04:22:07 UTC
Result: Pass

# virt-v2v -ic vpx://root@ esx5.5-rhel7.3-x86_64  --password-file /tmp/passwd -on shuang
[   0.0] Opening the source -i libvirt -ic vpx://root@ esx5.5-rhel7.3-x86_64
[   1.2] Creating an overlay to protect the source from being modified
[   1.6] Initializing the target -o libvirt -os default
[   1.6] Opening the overlay
[  26.6] Inspecting the overlay
[ 179.2] Checking for sufficient free disk space in the guest
[ 179.2] Estimating space required on target for each disk
[ 179.2] Converting Red Hat Enterprise Linux Server 7.3 (Maipo) to run on KVM
virt-v2v: This guest has virtio drivers installed.
[1615.0] Mapping filesystem data to avoid copying unused and blank areas
[1641.0] Closing the overlay
[1641.2] Checking if the guest needs BIOS or UEFI to boot
[1641.2] Assigning disks to buses
[1641.2] Copying disk 1/1 to /var/lib/libvirt/images/shuang-sda (raw)
[2316.9] Creating output metadata
Pool default refreshed

Domain shuang defined from /tmp/v2vlibvirt7f19ad.xml

Package: qemu-img-rhev-2.9.0-8.el7.x86_64.rpm

Comment 15 Suqin Huang 2017-06-07 04:25:34 UTC
According to comment14, update bug status to VERIFIED

Comment 17 errata-xmlrpc 2017-08-02 04:38:29 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.