[1/2] criu: Introduce the --deprecated/CRIU_DEPRECATED option

Submitted by Pavel Emelianov on Aug. 12, 2016, 11:08 a.m.

Details

Message ID 57ADAE41.9090201@virtuozzo.com
State Rejected
Series "Deprecation"
Headers show

Commit Message

Pavel Emelianov Aug. 12, 2016, 11:08 a.m.
This is the option that would enable the deprecated (to be removed)
functionality. For convenience it's also possible to set one via
the environment.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
---
 criu/crtools.c            | 23 +++++++++++++++++++++++
 criu/include/cr_options.h |  8 ++++++++
 criu/include/crtools.h    |  2 +-
 3 files changed, 32 insertions(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/criu/crtools.c b/criu/crtools.c
index 7e11c22..bde8a48 100644
--- a/criu/crtools.c
+++ b/criu/crtools.c
@@ -249,6 +249,17 @@  int add_external(char *key)
 	return 0;
 }
 
+bool deprecated_ok(char *what)
+{
+	if (opts.deprecated_ok)
+		return true;
+
+	pr_err("Deprecated functionality (%s) rejected.\n", what);
+	pr_err("Use the --deprecated option or set CRIU_DEPRECATED environment.\n");
+	pr_err("For details visit https://criu.org/Deprecation\n");
+	return false;
+}
+
 int main(int argc, char *argv[], char *envp[])
 {
 	pid_t pid = 0, tree_id = 0;
@@ -324,6 +335,7 @@  int main(int argc, char *argv[], char *envp[])
 		{ "cgroup-props-file",		required_argument,	0, 1081	},
 		{ "cgroup-dump-controller",	required_argument,	0, 1082	},
 		{ SK_INFLIGHT_PARAM,		no_argument,		0, 1083	},
+		{ "deprecated",			no_argument,		0, 1084 },
 		{ },
 	};
 
@@ -639,6 +651,10 @@  int main(int argc, char *argv[], char *envp[])
 			pr_msg("Will skip in-flight TCP connections\n");
 			opts.tcp_skip_in_flight = true;
 			break;
+		case 1094:
+			pr_msg("Turn deprecated stuff ON\n");
+			opts.deprecated_ok = true;
+			break;
 		case 'V':
 			pr_msg("Version: %s\n", CRIU_VERSION);
 			if (strcmp(CRIU_GITID, "0"))
@@ -652,6 +668,11 @@  int main(int argc, char *argv[], char *envp[])
 		}
 	}
 
+	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 confict\n");
 		return 1;
@@ -726,6 +747,8 @@  int main(int argc, char *argv[], char *envp[])
 		return 1;
 
 	pr_debug("Version: %s (gitid %s)\n", CRIU_VERSION, CRIU_GITID);
+	if (opts.deprecated_ok)
+		pr_debug("DEPRECATED ON\n");
 
 	if (!list_empty(&opts.inherit_fds)) {
 		if (strcmp(argv[optind], "restore")) {
diff --git a/criu/include/cr_options.h b/criu/include/cr_options.h
index 35c1ace..cd27ec4 100644
--- a/criu/include/cr_options.h
+++ b/criu/include/cr_options.h
@@ -113,6 +113,14 @@  struct cr_options {
 	bool			lazy_pages;
 	bool			tcp_skip_in_flight;
 	char			*work_dir;
+
+	/*
+	 * When we scheduler for removal some functionality we first
+	 * deprecate it and it sits in criu for some time. By default
+	 * the deprecated stuff is not working, but it's still possible
+	 * to turn one ON while the code is in.
+	 */
+	bool			deprecated_ok;
 };
 
 extern struct cr_options opts;
diff --git a/criu/include/crtools.h b/criu/include/crtools.h
index f3c9f7f..878e6a1 100644
--- a/criu/include/crtools.h
+++ b/criu/include/crtools.h
@@ -15,7 +15,7 @@  extern int check_img_inventory(void);
 extern int write_img_inventory(InventoryEntry *he);
 extern int prepare_inventory(InventoryEntry *he);
 extern int add_post_prepare_cb(int (*actor)(void *data), void *data);
-
+extern bool deprecated_ok(char *what);
 extern int cr_dump_tasks(pid_t pid);
 extern int cr_pre_dump_tasks(pid_t pid);
 extern int cr_restore_tasks(void);

Comments

Dmitry Safonov Aug. 12, 2016, 11:22 a.m.
On 08/12/2016 02:08 PM, Pavel Emelyanov wrote:
> This is the option that would enable the deprecated (to be removed)
> functionality. For convenience it's also possible to set one via
> the environment.
>
> Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>

[...]

> diff --git a/criu/crtools.c b/criu/crtools.c
> index 7e11c22..bde8a48 100644
> --- a/criu/crtools.c
> +++ b/criu/crtools.c
> @@ -324,6 +335,7 @@ int main(int argc, char *argv[], char *envp[])
>  		{ "cgroup-props-file",		required_argument,	0, 1081	},
>  		{ "cgroup-dump-controller",	required_argument,	0, 1082	},
>  		{ SK_INFLIGHT_PARAM,		no_argument,		0, 1083	},
> +		{ "deprecated",			no_argument,		0, 1084 },
.
>  		{ },
>  	};
>
> @@ -639,6 +651,10 @@ int main(int argc, char *argv[], char *envp[])
>  			pr_msg("Will skip in-flight TCP connections\n");
>  			opts.tcp_skip_in_flight = true;
>  			break;
> +		case 1094:

Looks like typo ;)     ^
Pavel Emelianov Aug. 12, 2016, 11:32 a.m.
On 08/12/2016 02:22 PM, Dmitry Safonov wrote:
> On 08/12/2016 02:08 PM, Pavel Emelyanov wrote:
>> This is the option that would enable the deprecated (to be removed)
>> functionality. For convenience it's also possible to set one via
>> the environment.
>>
>> Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
> 
> [...]
> 
>> diff --git a/criu/crtools.c b/criu/crtools.c
>> index 7e11c22..bde8a48 100644
>> --- a/criu/crtools.c
>> +++ b/criu/crtools.c
>> @@ -324,6 +335,7 @@ int main(int argc, char *argv[], char *envp[])
>>  		{ "cgroup-props-file",		required_argument,	0, 1081	},
>>  		{ "cgroup-dump-controller",	required_argument,	0, 1082	},
>>  		{ SK_INFLIGHT_PARAM,		no_argument,		0, 1083	},
>> +		{ "deprecated",			no_argument,		0, 1084 },
> .
>>  		{ },
>>  	};
>>
>> @@ -639,6 +651,10 @@ int main(int argc, char *argv[], char *envp[])
>>  			pr_msg("Will skip in-flight TCP connections\n");
>>  			opts.tcp_skip_in_flight = true;
>>  			break;
>> +		case 1094:
> 
> Looks like typo ;)     ^
> 

Ah :( It is... Thanks!

-- Pavel