On Thu, Mar 05, 2015 at 10:08:45AM +0100, Peter Krempa wrote: > On Wed, Mar 04, 2015 at 17:17:05 +0100, Pavel Hrdina wrote: > > Commit message is too sparse. > > > Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1146539 > > Also I doubt that this on itself resolves this bug. Well, not directly so I'll remove it from commit message. > > > > > Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> > > --- > > tools/virsh-domain.c | 62 +++++++++++++++++----------------------------------- > > 1 file changed, 20 insertions(+), 42 deletions(-) > > > > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c > > index 55c269c..773f9f1 100644 > > --- a/tools/virsh-domain.c > > +++ b/tools/virsh-domain.c > > @@ -8276,7 +8276,7 @@ vshMemtuneGetSize(const vshCmd *cmd, const char *name, long long *value) > > if (virScaleInteger(&tmp, end, 1024, LLONG_MAX) < 0) > > return -1; > > *value = VIR_DIV_UP(tmp, 1024); > > - return 0; > > + return 1; > > Now that the return values from this function actually make sense it > would be worth adding a comment what they mean. Good point, I'll add a comment to this function. > > > } > > > > static bool > > @@ -8294,6 +8294,7 @@ cmdMemtune(vshControl *ctl, const vshCmd *cmd) > > bool current = vshCommandOptBool(cmd, "current"); > > bool config = vshCommandOptBool(cmd, "config"); > > bool live = vshCommandOptBool(cmd, "live"); > > + int rc = 0; > > rc doesn't need to be initialized as the macro below sets and tests it. > > > > > VSH_EXCLUSIVE_OPTIONS_VAR(current, live); > > VSH_EXCLUSIVE_OPTIONS_VAR(current, config); > > @@ -8306,50 +8307,26 @@ cmdMemtune(vshControl *ctl, const vshCmd *cmd) > > if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) > > return false; > > > > - if (vshMemtuneGetSize(cmd, "hard-limit", &hard_limit) < 0 || > > - vshMemtuneGetSize(cmd, "soft-limit", &soft_limit) < 0 || > > - vshMemtuneGetSize(cmd, "swap-hard-limit", &swap_hard_limit) < 0 || > > - vshMemtuneGetSize(cmd, "min-guarantee", &min_guarantee) < 0) { > > - vshError(ctl, "%s", > > - _("Unable to parse integer parameter")); > > - goto cleanup; > > - } > > +#define PARSE_MEMTUNE_PARAM(NAME, VALUE, FIELD) \ > > + if ((rc = vshMemtuneGetSize(cmd, NAME, &VALUE)) < 0) { \ > > + vshError(ctl, "%s", _("Unable to parse integer parameter 'NAME'")); \ > > + goto cleanup; \ > > + } \ > > + if (rc == 1) { \ > > + if (virTypedParamsAddULLong(¶ms, &nparams, &maxparams, \ > > + FIELD, VALUE) < 0) \ > > + goto save_error; \ > > + } \ > > > > - if (hard_limit) { > > - if (hard_limit == -1) > > - hard_limit = VIR_DOMAIN_MEMORY_PARAM_UNLIMITED; > > - if (virTypedParamsAddULLong(¶ms, &nparams, &maxparams, > > - VIR_DOMAIN_MEMORY_HARD_LIMIT, > > - hard_limit) < 0) > > - goto save_error; > > - } > > > > - if (soft_limit) { > > - if (soft_limit == -1) > > - soft_limit = VIR_DOMAIN_MEMORY_PARAM_UNLIMITED; > > - if (virTypedParamsAddULLong(¶ms, &nparams, &maxparams, > > - VIR_DOMAIN_MEMORY_SOFT_LIMIT, > > - soft_limit) < 0) > > - goto save_error; > > - } > > - > > - if (swap_hard_limit) { > > - if (swap_hard_limit == -1) > > - swap_hard_limit = VIR_DOMAIN_MEMORY_PARAM_UNLIMITED; > > - if (virTypedParamsAddULLong(¶ms, &nparams, &maxparams, > > - VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT, > > - swap_hard_limit) < 0) > > - goto save_error; > > - } > > + PARSE_MEMTUNE_PARAM("hard-limit", hard_limit, VIR_DOMAIN_MEMORY_HARD_LIMIT); > > + PARSE_MEMTUNE_PARAM("soft-limit", soft_limit, VIR_DOMAIN_MEMORY_SOFT_LIMIT); > > + PARSE_MEMTUNE_PARAM("swap-hard-limit", swap_hard_limit, > > + VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT); > > + PARSE_MEMTUNE_PARAM("min-guarantee", min_guarantee, > > + VIR_DOMAIN_MEMORY_MIN_GUARANTEE); > > > > - if (min_guarantee) { > > - if (min_guarantee == -1) > > - min_guarantee = VIR_DOMAIN_MEMORY_PARAM_UNLIMITED; > > - if (virTypedParamsAddULLong(¶ms, &nparams, &maxparams, > > - VIR_DOMAIN_MEMORY_MIN_GUARANTEE, > > - min_guarantee) < 0) > > - goto save_error; > > - } > > +#undef PARSE_MEMTUNE_PARAM > > Um ... > > > > > if (nparams == 0) { > > /* get the number of memory parameters */ > > @@ -8390,6 +8367,7 @@ cmdMemtune(vshControl *ctl, const vshCmd *cmd) > > ret = true; > > > > cleanup: > > +#undef PARSE_MEMTUNE_PARAM > > ... why are you undefing it twice? Oh, just some leftover, will remove it. > > > virTypedParamsFree(params, nparams); > > virDomainFree(dom); > > return ret; > > Also the virsh man page would benefit from adding a statement that -1 > should be used as unlimited. There is already a note that -1 is to set the limit to unlimited in man page. Thanks for review. Pavel > > Peter -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list