[systemd-devel] [PATCH] fsck: define fsck return codes

Lennart Poettering lennart at poettering.net
Mon May 11 16:00:39 PDT 2015


On Tue, 12.05.15 00:58, Thomas H.P. Andersen (phomes at gmail.com) wrote:
>  
> +#define FSCK_NO_ERROR 0
> +#define FSCK_ERROR_CORRECTED 1
> +#define FSCK_SYSTEM_SHOULD_REBOOT 2
> +#define FSCK_ERRORS_LEFT_UNCORRECTED 4
> +#define FSCK_OPERATIONAL_ERROR 8
> +#define FSCK_USAGE_OR_SYNTAX_ERROR 16
> +#define FSCK_USER_CANCELLED 32
> +#define FSCK_SHARED_LIB_ERROR 128

Makes sense, but can you make this an enum? Also, please add a comment
referencing the documentation in fsck(8) for this.

> +
>  static bool arg_skip = false;
>  static bool arg_force = false;
>  static bool arg_show_progress = false;
> @@ -424,7 +433,7 @@ int main(int argc, char *argv[]) {
>                  cmdline[i++] = NULL;
>  
>                  execv(cmdline[0], (char**) cmdline);
> -                _exit(8); /* Operational error */
> +                _exit(FSCK_OPERATIONAL_ERROR);
>          }
>  
>          progress_pipe[1] = safe_close(progress_pipe[1]);
> @@ -448,10 +457,10 @@ int main(int argc, char *argv[]) {
>  
>                  r = -EINVAL;
>  
> -                if (status.si_code == CLD_EXITED && (status.si_status & 2) && root_directory)
> +                if (status.si_code == CLD_EXITED && (status.si_status & FSCK_SYSTEM_SHOULD_REBOOT) && root_directory)
>                          /* System should be rebooted. */
>                          start_target(SPECIAL_REBOOT_TARGET);
> -                else if (status.si_code == CLD_EXITED && (status.si_status & 6))
> +                else if (status.si_code == CLD_EXITED && (status.si_status & (FSCK_SYSTEM_SHOULD_REBOOT | FSCK_ERRORS_LEFT_UNCORRECTED)))
>                          /* Some other problem */
>                          start_target(SPECIAL_EMERGENCY_TARGET);
>                  else {
> @@ -462,7 +471,7 @@ int main(int argc, char *argv[]) {
>          } else
>                  r = 0;
>  
> -        if (status.si_code == CLD_EXITED && (status.si_status & 1))
> +        if (status.si_code == CLD_EXITED && (status.si_status & FSCK_ERROR_CORRECTED))
>                  (void) touch("/run/systemd/quotacheck");
>  
>  finish:
> -- 
> 2.4.0
> 
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list