Bug 1164080
Summary: | libvirt do a wrong check for the hot-unplug disk when use blkdeviotune --config | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Luyao Huang <lhuang> |
Component: | libvirt | Assignee: | John Ferlan <jferlan> |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 7.1 | CC: | dyuan, jferlan, mzhan, rbalakri, shyu, yisun |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | libvirt-1.2.13-1.el7 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2015-11-19 05:55: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: |
Description
Luyao Huang
2014-11-14 03:48:36 UTC
Note that because no flag was given on: # virsh blkdeviotune r6 sdb error: Unable to get block I/O throttle parameters error: invalid argument: No device found for specified path # This is the same as passing --current. Since the vm is running/active, the AFFECT_LIVE path will be used and you'll still see a failure. That's expected. The case that is broken however is the --config path I tested the patch on my system and got: # virsh blkdeviotune rh64 vdb total_bytes_sec: 0 read_bytes_sec : 0 write_bytes_sec: 0 total_iops_sec : 0 read_iops_sec : 0 write_iops_sec : 0 # virsh detach-disk rh64 vdb Disk detached successfully # virsh blkdeviotune rh64 vdb --config total_bytes_sec: 0 read_bytes_sec : 0 write_bytes_sec: 0 total_iops_sec : 0 read_iops_sec : 0 write_iops_sec : 0 total_bytes_sec_max: 0 read_bytes_sec_max: 0 write_bytes_sec_max: 0 total_iops_sec_max: 0 read_iops_sec_max: 0 write_iops_sec_max: 0 size_iops_sec : 0 # virsh blkdeviotune rh64 vdb --live error: Unable to get block I/O throttle parameters error: invalid argument: No device found for specified path # virsh blkdeviotune rh64 vdb --current error: Unable to get block I/O throttle parameters error: invalid argument: No device found for specified path # virsh blkdeviotune rh64 vdb error: Unable to get block I/O throttle parameters error: invalid argument: No device found for specified path # You will note that yes, there are more parameters for the 'config' path than the live/current path. While interesting it's not surprising given that this config has: # /usr/bin/qemu-kvm --version QEMU emulator version 1.6.2, Copyright (c) 2003-2008 Fabrice Bellard and the 'new' parameters require 1.7 installed. The only other thing interesting is the output of the tune params isn't aligned for the new params... (In reply to John Ferlan from comment #1) > Note that because no flag was given on: > > # virsh blkdeviotune r6 sdb > error: Unable to get block I/O throttle parameters > error: invalid argument: No device found for specified path > > # > > This is the same as passing --current. Since the vm is running/active, the > AFFECT_LIVE path will be used and you'll still see a failure. That's > expected. Yes, this is expected.When doesn't pass any plags means blkdeviotune --current. > > The case that is broken however is the --config path > That is what i want to say, this is main point of this bug.Sorry, i forgot give a clearly description in this step. > > I tested the patch on my system and got: > > # virsh blkdeviotune rh64 vdb > total_bytes_sec: 0 > read_bytes_sec : 0 > write_bytes_sec: 0 > total_iops_sec : 0 > read_iops_sec : 0 > write_iops_sec : 0 > > # virsh detach-disk rh64 vdb > Disk detached successfully > > # virsh blkdeviotune rh64 vdb --config > total_bytes_sec: 0 > read_bytes_sec : 0 > write_bytes_sec: 0 > total_iops_sec : 0 > read_iops_sec : 0 > write_iops_sec : 0 > total_bytes_sec_max: 0 > read_bytes_sec_max: 0 > write_bytes_sec_max: 0 > total_iops_sec_max: 0 > read_iops_sec_max: 0 > write_iops_sec_max: 0 > size_iops_sec : 0 > > # virsh blkdeviotune rh64 vdb --live > error: Unable to get block I/O throttle parameters > error: invalid argument: No device found for specified path > > # virsh blkdeviotune rh64 vdb --current > error: Unable to get block I/O throttle parameters > error: invalid argument: No device found for specified path > > # virsh blkdeviotune rh64 vdb > error: Unable to get block I/O throttle parameters > error: invalid argument: No device found for specified path > > # > > You will note that yes, there are more parameters for the 'config' path than > the live/current path. While interesting it's not surprising given that > this config has: > > # /usr/bin/qemu-kvm --version > QEMU emulator version 1.6.2, Copyright (c) 2003-2008 Fabrice Bellard > > and the 'new' parameters require 1.7 installed. > > The only other thing interesting is the output of the tune params isn't > aligned for the new params... So interesting, your qemu is a upstream qemu, am i right? Eww, i found i cannot test this in my fedora( What a pity :( ). # rpm -q qemu-kvm qemu-kvm-1.6.2-9.fc20.x86_64 # rpm -q libvirt libvirt-1.1.3.6-2.fc20.x86_64 Thanks in advance for your expectations, and i will give a more clearly description when i file bug next time. Well funny thing about my system - I do build and install the upstream qemu; however, I never modified my yum.conf to not update the qemu when an update is ready (as found through yum update) on my f20 system. So when the last yum update ran, it overwrite my local build (I've since resolved that). No problem about the description - I would probably have all sorts of problems typing in a different language than my what my fingers know natively This was pushed upstream during 1.2.11 - it seems doing proper bug triage was forgotten... Moving to MODIFIED since it's already in a downstream libvirt. $ git show 72b4151f858df3564b82a8ebba60778b996b6dce commit 72b4151f858df3564b82a8ebba60778b996b6dce Author: Luyao Huang <lhuang> Date: Fri Nov 14 11:21:10 2014 +0800 qemu: Fix get blkiodevtune for a disk that has been hot unplugged https://bugzilla.redhat.com/show_bug.cgi?id=1164080 After a disk is hotunplugged a subsequent call to qemuDomainGetBlockIoTune to get the --config settings of that disk will fail because the disk is no longer found by qemuDiskPathToAlias causing an unexpected failure. Since only the --live flag needs to have the disk device pointer, move the fetch inside the (flags & VIR_DOMAIN_AFFECT_LIVE) condition. This will also affect the results if no flags are provided or the --current flag is provided. verified on: libvirt-1.2.17-8.el7.x86_64 qemu-kvm-rhev-2.3.0-22.el7.x86_64 # uname -r 3.10.0-314.el7.x86_64 Steps: # virsh domblklist rhel1 Target Source ------------------------------------------------ vda /home/pool/rhel.qcow2 sda /home/pool/test.qcow2 # virsh detach-disk rhel1 sda Disk detached successfully # virsh blkdeviotune rhel1 sda --config //successful as expected total_bytes_sec: 0 read_bytes_sec : 0 write_bytes_sec: 0 total_iops_sec : 0 read_iops_sec : 0 write_iops_sec : 0 total_bytes_sec_max: 0 read_bytes_sec_max: 0 write_bytes_sec_max: 0 total_iops_sec_max: 0 read_iops_sec_max: 0 write_iops_sec_max: 0 size_iops_sec : 0 # virsh blkdeviotune rhel1 sda --current // failed as expected error: Unable to get block I/O throttle parameters error: invalid argument: No device found for specified path # virsh blkdeviotune rhel1 sda --live // failed as expected error: Unable to get block I/O throttle parameters error: invalid argument: No device found for specified path 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/RHBA-2015-2202.html |