Bug 1595173

Summary: blockdev-create is blocking
Product: Red Hat Enterprise Linux 7 Reporter: Kevin Wolf <kwolf>
Component: qemu-kvm-rhevAssignee: Kevin Wolf <kwolf>
Status: CLOSED ERRATA QA Contact: Gu Nini <ngu>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.6CC: chayang, coli, juzhang, michen, ngu, virt-maint, xianwang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-rhev-2.12.0-8.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-11-01 11:10:36 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Kevin Wolf 2018-06-26 09:47:09 UTC
The patch series for bug 1513543 adds the external API for the blockdev-create job, but even though it is using the job infrastructure, we noticed that it doesn't actually run in the background, but preallocation can block the monitor and the VM for quite a long time.

The solution for this is making bdrv_truncate() asynchronous, but this requires some more work upstream, so I decided to get the new API in first and track the blocking behaviour separately with this bug.

Comment 3 Miroslav Rezanina 2018-07-24 14:36:09 UTC
Fix included in qemu-kvm-rhev-2.12.0-8.el7

Comment 5 Gu Nini 2018-07-26 05:46:39 UTC
Reproduced the bug on qemu-kvm-rhev-2.12.0-8.el7.x86_64; verified the bug on qemu-kvm-rhev-2.12.0-8.el7.x86_64, i.e. the 'blockdev-create' job runs in background now:

{"execute":"blockdev-create","arguments":{"options":{"driver":"qcow2","file":"driveimage3","size":10737418240,"preallocation":"full"},"job-id":"job2"}}
{"timestamp": {"seconds": 1532583767, "microseconds": 938252}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job2"}}
{"timestamp": {"seconds": 1532583767, "microseconds": 938302}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job2"}}
{"return": {}}
************************************>> We can see the job can't be dismissed
{"execute":"job-dismiss","arguments":{"id":"job2"}}
{"error": {"class": "GenericError", "desc": "Job 'job2' in state 'running' cannot accept command verb 'dismiss'"}}
************************************
{"timestamp": {"seconds": 1532583829, "microseconds": 110505}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "job2"}}
{"timestamp": {"seconds": 1532583829, "microseconds": 110555}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "job2"}}
{"timestamp": {"seconds": 1532583829, "microseconds": 110582}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job2"}}
{"execute":"job-dismiss","arguments":{"id":"job2"}}
{"timestamp": {"seconds": 1532583872, "microseconds": 979462}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job2"}}
{"return": {}}

Comment 6 errata-xmlrpc 2018-11-01 11:10:36 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.

https://access.redhat.com/errata/RHBA-2018:3443