Re: [PATCH v4] btrfs-progs: filesystem-resize: make output more readable
From: David Sterba <hidden>
Date: 2021-03-09 15:41:31
On Sat, Feb 20, 2021 at 12:41:17PM +0000, Sidong Yang wrote:
quoted hunk ↗ jump to hunk
This patch make output of filesystem-resize command more readable and give detail information for users. This patch provides more information about filesystem like below. Before: Resize '/mnt' of '1:-1G' After: Resize device id 1 (/dev/vdb) from 4.00GiB to 3.00GiB Signed-off-by: Sidong Yang <redacted> --- v2: - print more detailed error - covers all the possibilities format provides v3: - use snprintf than strcpy for safety - add diff variable for code readability v4: - fix bugs for argument that has no devid --- cmds/filesystem.c | 120 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 119 insertions(+), 1 deletion(-)diff --git a/cmds/filesystem.c b/cmds/filesystem.c index 0d23daf4..7ddf5880 100644 --- a/cmds/filesystem.c +++ b/cmds/filesystem.c@@ -28,6 +28,7 @@ #include <linux/limits.h> #include <linux/version.h> #include <getopt.h> +#include <limits.h> #include <btrfsutil.h>@@ -1074,6 +1075,117 @@ static const char * const cmd_filesystem_resize_usage[] = { NULL }; +static int check_resize_args(const char *amount, const char *path) { + struct btrfs_ioctl_fs_info_args fi_args; + struct btrfs_ioctl_dev_info_args *di_args = NULL; + int ret, i, dev_idx = -1; + u64 devid = 1; + const char *res_str = NULL; + char *devstr = NULL, *sizestr = NULL; + u64 new_size = 0, old_size = 0, diff = 0; + int mod = 0; + char amount_dup[BTRFS_VOL_NAME_MAX]; + + ret = get_fs_info(path, &fi_args, &di_args); + + if (ret) { + error("unable to retrieve fs info"); + return 1; + } + + if (!fi_args.num_devices) { + error("no devices found"); + free(di_args); + return 1;
Btw I changed all the free/return to ret = 1/goto out pattern so the cleanup does not need to repeated next to each return.