Bug 1126909

Summary: Wrong block job type reported for active layer commit
Product: Red Hat Enterprise Linux 7 Reporter: Adam Litke <alitke>
Component: libvirtAssignee: Eric Blake <eblake>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: unspecified    
Version: 7.0CC: dyuan, eblake, mzhan, pkrempa, rbalakri, shyu, xuzhang
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-1.2.8-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-05 07:41:52 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:
Attachments:
Description Flags
Reproducer none

Description Adam Litke 2014-08-05 14:53:43 UTC
Created attachment 924231 [details]
Reproducer

Description of problem:

When using the virDomainBlockJobInfo command to check the status of an ongoing block commit operation involving the active layer, the type is reported as 
VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT when it should be VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT.

Version-Release number of selected component (if applicable):
libvirt-daemon-kvm-1.2.7

How reproducible: Always


Steps to Reproduce: See reproducer shell script in attachment


Actual results: type is reported as VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT


Expected results: type is reported as VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT

Comment 2 Eric Blake 2014-08-05 16:33:13 UTC
In POST, since rebase to 1.2.8 will pick up this patch:

commit e8cc973041e7ac4ddeefe343af751863c76687fe
Author: Eric Blake <eblake>
Date:   Tue Aug 5 08:49:32 2014 -0600

    blockjob: correctly report active commit for job info
    
    Commit 232a31b munged job info to report 'active commit' instead of
    'commit' when generating events, but forgot to also munge the polling
    variant of the command.
    
    * src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Adjust type as
    needed.
    
    Signed-off-by: Eric Blake <eblake>

Comment 4 Shanzhi Yu 2014-10-20 09:12:40 UTC
Reproduce this bug with libvirt-1.2.7-1.el7.x86_64, Verify this bug with libvirt-1.2.8-5.el7.x86_64

Steps as the attachment script Reproducer

Comment 5 Shanzhi Yu 2014-10-23 10:24:01 UTC
Test stpes as below:

with libvirt-1.2.8-5.el7

1. Prepare a running guest 
# virsh list 
 Id    Name                           State
----------------------------------------------------
 2     rhel6.5                        running

2. Create four external disk snapshot 

# for i in $(seq 1 5);do virsh snapshot-create-as rhel6.5 s$i --disk-only;done 
Domain snapshot s1 created
Domain snapshot s2 created
Domain snapshot s3 created
Domain snapshot s4 created
Domain snapshot s5 created

3. Do active block commit, check blockjob info in another terminal at same time 

# virsh blockcommit rhel6.5 vda --active 1 
Block Commit started


in another terminal:

# while true;do virsh blockjob rhel6.5 vda --info;done 
..
Active Block Commit: [ 76 %]    Bandwidth limit: 1 MiB/s
..
Active Block Commit: [100 %]    Bandwidth limit: 1 MiB/s

4. Do inactive block commit, check blockjob info in another terminal at same time (clean env, repeat step 1,2) 

#virsh blockcommit rhel6.5 vda --top vda[1] --base  vda[5]
Block Commit started

in another terminal:

# while true;do virsh blockjob rhel6.5 vda --info;done 
..
Block Commit: [ 82 %]
Block Commit: [ 82 %]
..
Block Commit: [100 %]

Comment 7 errata-xmlrpc 2015-03-05 07:41:52 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://rhn.redhat.com/errata/RHSA-2015-0323.html