btrfs-progs: report failure when resize ioctl fails
The BTRFS_IOC_RESIZE ioctl returns 0 on success, negative for POSIX errors, and positive for btrfs-specific errors. If resize fails with a btrfs-specific error, decode the error and report it. If we can't decode the error, report its numeric value so that the userspace tool is not instantly useless when a new error code is defined in the kernel. Exit with non-zero status on any resize error. This is very important for scripts that will shrink the underlying storage when btrfs reports success! Signed-off-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
parent
2890c41504
commit
7ab0bdd712
|
@ -1278,6 +1278,18 @@ static int cmd_resize(int argc, char **argv)
|
|||
fprintf(stderr, "ERROR: unable to resize '%s' - %s\n",
|
||||
path, strerror(e));
|
||||
return 1;
|
||||
} else if (res > 0) {
|
||||
const char *err_str = btrfs_err_str(res);
|
||||
|
||||
if (err_str) {
|
||||
fprintf(stderr, "ERROR: btrfs error resizing '%s' - %s\n",
|
||||
path, err_str);
|
||||
} else {
|
||||
fprintf(stderr,
|
||||
"ERROR: btrfs error resizing '%s' - unknown btrfs_err_code %d\n",
|
||||
path, res);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue