On Mon,  6 Jan 2014 00:52:42 +0900, Hitoshi Mitake wrote:
> The nofork option aims to reduce call of fork(), but it is not
> effective. This patch lets cleanerd ignore the option simply even if
> it is passed.
> 
> Signed-off-by: Hitoshi Mitake <[email protected]>
> ---
>  sbin/cleanerd/cleanerd.c | 28 ++++++++++++----------------
>  1 file changed, 12 insertions(+), 16 deletions(-)
> 
> diff --git a/sbin/cleanerd/cleanerd.c b/sbin/cleanerd/cleanerd.c
> index e1f6a04..0b5bb70 100644
> --- a/sbin/cleanerd/cleanerd.c
> +++ b/sbin/cleanerd/cleanerd.c
> @@ -113,7 +113,7 @@ do {                                              \
>  const static struct option long_option[] = {
>       {"conffile", required_argument, NULL, 'c'},
>       {"help", no_argument, NULL, 'h'},
> -     /* internal option for mount.nilfs2 only */
> +     /* nofork option is obsolete. It does nothing even if passed */
>       {"nofork", no_argument, NULL, 'n'},
>       {"protection-period", required_argument, NULL, 'p'},
>       {"version", no_argument, NULL, 'V'},
> @@ -691,20 +691,18 @@ static int oom_adjust(void)
>  #define DEVNULL      "/dev/null"
>  #define ROOTDIR      "/"
>  
> -static int daemonize(int nochdir, int noclose, int nofork)
> +static int daemonize(int nochdir, int noclose)
>  {
>       pid_t pid;
>  
> -     if (!nofork) {
> -             pid = fork();
> -             if (pid < 0)
> -                     return -1;
> -             else if (pid != 0)
> -                     /* parent */
> -                     _exit(0);
> -     }
> +     pid = fork();
> +     if (pid < 0)
> +             return -1;
> +     else if (pid != 0)
> +             /* parent */
> +             _exit(0);
>  
> -     /* child or nofork */
> +     /* child */
>       if (setsid() < 0)
>               return -1;
>  
> @@ -1491,7 +1489,7 @@ int main(int argc, char *argv[])
>       char canonical[PATH_MAX + 2];
>       const char *dev, *dir;
>       char *endptr;
> -     int status, nofork, c;
> +     int status, c;
>  #ifdef _GNU_SOURCE
>       int option_index;
>  #endif       /* _GNU_SOURCE */
> @@ -1499,7 +1497,6 @@ int main(int argc, char *argv[])
>       progname = (strrchr(argv[0], '/') != NULL) ?
>               strrchr(argv[0], '/') + 1 : argv[0];
>       conffile = NILFS_CLEANERD_CONFFILE;
> -     nofork = 0;
>       status = 0;
>       protection_period = ULONG_MAX;
>       dev = NULL;
> @@ -1520,8 +1517,7 @@ int main(int argc, char *argv[])
>                       nilfs_cleanerd_usage(progname);
>                       exit(0);
>               case 'n':
> -                     /* internal option for mount.nilfs2 only */
> -                     nofork = 1;
> +                     /* ignore nofork option, do nothing */
>                       break;
>               case 'p':
>                       protection_period = strtoul(optarg, &endptr, 10);
> @@ -1568,7 +1564,7 @@ int main(int argc, char *argv[])
>               }
>       }
>  
> -     if (daemonize(0, 0, nofork) < 0) {
> +     if (daemonize(0, 0) < 0) {
>               fprintf(stderr, "%s: %s\n", progname, strerror(errno));
>               exit(1);
>       }
> -- 
> 1.8.1.2

Looks good to me. Applied.

Thank a lot.

Ryusuke Konishi
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to