On Fri, Jan 15, 2021 at 12:48:59AM +0100, David Sterba wrote:

Hi David, Thanks fore review.

> On Wed, Dec 16, 2020 at 03:42:40AM +0000, Sidong Yang wrote:
> > 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 <realwa...@gmail.com>
> > ---
> >  cmds/filesystem.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++-
> >  1 file changed, 60 insertions(+), 1 deletion(-)
> > 
> > diff --git a/cmds/filesystem.c b/cmds/filesystem.c
> > index fac612b2..53e775b7 100644
> > --- a/cmds/filesystem.c
> > +++ b/cmds/filesystem.c
> > @@ -1084,6 +1084,14 @@ static int cmd_filesystem_resize(const struct 
> > cmd_struct *cmd,
> >     int ret;
> >     struct stat st;
> >     bool enqueue = false;
> > +   struct btrfs_ioctl_fs_info_args fi_args;
> > +   struct btrfs_ioctl_dev_info_args *di_args = NULL;
> > +   char newsize[256];
> > +   char sign;
> > +   u64 inc_bytes;
> > +   u64 res_bytes;
> > +   int i, devid, dev_idx;
> > +   const char *res_str;
> >  
> >     optind = 0;
> >     while (1) {
> > @@ -1142,7 +1150,58 @@ static int cmd_filesystem_resize(const struct 
> > cmd_struct *cmd,
> >             return 1;
> >     }
> >  
> > -   printf("Resize '%s' of '%s'\n", path, amount);
> > +   ret = get_fs_info(path, &fi_args, &di_args);
> > +   if (ret)
> > +           error("unable to retrieve fs info");
> 
> The helper 'error' is to just print the message so the code has to
> change flow to an exit otherwise it would continue, which is what we
> don't want here.

Thanks, I didn't know about error(). I'll fix it.
> 
> > +
> > +   if (!fi_args.num_devices)
> > +           error("num_devices = 0");
> 
> Same and everywhere below. Also the error message is too cryptic, think
> that there's a human reading that so it should say what's the error,
> like "No devices found". Which would be a weird and likely impossible
> error anyway but it's good that it's handled.

I have to fix the error messages for users to understand what's the error.

> 
> > +
> > +   ret = sscanf(amount, "%d:%255s", &devid, newsize);
> > +
> > +   if (ret != 2)
> > +           error("invalid format");
> 
> I'm not sure this covers all the possibilities the resize format
> provides. The "%d:" part is not mandatory and there doesn't need to be
> ":" at all, eg when it's "max" or any number.
> 
> There are some examples in manual page of btrfs-filesystem so would be
> good if we have at least that covered by tests.

Okay, I'll make it to handle various cases.

Thanks!
Sidong

Reply via email to