Resize to nums without sign prefix makes false output:
Resize device id 1 (/dev/sdb1) from 298.09GiB to 0.00B

The resize operation would take effect though.

Fix it by handling the case if mod is 0 in check_resize_args().

Issue: #307
Reported-by: Chris Murphy <li...@colorremedies.com>
Signed-off-by: Su Yue <l...@damenly.su>
---
 cmds/filesystem.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/cmds/filesystem.c b/cmds/filesystem.c
index 9e3cce687d6e..607c85a0bccc 100644
--- a/cmds/filesystem.c
+++ b/cmds/filesystem.c
@@ -1158,6 +1158,13 @@ static int check_resize_args(const char *amount, const 
char *path) {
                }
                old_size = di_args[dev_idx].total_bytes;
 
+               /* For target sizes without '+'/'-' sign prefix(e.g. 1:150g) */
+               if (mod == 0) {
+                       new_size = diff;
+                       diff = new_size - old_size;
+                       mod = diff;
+               }
+
                if (mod < 0) {
                        if (diff > old_size) {
                                error("current size is %s which is smaller than 
%s",
-- 
2.30.1

Reply via email to