[CRIU] [PATCH 2/2] config: Add check_options helper

Andrei Vagin avagin at gmail.com
Sun Jan 13 09:29:33 MSK 2019


Adrian, could you review this patch?

On Sun, Jan 06, 2019 at 03:44:27PM +0000, Radostin Stoyanov wrote:
> The purpose of this helper function is to perform actions common to
> different interfaces, after all CRIU options have been parsed. This can
> be used, for instance, to verify that a specific option was passed to
> CRIU via CLI, RPC or config file.
> 
> Signed-off-by: Radostin Stoyanov <rstoyanov1 at gmail.com>
> ---
>  criu/config.c             | 33 +++++++++++++++++++++++++++++++++
>  criu/cr-service.c         |  5 +++--
>  criu/crtools.c            | 25 +------------------------
>  criu/include/cr_options.h |  1 +
>  4 files changed, 38 insertions(+), 26 deletions(-)
> 
> diff --git a/criu/config.c b/criu/config.c
> index f4fb39b86..b6ecbfb64 100644
> --- a/criu/config.c
> +++ b/criu/config.c
> @@ -803,3 +803,36 @@ bad_arg:
>  				long_opts[idx].name, optarg);
>  	return 1;
>  }
> +
> +int check_options()
> +{
> +	if (opts.tcp_established_ok)
> +		pr_info("Will dump/restore TCP connections\n");
> +	if (opts.tcp_skip_in_flight)
> +		pr_info("Will skip in-flight TCP connections\n");
> +	if (opts.tcp_close)
> +		pr_info("Will drop all TCP connections on restore\n");
> +	if (opts.link_remap_ok)
> +		pr_info("Will allow link remaps on FS\n");
> +	if (opts.weak_sysctls)
> +		pr_info("Will skip non-existant sysctls on restore\n");
> +
> +	if (opts.deprecated_ok)
> +		pr_info("Turn deprecated stuff ON\n");
> +	else if (getenv("CRIU_DEPRECATED")) {
> +		pr_info("Turn deprecated stuff ON via env\n");
> +		opts.deprecated_ok = true;
> +	}
> +
> +	if (!opts.restore_detach && opts.restore_sibling) {
> +		pr_err("--restore-sibling only makes sense with --restore-detach\n");
> +		return 1;
> +	}
> +
> +	if (check_namespace_opts()) {
> +		pr_err("Error: namespace flags conflict\n");
> +		return 1;
> +	}
> +
> +	return 0;
> +}
> diff --git a/criu/cr-service.c b/criu/cr-service.c
> index 37cc6f7df..231a37f30 100644
> --- a/criu/cr-service.c
> +++ b/criu/cr-service.c
> @@ -639,8 +639,6 @@ static int setup_opts_from_req(int sk, CriuOpts *req)
>  	if (req->orphan_pts_master)
>  		opts.orphan_pts_master = true;
>  
> -	if (check_namespace_opts())
> -		goto err;
>  
>  	/* Evaluate additional configuration file a second time to overwrite
>  	 * all RPC settings. */
> @@ -650,7 +648,10 @@ static int setup_opts_from_req(int sk, CriuOpts *req)
>  		if (i)
>  			goto err;
>  	}
> +
>  	log_set_loglevel(opts.log_level);
> +	if (check_options())
> +		goto err;
>  
>  	return 0;
>  
> diff --git a/criu/crtools.c b/criu/crtools.c
> index c8b9ab19c..1ca30c74f 100644
> --- a/criu/crtools.c
> +++ b/criu/crtools.c
> @@ -112,31 +112,8 @@ int main(int argc, char *argv[], char *envp[])
>  		return cr_service_work(atoi(argv[2]));
>  	}
>  
> -	if (opts.deprecated_ok)
> -		pr_msg("Turn deprecated stuff ON\n");
> -	if (opts.tcp_skip_in_flight)
> -		pr_msg("Will skip in-flight TCP connections\n");
> -	if (opts.tcp_established_ok)
> -		pr_info("Will dump TCP connections\n");
> -	if (opts.link_remap_ok)
> -		pr_info("Will allow link remaps on FS\n");
> -	if (opts.weak_sysctls)
> -		pr_msg("Will skip non-existant sysctls on restore\n");
> -
> -	if (getenv("CRIU_DEPRECATED")) {
> -		pr_msg("Turn deprecated stuff ON via env\n");
> -		opts.deprecated_ok = true;
> -	}
> -
> -	if (check_namespace_opts()) {
> -		pr_msg("Error: namespace flags conflict\n");
> +	if (check_options())
>  		return 1;
> -	}
> -
> -	if (!opts.restore_detach && opts.restore_sibling) {
> -		pr_msg("--restore-sibling only makes sense with --restore-detach\n");
> -		return 1;
> -	}
>  
>  	if (opts.imgs_dir == NULL)
>  		SET_CHAR_OPTS(imgs_dir, ".");
> diff --git a/criu/include/cr_options.h b/criu/include/cr_options.h
> index 4e8879cf6..8ddbf2341 100644
> --- a/criu/include/cr_options.h
> +++ b/criu/include/cr_options.h
> @@ -145,6 +145,7 @@ extern struct cr_options opts;
>  char *rpc_cfg_file;
>  
>  extern int parse_options(int argc, char **argv, bool *usage_error, bool *has_exec_cmd, int state);
> +extern int check_options();
>  extern void init_opts();
>  
>  #endif /* __CR_OPTIONS_H__ */
> -- 
> 2.20.1
> 
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list