[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: AW: [PATCH v2 7/9] loop:refactor: Extract subfunction do_stat_and_mknod()
From:       Xiaoming Ni <nixiaoming () huawei ! com>
Date:       2022-11-18 12:49:05
Message-ID: 48e34c32-9867-e994-a9c9-729faf1922ad () huawei ! com
[Download RAW message or body]

On 2022/11/18 20:39, Walter Harms wrote:
> again try to safe indent level
> 
>   if (stat(dev, &statbuf) == 0 &&  S_ISBLK(statbuf.st_mode))
>    return 0;
> 
> jm2c
Thanks,  will be modified in v3

> ________________________________________
> Von: busybox <busybox-bounces@busybox.net> im Auftrag von Xiaoming Ni <nixiaoming@huawei.com>
> Gesendet: Freitag, 18. November 2022 13:14:46
> An: busybox@busybox.net; vda.linux@googlemail.com; cand@gmx.com; explorer09@gmail.com
> Cc: wangle6@huawei.com
> Betreff: [PATCH v2 7/9] loop:refactor: Extract subfunction do_stat_and_mknod()
> 
> Step 7 of micro-refactoring the set_loop():
>          Extract subfunction do_stat_and_mknod()
> 
> function                                             old     new   delta
> set_loop                                             720     700     -20
> ------------------------------------------------------------------------------
> (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-20)             Total: -20 bytes
> 
> Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>
> ---
>   libbb/loop.c | 39 +++++++++++++++++++++++++--------------
>   1 file changed, 25 insertions(+), 14 deletions(-)
> 
> diff --git a/libbb/loop.c b/libbb/loop.c
> index 2200ccb9a..67e16ddb0 100644
> --- a/libbb/loop.c
> +++ b/libbb/loop.c
> @@ -180,6 +180,28 @@ static void init_bb_loop_info(bb_loop_info *loopinfo, const char *file,
>          loopinfo->lo_flags = (flags & ~BB_LO_FLAGS_READ_ONLY);
>   }
> 
> +static int do_stat_and_mknod(const char *dev, const char *device, int i)
> +{
> +       struct stat statbuf;
> +
> +       IF_FEATURE_MOUNT_LOOP_CREATE(errno = 0;)
> +       if (stat(dev, &statbuf) != 0 || !S_ISBLK(statbuf.st_mode)) {
> +               if (ENABLE_FEATURE_MOUNT_LOOP_CREATE
> +                               && errno == ENOENT
> +                               && (!device)
> +                       ) {
> +                       /* Node doesn't exist, try to create it */
> +                       if (mknod(dev, S_IFBLK|0644, makedev(7, i)) == 0) {
> +                               return 0;
> +                       }
> +               }
> +               /* Ran out of block devices, return failure */
> +               return -1;
> +       }
> +       return 0;
> +}
> +
> +
>   /* Returns opened fd to the loop device, <0 on error.
>    * *device is loop device to use, or if *device==NULL finds a loop device to
>    * mount it on and sets *device to a strdup of that loop device name.
> @@ -189,7 +211,6 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
>   {
>          char dev[LOOP_NAMESIZE];
>          char *try;
> -       struct stat statbuf;
>          int i, lfd, ffd, mode, rc;
>          bb_loop_info loopinfo;
> 
> @@ -216,18 +237,8 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
>                          }
>                  }
> 
> -               IF_FEATURE_MOUNT_LOOP_CREATE(errno = 0;)
> -               if (stat(try, &statbuf) != 0 || !S_ISBLK(statbuf.st_mode)) {
> -                       if (ENABLE_FEATURE_MOUNT_LOOP_CREATE
> -                        && errno == ENOENT
> -                        && (!*device)
> -                       ) {
> -                               /* Node doesn't exist, try to create it */
> -                               if (mknod(dev, S_IFBLK|0644, makedev(7, i)) == 0)
> -                                       goto open_lfd;
> -                       }
> -                       /* Ran out of block devices, return failure */
> -                       rc = -1;
> +               rc = do_stat_and_mknod(try, *device, i);
> +               if (rc == -1) {
>                          break;
>                  }
>    open_lfd:
> @@ -249,7 +260,7 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
>                  if (rc == lfd) {
>                          /* SUCCESS! */
>                          if (!*device)
> -                               *device = xstrdup(dev);
> +                               *device = xstrdup(try);
>                          break;
>                  }
>                  close(lfd);
> --
> 2.27.0
> 
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
> .
> 

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic