btrfs-progs: Accurate errormsg for resize operation on no-enouth-free-space case
authorZhao Lei <zhaolei@cn.fujitsu.com>
Wed, 22 Jul 2015 07:58:06 +0000 (15:58 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 31 Aug 2015 17:25:09 +0000 (19:25 +0200)
btrfs progs output following error message when doing resize on
no-enouth-free-space case:
 # btrfs filesystem resize +10g /mnt/btrfs_5gb
 Resize '/mnt/btrfs_5gb' of '+10g'
 ERROR: unable to resize '/mnt/btrfs_5gb' - File too large
 #

It is not a good description for users, and this patch changed it to:
 # ./btrfs filesystem resize +10G /mnt/tmp1
 Resize '/mnt/tmp1' of '+10G'
 ERROR: unable to resize '/mnt/tmp1' - no enouth free space
 #

Reported-by: Taeha Kim <kthguru@gmail.com>
Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
cmds-filesystem.c

index 03c67a5..fa555b0 100644 (file)
@@ -1327,8 +1327,16 @@ static int cmd_filesystem_resize(int argc, char **argv)
        e = errno;
        close_file_or_dir(fd, dirstream);
        if( res < 0 ){
-               fprintf(stderr, "ERROR: unable to resize '%s' - %s\n", 
-                       path, strerror(e));
+               switch (e) {
+               case EFBIG:
+                       fprintf(stderr, "ERROR: unable to resize '%s' - no enouth free space\n",
+                               path);
+                       break;
+               default:
+                       fprintf(stderr, "ERROR: unable to resize '%s' - %s\n",
+                               path, strerror(e));
+                       break;
+               }
                return 1;
        } else if (res > 0) {
                const char *err_str = btrfs_err_str(res);