Bug 1302171
| Summary: | [blockcopy] unknown error while virtlockd is on | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Han Han <hhan> | ||||
| Component: | libvirt | Assignee: | Peter Krempa <pkrempa> | ||||
| Status: | CLOSED ERRATA | QA Contact: | yisun | ||||
| Severity: | medium | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 7.2 | CC: | dyuan, jdenemar, rbalakri, xuzhang, yanyang | ||||
| Target Milestone: | rc | ||||||
| Target Release: | --- | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | libvirt-3.0.0-1.el7 | Doc Type: | If docs needed, set a value | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2017-08-01 17:09:12 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: |
|
||||||
Fixed upstream:
commit 8551d39f4fbdb56551882ad3b48feb172da42ed6
Author: Peter Krempa <pkrempa>
Date: Thu Dec 15 15:09:47 2016 +0100
qemu: blockcopy: Save monitor error prior to calling into lock manager
The error would be overwritten otherwise producing a meaningless error
message.
Verified on libvirt-3.0.0-2.el7.x86_64 & qemu-kvm-rhev-2.8.0-4.el7.x86_64
============= scenario 1: blockcopy to a nfs dir =============
## cat /etc/libvirt/qemu-lockd.conf
auto_disk_leases = 1
require_lease_for_disks = 1
file_lockspace_dir = "/var/lib/libvirt/lockd/files"
## cat /etc/libvirt/qemu.conf
lock_manager = "lockd"
## systemctl restart virtlockd && systemctl restart libvirtd
## mount | grep /tt
localhost:/home/nfs on /tt type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=localhost,mountvers=3,mountport=20048,mountproto=udp,local_lock=none,addr=localhost)
## setsebool virt_use_nfs 1
## virsh create ~/vm1
Domain vm1 created from /root/vm1
## virsh blockcopy vm1 vda /var/lib/libvirt/images/vm1.cpy --wait --verbose
Block Copy: [100 %]
Now in mirroring phase
<=== expected completion
## virsh dumpxml vm1 | grep disk -a10
...
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/RHEL-7.3-latest.img'/>
<backingStore/>
<mirror type='file' file='/var/lib/libvirt/images/vm1.cpy' format='qcow2' job='copy' ready='yes'>
<format type='qcow2'/>
<source file='/var/lib/libvirt/images/vm1.cpy'/>
</mirror>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
...
============= scenario 2: blockcopy to root dir =============
## virsh create ~/vm1
Domain vm1 created from /root/vm1
## virsh blockcopy vm1 vda /root/vm1.cpy --wait --verbose
error: internal error: unable to execute QEMU command 'drive-mirror': Could not create file: Permission denied
<=== expected with clear error message
## virsh dumpxml vm1 | grep disk -a10
...
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/RHEL-7.3-latest.img'/>
<backingStore/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
...
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/RHEA-2017:1846 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/RHEA-2017:1846 |
Created attachment 1118647 [details] logs Description of problem: When virtlockd is on, do blockcopy to a unprivileged dir or from a nfs dir will cause unknown error. Version-Release number of selected component (if applicable): libvirt-1.2.17-13.el7_2.2.x86_64 qemu-kvm-rhev-2.3.0-31.el7_2.7.x86_64 How reproducible: 100% Steps to Reproduce: 1. Setup virtlockd env # cat /etc/libvirt/qemu-lockd.conf auto_disk_leases = 1 require_lease_for_disks = 1 file_lockspace_dir = "/var/lib/libvirt/lockd/files" # cat /etc/libvirt/qemu.conf lock_manager = "lockd" # systemctl restart virtlockd && systemctl restart libvirtd 2. blockcopy for a transient running guest whose os image based on nfs. # setsebool virt_use_nfs 1 # df -h |grep hhan xx.xx.xx.xx:/xx/xx/hhan 975G 513G 463G 53% /nfs #virsh blockcopy n3 vda /var/lib/libvirt/images/n3.cpy --wait --verbose error: An error occurred, but the cause is unknown 3. Prepare a local transient running guest, do blockcopy to /root dir # virsh blockcopy n2 vda /root/n2.cpy --wait --verbose error: An error occurred, but the cause is unknown Actual results: As step2&3 shows. Expected results: Step2 should finish blockcopy successfully. Step3 should be the error: error: internal error: unable to execute QEMU command 'drive-mirror': Could not create file: Permission denied Additional info: Because the step2 and step3 are both unknown error in virtlockd&blockcopy environment, report them as one bug. Pls split to two bugs if necessary.