Bug 977678

Summary: Options handle problem for blockjob command
Product: Red Hat Enterprise Linux 7 Reporter: yanbing du <ydu>
Component: libvirtAssignee: Ján Tomko <jtomko>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: acathrow, cwei, dallan, dyuan, jtomko, lsu, mzhan, tzheng, zpeng
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: libvirt-1.1.1-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-06-13 10:29:49 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 yanbing du 2013-06-25 06:54:16 UTC
Description of problem:
For virsh blockjob, which can manage active block operations(abort or pivot), and there may be several problems which need fix about the corresponding options.
1. "--abort" and "--pivot" should be mutually exclusive;
2. "--async" should only work with "--abort";
3. "--pivot" should only work when copy job in mirroring phase, that means when the job in data copy phase, execute pivot should report error.


Version-Release number of selected component (if applicable):
libvirt-1.0.6-1.el7.x86_64 

How reproducible:
100% 

Steps to Reproduce:
1. Start a block copy job.
#virsh blockcopy $guest $target $dest_path --wait --verbose

2. Run virsh blcokjob with
#virsh blockjob $guest $target --abort --pivot
#virsh blockjob $guest $target --async

or before copy job progress up to 100%, do pivot:
#virsh blockjob $guest $target --pivot 


Actual results:
There's no check about the problems mentioned above. 

Expected results:
Libvirt should handle these options before respond them. 

Additional info:

Comment 2 Ján Tomko 2013-07-01 13:15:45 UTC
I'm not sure we should make --abort and --pivot exclusive, since --pivot is done through virDomainBlockJobAbort API.

I have posted patches for the other two issues upstream:
https://www.redhat.com/archives/libvir-list/2013-July/msg00035.html

Comment 3 Ján Tomko 2013-07-02 06:14:52 UTC
For --pivot: --async has no effect, since pivot is always asynchronous at the moment and we shouldn't forbid the combination:
https://www.redhat.com/archives/libvir-list/2013-July/msg00046.html

The missing error messages are now fixed upstream:
commit c34107dfd3a25232255e6d6f559b1306ef99bb3b
Author:     Ján Tomko <jtomko>
AuthorDate: 2013-07-01 12:41:34 +0200
Commit:     Ján Tomko <jtomko>
CommitDate: 2013-07-02 07:51:51 +0200

    qemu: fix return value of qemuDomainBlockPivot on errors
    
    If qemuMonitorBlockJob returned 0, qemuDomainBlockPivot
    might return 0 even if an error occured.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=977678

git describe: v1.1.0-7-gc34107d

Comment 4 Luwen Su 2013-08-02 07:53:15 UTC
According the patch  , only test the procudre that do pivot when blockcopy

libvirt-1.1.1-1.el7.x86_64

One terminal excute:
# virsh blockcopy test hda /var/lib/libvirt/images/c.img --wait --verbose
Block Copy: [  2 %]

At the same time , open another terminal do
# virsh blockjob test hda  --pivot
error: block copy still active: disk 'hda' not ready for pivot yet

the function went to 

if (!disk->mirroring) {
        virReportError(VIR_ERR_BLOCK_COPY_ACTIVE,
                       _("disk '%s' not ready for pivot yet"),
                       disk->dst);
        goto cleanup;
    }

So set it VERIFIED

Comment 5 Ludek Smid 2014-06-13 10:29:49 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.