[CRIU] [RFC] crtools: flush early log using destructor
Andrei Vagin
avagin at gmail.com
Sun Sep 15 07:43:54 MSK 2019
On Wed, Sep 11, 2019 at 03:38:14PM +0100, Radostin Stoyanov wrote:
> Print error messages to stderr (instead of stdout) when the early log
> is not initialised.
>
> This patch also removes changes introduced with commit 970198a
>
> Suggested-by: Dmitry Safonov <0x7f454c46 at gmail.com>
> Signed-off-by: Radostin Stoyanov <rstoyanov1 at gmail.com>
> ---
> criu/crtools.c | 31 ++++++++++++++++++-------------
> criu/proc_parse.c | 2 +-
> 2 files changed, 19 insertions(+), 14 deletions(-)
>
> diff --git a/criu/crtools.c b/criu/crtools.c
> index 97a6d6d6c..9db0bc486 100644
> --- a/criu/crtools.c
> +++ b/criu/crtools.c
> @@ -48,6 +48,13 @@
> #include "sysctl.h"
> #include "img-remote.h"
>
> +void flush_early_log_to_stderr() __attribute__((destructor));
> +
> +void flush_early_log_to_stderr(void)
> +{
> + flush_early_log_buffer(STDERR_FILENO);
> +}
> +
> int main(int argc, char *argv[], char *envp[])
> {
> int ret = -1;
> @@ -96,10 +103,8 @@ int main(int argc, char *argv[], char *envp[])
> return cr_service_work(atoi(argv[2]));
> }
>
> - if (check_options()) {
> - flush_early_log_buffer(STDERR_FILENO);
> + if (check_options())
> return 1;
> - }
>
> if (opts.imgs_dir == NULL)
> SET_CHAR_OPTS(imgs_dir, ".");
> @@ -108,7 +113,7 @@ int main(int argc, char *argv[], char *envp[])
> SET_CHAR_OPTS(work_dir, opts.imgs_dir);
>
> if (optind >= argc) {
> - pr_msg("Error: command is required\n");
> + pr_err("command is required\n");
Could you split this path on two:
* Introduce the flush_early_log_to_stderr destructor
* convert pr_msg to pr_err.
> goto usage;
> }
>
> @@ -116,17 +121,17 @@ int main(int argc, char *argv[], char *envp[])
>
> if (has_exec_cmd) {
> if (!has_sub_command) {
> - pr_msg("Error: --exec-cmd requires a command\n");
> + pr_err("--exec-cmd requires a command\n");
> goto usage;
> }
>
> if (strcmp(argv[optind], "restore")) {
> - pr_msg("Error: --exec-cmd is available for the restore command only\n");
> + pr_err("--exec-cmd is available for the restore command only\n");
> goto usage;
> }
>
> if (opts.restore_detach) {
> - pr_msg("Error: --restore-detached and --exec-cmd cannot be used together\n");
> + pr_err("--restore-detached and --exec-cmd cannot be used together\n");
> goto usage;
> }
>
> @@ -138,7 +143,7 @@ int main(int argc, char *argv[], char *envp[])
> } else {
> /* No subcommands except for cpuinfo and restore --exec-cmd */
> if (strcmp(argv[optind], "cpuinfo") && has_sub_command) {
> - pr_msg("Error: excessive parameter%s for command %s\n",
> + pr_err("excessive parameter%s for command %s\n",
> (argc - optind) > 2 ? "s" : "", argv[optind]);
> goto usage;
> }
> @@ -237,7 +242,7 @@ int main(int argc, char *argv[], char *envp[])
>
> if (!strcmp(argv[optind], "image-proxy")) {
> if (!opts.addr) {
> - pr_msg("Error: address not specified\n");
> + pr_err("address not specified\n");
> return 1;
> }
> if (!opts.port)
> @@ -253,7 +258,7 @@ int main(int argc, char *argv[], char *envp[])
>
> if (!strcmp(argv[optind], "cpuinfo")) {
> if (!argv[optind + 1]) {
> - pr_msg("Error: cpuinfo requires an action: dump or check\n");
> + pr_err("cpuinfo requires an action: dump or check\n");
> goto usage;
> }
> if (!strcmp(argv[optind + 1], "dump"))
> @@ -273,7 +278,7 @@ int main(int argc, char *argv[], char *envp[])
> return -1;
> }
>
> - pr_msg("Error: unknown command: %s\n", argv[optind]);
> + pr_err("unknown command: %s\n", argv[optind]);
> usage:
> pr_msg("\n"
> "Usage:\n"
> @@ -469,10 +474,10 @@ usage:
> return 0;
>
> opt_port_missing:
> - pr_msg("Error: port not specified\n");
> + pr_err("port not specified\n");
> return 1;
>
> opt_pid_missing:
> - pr_msg("Error: pid not specified\n");
> + pr_err("pid not specified\n");
> return 1;
> }
> diff --git a/criu/proc_parse.c b/criu/proc_parse.c
> index 0e8b6f209..97f82ee01 100644
> --- a/criu/proc_parse.c
> +++ b/criu/proc_parse.c
> @@ -932,7 +932,7 @@ int prepare_loginuid(unsigned int value, unsigned int loglevel)
>
> if (write(fd, buf, 11) < 0) {
> print_on_level(loglevel,
> - "Write %s to /proc/self/loginuid failed: %s",
> + "Write %s to /proc/self/loginuid failed: %s\n",
> buf, strerror(errno));
> ret = -1;
> }
> --
> 2.21.0
>
More information about the CRIU
mailing list