When shrinking a volume by a certain size, instead of typing
vol-resize volume 1G --delta --shrink
we allow the convience of specifying a negative value:
vol-resize volume -1G --delta --shrink
getting the same results with one more character.
A negative value only makes sense as a delta. Imply the
--delta parameter if the value is negative.
Still require --shrink, because the operation is potentially
destructive.
---
tools/virsh-volume.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c
index 5d6cc6a..989ce87 100644
--- a/tools/virsh-volume.c
+++ b/tools/virsh-volume.c
@@ -1124,14 +1124,10 @@ cmdVolResize(vshControl *ctl, const vshCmd *cmd)
unsigned long long capacity = 0;
unsigned int flags = 0;
bool ret = false;
- bool delta = false;
+ bool delta = vshCommandOptBool(cmd, "delta");
if (vshCommandOptBool(cmd, "allocate"))
flags |= VIR_STORAGE_VOL_RESIZE_ALLOCATE;
- if (vshCommandOptBool(cmd, "delta")) {
- delta = true;
- flags |= VIR_STORAGE_VOL_RESIZE_DELTA;
- }
if (vshCommandOptBool(cmd, "shrink"))
flags |= VIR_STORAGE_VOL_RESIZE_SHRINK;
@@ -1144,14 +1140,19 @@ cmdVolResize(vshControl *ctl, const vshCmd *cmd)
if (*capacityStr == '-') {
/* The API always requires a positive value; but we allow a
* negative value for convenience. */
- if (delta && vshCommandOptBool(cmd, "shrink")) {
+ if (vshCommandOptBool(cmd, "shrink")) {
capacityStr++;
+ delta = true;
} else {
vshError(ctl, "%s",
- _("negative size requires --delta and --shrink"));
+ _("negative size requires --shrink"));
goto cleanup;
}
}
+
+ if (delta)
+ flags |= VIR_STORAGE_VOL_RESIZE_DELTA;
+
if (vshVolSize(capacityStr, &capacity) < 0) {
vshError(ctl, _("Malformed size %s"), capacityStr);
goto cleanup;
--
2.3.6