On 11/29/2011 07:11 PM, Hu Tao wrote: > Thanks. I also found we need to do filtering at other places. Since this > is already pushed, here is another patch: > >>From b2009f582641b61c450744061ce34faa7a5f8eb7 Mon Sep 17 00:00:00 2001 > From: Hu Tao <hutao@xxxxxxxxxxxxxx> > Date: Wed, 30 Nov 2011 10:06:19 +0800 > Subject: [PATCH] filter blkio 0-device-weight at two oter places s/oter/other/ > > filter 0-device-weight when: > > - getting blkio parameters with --config > - starting up a domain > > When testing with blkio, I found these issues: > > (dom is down) > virsh blkiotune dom --device-weights /dev/sda,300,/dev/sdb,500 > virsh blkiotune dom --device-weights /dev/sda,300,/dev/sdb,0 > virsh blkiotune dom > weight : 800 > device_weight : /dev/sda,200,/dev/sdb,0 > > # issue 1: shows 0 device weight of /dev/sdb that may confuse user > > (continued) > virsh start dom > > # issue 2: If /dev/sdb doesn't exist, libvirt refuses to bring the > # dom up because it wants to set the device weight to 0 of a > # non-existing device. Since 0 means no weight-limit, we really don't > # have to set it. Good catches, and your patch looks almost right. > @@ -6370,6 +6370,8 @@ static int qemuDomainGetBlkioParameters(virDomainPtr dom, > if (persistentDef->blkio.ndevices > 0) { > virBuffer buf = VIR_BUFFER_INITIALIZER; > for (j = 0; j < persistentDef->blkio.ndevices; j++) { > + if (!persistentDef->blkio.devices[j].weight) > + continue; > if (j) > virBufferAddChar(&buf, ','); Here, we can't use 'j' as the key for whether to print a comma, but have to introduce a new variable. ACK with this squashed in, and pushed: diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c index 0b1d6cf..ed90c66 100644 --- i/src/qemu/qemu_driver.c +++ w/src/qemu/qemu_driver.c @@ -6312,6 +6312,7 @@ static int qemuDomainGetBlkioParameters(virDomainPtr dom, if (vm->def->blkio.ndevices > 0) { virBuffer buf = VIR_BUFFER_INITIALIZER; bool comma = false; + for (j = 0; j < vm->def->blkio.ndevices; j++) { if (!vm->def->blkio.devices[j].weight) continue; @@ -6372,11 +6373,15 @@ static int qemuDomainGetBlkioParameters(virDomainPtr dom, case 1: /* blkiotune.device_weight */ if (persistentDef->blkio.ndevices > 0) { virBuffer buf = VIR_BUFFER_INITIALIZER; + bool comma = false; + for (j = 0; j < persistentDef->blkio.ndevices; j++) { if (!persistentDef->blkio.devices[j].weight) continue; - if (j) + if (comma) virBufferAddChar(&buf, ','); + else + comma = true; virBufferAsprintf(&buf, "%s,%u", persistentDef->blkio.devices[j].path, persistentDef->blkio.devices[j].weight); -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list