[PATCH REPOST 2/2] kexec: remove ordering constraints from -x (--no-ifdown) and -y (--no-sync)

Tejun Heo tj at kernel.org
Tue Apr 14 05:16:02 PDT 2015


>From 81b5889b49f0f2448c3e9543c5c936d52348910c Mon Sep 17 00:00:00 2001
From: Tejun Heo <tj at kernel.org>
Date: Thu, 26 Mar 2015 15:11:09 -0400

Currently, the two options must be the last ones to be honored;
otherwise, they can get silently ignored and both the manpage and help
text point it out.  This is error-prone and trivial to fix.  There
isn't much point in pointing something out in documentation when the
peculiarity can be removed with four lines of extra code.

Update option handling so that the two arguments are honored
regardless of their positions.

Signed-off-by: Tejun Heo <tj at kernel.org>
---
 kexec/kexec.8 |  6 ++----
 kexec/kexec.c | 17 +++++++++--------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/kexec/kexec.8 b/kexec/kexec.8
index 24d1969..4d0c1d1 100644
--- a/kexec/kexec.8
+++ b/kexec/kexec.8
@@ -147,12 +147,10 @@ target kernel. If a capture kernel is being unloaded then specify -p with -u.
 Return the version number of the installed utility.
 .TP
 .B \-x\ (\-\-no\-ifdown)
-Shut down the running kernel, but restore the interface on reload. (If
-this option is used, it must be one of last options specified.)
+Shut down the running kernel, but restore the interface on reload.
 .TP
 .B \-y\ (\-\-no\-sync)
-Shut down the running kernel, but skip syncing the filesystems. (If
-this option is used, it must be one of last options specified.)
+Shut down the running kernel, but skip syncing the filesystems.
 .TP
 .BI \-\-mem\-min= addr
 Specify the lowest memory address
diff --git a/kexec/kexec.c b/kexec/kexec.c
index 7123460..8ce6885 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -913,11 +913,7 @@ void usage(void)
 	       " -f, --force          Force an immediate kexec,\n"
 	       "                      don't call shutdown.\n"
 	       " -x, --no-ifdown      Don't bring down network interfaces.\n"
-	       "                      (if used, must be one of last options\n"
-	       "                       specified)\n"
 	       " -y, --no-sync        Don't sync filesystems before kexec.\n"
-	       "                      (if used, must be one of last options\n"
-	       "                       specified)\n"
 	       " -l, --load           Load the new kernel into the\n"
 	       "                      current kernel.\n"
 	       " -p, --load-panic     Load the new kernel for use on panic.\n"
@@ -1170,8 +1166,8 @@ int main(int argc, char *argv[])
 	int do_exec = 0;
 	int do_load_jump_back_helper = 0;
 	int do_shutdown = 1;
-	int do_sync = 1;
-	int do_ifdown = 0;
+	int do_sync = 1, skip_sync = 0;
+	int do_ifdown = 0, skip_ifdown = 0;
 	int do_unload = 0;
 	int do_reuse_initrd = 0;
 	int do_kexec_file_syscall = 0;
@@ -1219,10 +1215,10 @@ int main(int argc, char *argv[])
 		case OPT_DEBUG:
 			kexec_debug = 1;
 		case OPT_NOIFDOWN:
-			do_ifdown = 0;
+			skip_ifdown = 1;
 			break;
 		case OPT_NOSYNC:
-			do_sync = 0;
+			skip_sync = 1;
 			break;
 		case OPT_FORCE:
 			do_load = 1;
@@ -1321,6 +1317,11 @@ int main(int argc, char *argv[])
 		}
 	}
 
+	if (skip_ifdown)
+		do_ifdown = 0;
+	if (skip_sync)
+		do_sync = 0;
+
 	if (do_load && (kexec_flags & KEXEC_ON_CRASH) &&
 	    !is_crashkernel_mem_reserved()) {
 		die("Memory for crashkernel is not reserved\n"
-- 
2.1.0




More information about the kexec mailing list