[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [libvirt] [PATCH v2] virsh: avoid missing zero value judgement in cmdBlkiotune
- From: Michal Privoznik <mprivozn redhat com>
- To: Alex Jia <ajia redhat com>
- Cc: libvir-list redhat com
- Subject: Re: [libvirt] [PATCH v2] virsh: avoid missing zero value judgement in cmdBlkiotune
- Date: Thu, 28 Jul 2011 11:16:42 +0200
On 28.07.2011 11:04, Alex Jia wrote:
* tools/virsh.c: avoid missing zero value judgement in cmdBlkiotune, when
weight is equal to 0, the cmdBlkiotune will not raise any error information
when judge weight value first time, and execute else branch to judge weight
value again, strncpy(temp->field, VIR_DOMAIN_BLKIO_WEIGHT, sizeof(temp->field))
will be not executed for ever. However, if and only if param->field is equal
to VIR_DOMAIN_BLKIO_WEIGHT, underlying qemuDomainSetBlkioParameters function
will check whether weight value is in range [100, 1000].
* how to reproduce?
% virsh blkiotune ${guestname} --weight 0
Signed-off-by: Alex Jia<ajia redhat com>
---
tools/virsh.c | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
I liked the first verion more than this. Although it is not shown in
this snippet,
nparams is initialized to zero
diff --git a/tools/virsh.c b/tools/virsh.c
index 8bd22dc..512f2c6 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -4037,14 +4037,13 @@ cmdBlkiotune(vshControl * ctl, const vshCmd * cmd)
goto cleanup;
}
- if (weight) {
- nparams++;
- if (weight< 0) {
- vshError(ctl, _("Invalid value of %d for I/O weight"), weight);
- goto cleanup;
- }
+ if (weight<= 0) {
+ vshError(ctl, _("Invalid value of %d for I/O weight"), weight);
+ goto cleanup;
}
and therefore doing this
+ nparams++;
+
will invalidate this test.
if (nparams == 0) {
/* get the number of blkio parameters */
if (virDomainGetBlkioParameters(dom, NULL,&nparams, flags) != 0) {
The better way of dealing with this issue IMO is to switch from
if (weight) {
to test if 'weight' parameter was given (vshCommandOptInt() returns >0)
and after this
check for impermissible values. And after the latter test (still inside
'weight argument
given') increment nparams:
if (weight_given) {
if (weight<=0) {
report error; goto cleanup;
nparams++;
}
Michal
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]