kexec: implemented XEN KEXEC STATUS to determine if an image is loaded
Subsystems (2)
PATCH v4 1/1 kexec: implemented XEN KEXEC STATUS to determine if an image is loaded
Instead of the scripts having to poke at various fields we can provide that functionality via the -S parameter.
kexec_loaded/kexec_crash_loaded exposes Linux kernel kexec/crash state. It does not say anything about Xen kexec/crash state. So, we need a special approach to get the latter. Though for compatibility we provide similar functionality in kexec-tools for the former.
This change enables the --status or -S option to work either with or without Xen.
Returns 0 if the payload is loaded. Can be used in combination with -l or -p to get the state of the proper kexec image.
---
CC: [email protected]
CC: [email protected]
CC: Daniel Kiper <[email protected]>
v0: First version (internal product).
v1: Posted on kexec mailing list. Changed -s to -S
v2: Incorporated feedback from kexec mailing list, posted on kexec mailing list
v3: Incorporated feedback from kexec mailing list, posted on kexec mailing list
v4: Incorporated feedback from kexec mailing list
--- configure.ac | 8 +++- kexec/kexec-xen.c | 26 +++++++++++++ kexec/kexec.8 | 6 +++ kexec/kexec.c | 114 ++++++++++++++++++++++++++++++++++++++---------------- kexec/kexec.h | 5 ++- 5 files changed, 123 insertions(+), 36 deletions(-)
configure.ac +7 -1
@@ -165,8 +165,14 @@ fi dnl find Xen control stack libraries if test "$with_xen" = yes ; then AC_CHECK_HEADER(xenctrl.h, - [AC_CHECK_LIB(xenctrl, xc_kexec_load, , + [AC_CHECK_LIB(xenctrl, xc_kexec_load, [ have_xenctrl_h=yes ], AC_MSG_NOTICE([Xen support disabled]))]) + if test "$have_xenctrl_h" = yes ; then + AC_CHECK_LIB(xenctrl, xc_kexec_status, + AC_DEFINE(HAVE_KEXEC_CMD_STATUS, 1, + [The kexec_status call is available]), + AC_MSG_NOTICE([The kexec_status call is not available])) + fi fi dnl ---Sanity checks
kexec/kexec-xen.c +26 -0
@@ -105,6 +105,27 @@ int xen_kexec_unload(uint64_t kexec_flags)return ret; } +int xen_kexec_status (uint64_t kexec_flags) +{ +xc_interface *xch; +uint8_t type; +int ret =-1 ; + +#ifdef HAVE_KEXEC_CMD_STATUS + xch =xc_interface_open (NULL ,NULL ,0 ); +if (!xch) +return -1 ; + + type = (kexec_flags &KEXEC_ON_CRASH ) ?KEXEC_TYPE_CRASH :KEXEC_TYPE_DEFAULT ; + + ret =xc_kexec_status (xch, type); + +xc_interface_close (xch); +#endif + +return ret; +} +void xen_kexec_exec (void ) {xc_interface *xch;
@@ -130,6 +151,11 @@ int xen_kexec_unload(uint64_t kexec_flags)return -1 ; } +int xen_kexec_status (uint64_t kexec_flags) +{ +return -1 ; +} +void xen_kexec_exec (void ) { }
kexec/kexec.8 +6 -0
@@ -107,6 +107,12 @@ command: .B \-d\ (\-\-debug) Enable debugging messages. .TP +.B \-S\ (\-\-status) +Return 0 if the type (by default crash) is loaded. Can be used in conjuction +with -l or -p to toggle the type. Note this option supersedes other options +and it will +.BR not\ load\ or\ unload\ the\ kernel. +.TP .B \-e\ (\-\-exec) Run the currently loaded kernel. Note that it will reboot into the loaded kernel without calling shutdown(8). .TP
kexec/kexec.c +80 -34
185 lines not on this page · raw message
kexec/kexec.h +4 -1
@@ -219,6 +219,7 @@ extern int file_types;#define OPT_TYPE 't'#define OPT_PANIC 'p'#define OPT_KEXEC_FILE_SYSCALL 's' +#define OPT_STATUS 'S'#define OPT_MEM_MIN 256#define OPT_MEM_MAX 257#define OPT_REUSE_INITRD 258
@@ -245,8 +246,9 @@ extern int file_types; { "reuseinitrd", 0, 0, OPT_REUSE_INITRD }, \ { "kexec-file-syscall", 0, 0, OPT_KEXEC_FILE_SYSCALL }, \ { "debug", 0, 0, OPT_DEBUG }, \ + { "status", 0, 0, OPT_STATUS }, \ -#define KEXEC_OPT_STR "h?vdfxyluet:ps" +#define KEXEC_OPT_STR "h?vdfxyluet:psS" extern void dbgprint_mem_range(const char *prefix, struct memory_range *mr, int nr_mr);extern void die (const char *fmt, ...)
@@ -311,5 +313,6 @@ int xen_present(void);int xen_kexec_load (struct kexec_info *info);int xen_kexec_unload (uint64_t kexec_flags);void xen_kexec_exec (void ); +int xen_kexec_status (uint64_t kexec_flags);#endif /* KEXEC_H */
Signature · 7 lines
2.7.4 _______________________________________________ kexec mailing list [email protected] http://lists.infradead.org/mailman/listinfo/kexec
On Wed, Jan 25, 2017 at 09:31:15AM -0600, Eric DeVolder wrote:
[...]
Quoted 126 lines
kexec/kexec.c +49
-31@@ -51,6 +51,9 @@#include "kexec-lzma.h" #include <arch/options.h> +#define KEXEC_LOADED_PATH "/sys/kernel/kexec_loaded" +#define KEXEC_CRASH_LOADED_PATH "/sys/kernel/kexec_crash_loaded" +unsigned long long mem_min =0 ;unsigned long long mem_max =ULONG_MAX ;static unsigned long kexec_flags =0 ;@@ -890,8 +893,6 @@ static int my_exec(void)return -1 ; } -static int kexec_loaded (void ); -static int load_jump_back_helper_image (unsigned long kexec_flags,void *entry) {int result;@@ -902,6 +903,40 @@ static int load_jump_back_helper_image(unsigned long kexec_flags, void *entry)return result; } +static int kexec_loaded (const char *file) +{ +long ret =-1 ; +FILE *fp; +char *p; +char line[3 ]; + +/* No way to tell if an image is loaded under Xen, assume it is. */ +if (xen_present ()) +return 1 ; + + fp =fopen (file,"r" ); +if (fp ==NULL ) +return -1 ; + + p =fgets (line,sizeof (line), fp); +fclose (fp); + +if (p ==NULL ) +return -1 ; + + ret =strtol (line, &p,10 ); + +/* Too long */ +if (ret >INT_MAX ) +return -1 ; + +/* No digits were found */ +if (p == line) +return -1 ; + +return (int )ret; +} +/* * Jump back to the original kernel */ @@ -909,7 +944,7 @@ static int my_load_jump_back_helper(unsigned long kexec_flags, void *entry) {int result; -if (kexec_loaded ()) { +if (kexec_loaded (KEXEC_LOADED_PATH )) {fprintf (stderr,"There is kexec kernel loaded, make sure " "you are in kexeced kernel.\n" );return -1 ;@@ -970,6 +1005,7 @@ void usage(void)" to original kernel.\n" " -s, --kexec-file-syscall Use file based syscall for kexec operation\n" " -d, --debug Enable debugging to help spot a failure.\n" +" -S, --status Return 0 if the type (by default crash) is loaded.\n" "\n" "Supported kernel file types and options: \n");for (i =0 ; i < file_types; i++) {@@ -981,40 +1017,30 @@ void usage(void)printf ("\n" ); } -static int kexec_loaded (void ) +static int k_status (unsigned long kexec_flags) { -long ret =-1 ; -FILE *fp; -char *p; -char line[3 ]; +int result; +long native_arch; + +/* set the arch */ + native_arch =physical_arch (); +if (native_arch <0 ) { +return -1 ; + } + kexec_flags |= native_arch; -/* No way to tell if an image is loaded under Xen, assume it is. */ if (xen_present ()) -return 1 ; - - fp =fopen ("/sys/kernel/kexec_loaded" ,"r" ); -if (fp ==NULL ) -return -1 ; - - p =fgets (line,sizeof (line), fp); -fclose (fp); - -if (p ==NULL ) -return -1 ; - - ret =strtol (line, &p,10 ); - -/* Too long */ -if (ret >INT_MAX ) -return -1 ; - -/* No digits were found */ -if (p == line) -return -1 ; -
kexec/kexec.c void usage(void) · line 1041
Quoted 10 lines
kexec/kexec.c +8
-1-return (int )ret; + result =xen_kexec_status (kexec_flags); + else { +if (kexec_flags &KEXEC_ON_CRASH ) + result =kexec_loaded (KEXEC_CRASH_LOADED_PATH ); +else + result =kexec_loaded (KEXEC_LOADED_PATH ); + } +return result; }
Ohhh... This is awful. Have you tried --patience option for "git format-patch"? Does it help? If yes please repost. If it does not let's wait for maintainers opinion about that. Maybe we should leave forward declaration in first patch as is and then move kexec_loaded() in second (as a cleanup).
Though otherwise LGTM.
Daniel
_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
Quoted 146 lines · Daniel Kiper
On Wed, Jan 25, 2017 at 09:31:15AM -0600, Eric DeVolder wrote:
[...]
Quoted 126 lines
kexec/kexec.c +49
-31@@ -51,6 +51,9 @@#include "kexec-lzma.h" #include <arch/options.h> +#define KEXEC_LOADED_PATH "/sys/kernel/kexec_loaded" +#define KEXEC_CRASH_LOADED_PATH "/sys/kernel/kexec_crash_loaded" +unsigned long long mem_min =0 ;unsigned long long mem_max =ULONG_MAX ;static unsigned long kexec_flags =0 ;@@ -890,8 +893,6 @@ static int my_exec(void)return -1 ; } -static int kexec_loaded (void ); -static int load_jump_back_helper_image (unsigned long kexec_flags,void *entry) {int result;@@ -902,6 +903,40 @@ static int load_jump_back_helper_image(unsigned long kexec_flags, void *entry)return result; } +static int kexec_loaded (const char *file) +{ +long ret =-1 ; +FILE *fp; +char *p; +char line[3 ]; + +/* No way to tell if an image is loaded under Xen, assume it is. */ +if (xen_present ()) +return 1 ; + + fp =fopen (file,"r" ); +if (fp ==NULL ) +return -1 ; + + p =fgets (line,sizeof (line), fp); +fclose (fp); + +if (p ==NULL ) +return -1 ; + + ret =strtol (line, &p,10 ); + +/* Too long */ +if (ret >INT_MAX ) +return -1 ; + +/* No digits were found */ +if (p == line) +return -1 ; + +return (int )ret; +} +/* * Jump back to the original kernel */ @@ -909,7 +944,7 @@ static int my_load_jump_back_helper(unsigned long kexec_flags, void *entry) {int result; -if (kexec_loaded ()) { +if (kexec_loaded (KEXEC_LOADED_PATH )) {fprintf (stderr,"There is kexec kernel loaded, make sure " "you are in kexeced kernel.\n" );return -1 ;@@ -970,6 +1005,7 @@ void usage(void)" to original kernel.\n" " -s, --kexec-file-syscall Use file based syscall for kexec operation\n" " -d, --debug Enable debugging to help spot a failure.\n" +" -S, --status Return 0 if the type (by default crash) is loaded.\n" "\n" "Supported kernel file types and options: \n");for (i =0 ; i < file_types; i++) {@@ -981,40 +1017,30 @@ void usage(void)printf ("\n" ); } -static int kexec_loaded (void ) +static int k_status (unsigned long kexec_flags) { -long ret =-1 ; -FILE *fp; -char *p; -char line[3 ]; +int result; +long native_arch; + +/* set the arch */ + native_arch =physical_arch (); +if (native_arch <0 ) { +return -1 ; + } + kexec_flags |= native_arch; -/* No way to tell if an image is loaded under Xen, assume it is. */ if (xen_present ()) -return 1 ; - - fp =fopen ("/sys/kernel/kexec_loaded" ,"r" ); -if (fp ==NULL ) -return -1 ; - - p =fgets (line,sizeof (line), fp); -fclose (fp); - -if (p ==NULL ) -return -1 ; - - ret =strtol (line, &p,10 ); - -/* Too long */ -if (ret >INT_MAX ) -return -1 ; - -/* No digits were found */ -if (p == line) -return -1 ; -kexec/kexec.c void usage(void) · line 1041
Quoted 10 lines
kexec/kexec.c +8
-1-return (int )ret; + result =xen_kexec_status (kexec_flags); + else { +if (kexec_flags &KEXEC_ON_CRASH ) + result =kexec_loaded (KEXEC_CRASH_LOADED_PATH ); +else + result =kexec_loaded (KEXEC_LOADED_PATH ); + } +return result; }Ohhh... This is awful. Have you tried --patience option for "git format-patch"? Does it help? If yes please repost. If it does not let's wait for maintainers opinion about that. Maybe we should leave forward declaration in first patch as is and then move
kexec_loaded()in second (as a cleanup).
Quoted 1 line
Though otherwise LGTM.
It did not seem to help when I tried.
I'm happy with things the way they are and I will apply this patch.
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel
Quoted 147 lines · Simon Horman
Quoted 146 lines · Daniel Kiper
On Wed, Jan 25, 2017 at 09:31:15AM -0600, Eric DeVolder wrote:
[...]
Quoted 126 lines
kexec/kexec.c +49
-31@@ -51,6 +51,9 @@#include "kexec-lzma.h" #include <arch/options.h> +#define KEXEC_LOADED_PATH "/sys/kernel/kexec_loaded" +#define KEXEC_CRASH_LOADED_PATH "/sys/kernel/kexec_crash_loaded" +unsigned long long mem_min =0 ;unsigned long long mem_max =ULONG_MAX ;static unsigned long kexec_flags =0 ;@@ -890,8 +893,6 @@ static int my_exec(void)return -1 ; } -static int kexec_loaded (void ); -static int load_jump_back_helper_image (unsigned long kexec_flags,void *entry) {int result;@@ -902,6 +903,40 @@ static int load_jump_back_helper_image(unsigned long kexec_flags, void *entry)return result; } +static int kexec_loaded (const char *file) +{ +long ret =-1 ; +FILE *fp; +char *p; +char line[3 ]; + +/* No way to tell if an image is loaded under Xen, assume it is. */ +if (xen_present ()) +return 1 ; + + fp =fopen (file,"r" ); +if (fp ==NULL ) +return -1 ; + + p =fgets (line,sizeof (line), fp); +fclose (fp); + +if (p ==NULL ) +return -1 ; + + ret =strtol (line, &p,10 ); + +/* Too long */ +if (ret >INT_MAX ) +return -1 ; + +/* No digits were found */ +if (p == line) +return -1 ; + +return (int )ret; +} +/* * Jump back to the original kernel */ @@ -909,7 +944,7 @@ static int my_load_jump_back_helper(unsigned long kexec_flags, void *entry) {int result; -if (kexec_loaded ()) { +if (kexec_loaded (KEXEC_LOADED_PATH )) {fprintf (stderr,"There is kexec kernel loaded, make sure " "you are in kexeced kernel.\n" );return -1 ;@@ -970,6 +1005,7 @@ void usage(void)" to original kernel.\n" " -s, --kexec-file-syscall Use file based syscall for kexec operation\n" " -d, --debug Enable debugging to help spot a failure.\n" +" -S, --status Return 0 if the type (by default crash) is loaded.\n" "\n" "Supported kernel file types and options: \n");for (i =0 ; i < file_types; i++) {@@ -981,40 +1017,30 @@ void usage(void)printf ("\n" ); } -static int kexec_loaded (void ) +static int k_status (unsigned long kexec_flags) { -long ret =-1 ; -FILE *fp; -char *p; -char line[3 ]; +int result; +long native_arch; + +/* set the arch */ + native_arch =physical_arch (); +if (native_arch <0 ) { +return -1 ; + } + kexec_flags |= native_arch; -/* No way to tell if an image is loaded under Xen, assume it is. */ if (xen_present ()) -return 1 ; - - fp =fopen ("/sys/kernel/kexec_loaded" ,"r" ); -if (fp ==NULL ) -return -1 ; - - p =fgets (line,sizeof (line), fp); -fclose (fp); - -if (p ==NULL ) -return -1 ; - - ret =strtol (line, &p,10 ); - -/* Too long */ -if (ret >INT_MAX ) -return -1 ; - -/* No digits were found */ -if (p == line) -return -1 ; -kexec/kexec.c void usage(void) · line 1041
Quoted 10 lines
kexec/kexec.c +8
-1-return (int )ret; + result =xen_kexec_status (kexec_flags); + else { +if (kexec_flags &KEXEC_ON_CRASH ) + result =kexec_loaded (KEXEC_CRASH_LOADED_PATH ); +else + result =kexec_loaded (KEXEC_LOADED_PATH ); + } +return result; }Ohhh... This is awful. Have you tried --patience option for "git format-patch"? Does it help? If yes please repost. If it does not let's wait for maintainers opinion about that. Maybe we should leave forward declaration in first patch as is and then move
kexec_loaded()in second (as a cleanup).
Quoted 5 lines
Quoted 1 line
Though otherwise LGTM.
It did not seem to help when I tried.
I'm happy with things the way they are and I will apply this patch.
Great! Thanks.
Daniel
_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
Quoted 147 lines · Simon Horman
Quoted 146 lines · Daniel Kiper
On Wed, Jan 25, 2017 at 09:31:15AM -0600, Eric DeVolder wrote:
[...]
Quoted 126 lines
kexec/kexec.c +49
-31@@ -51,6 +51,9 @@#include "kexec-lzma.h" #include <arch/options.h> +#define KEXEC_LOADED_PATH "/sys/kernel/kexec_loaded" +#define KEXEC_CRASH_LOADED_PATH "/sys/kernel/kexec_crash_loaded" +unsigned long long mem_min =0 ;unsigned long long mem_max =ULONG_MAX ;static unsigned long kexec_flags =0 ;@@ -890,8 +893,6 @@ static int my_exec(void)return -1 ; } -static int kexec_loaded (void ); -static int load_jump_back_helper_image (unsigned long kexec_flags,void *entry) {int result;@@ -902,6 +903,40 @@ static int load_jump_back_helper_image(unsigned long kexec_flags, void *entry)return result; } +static int kexec_loaded (const char *file) +{ +long ret =-1 ; +FILE *fp; +char *p; +char line[3 ]; + +/* No way to tell if an image is loaded under Xen, assume it is. */ +if (xen_present ()) +return 1 ; + + fp =fopen (file,"r" ); +if (fp ==NULL ) +return -1 ; + + p =fgets (line,sizeof (line), fp); +fclose (fp); + +if (p ==NULL ) +return -1 ; + + ret =strtol (line, &p,10 ); + +/* Too long */ +if (ret >INT_MAX ) +return -1 ; + +/* No digits were found */ +if (p == line) +return -1 ; + +return (int )ret; +} +/* * Jump back to the original kernel */ @@ -909,7 +944,7 @@ static int my_load_jump_back_helper(unsigned long kexec_flags, void *entry) {int result; -if (kexec_loaded ()) { +if (kexec_loaded (KEXEC_LOADED_PATH )) {fprintf (stderr,"There is kexec kernel loaded, make sure " "you are in kexeced kernel.\n" );return -1 ;@@ -970,6 +1005,7 @@ void usage(void)" to original kernel.\n" " -s, --kexec-file-syscall Use file based syscall for kexec operation\n" " -d, --debug Enable debugging to help spot a failure.\n" +" -S, --status Return 0 if the type (by default crash) is loaded.\n" "\n" "Supported kernel file types and options: \n");for (i =0 ; i < file_types; i++) {@@ -981,40 +1017,30 @@ void usage(void)printf ("\n" ); } -static int kexec_loaded (void ) +static int k_status (unsigned long kexec_flags) { -long ret =-1 ; -FILE *fp; -char *p; -char line[3 ]; +int result; +long native_arch; + +/* set the arch */ + native_arch =physical_arch (); +if (native_arch <0 ) { +return -1 ; + } + kexec_flags |= native_arch; -/* No way to tell if an image is loaded under Xen, assume it is. */ if (xen_present ()) -return 1 ; - - fp =fopen ("/sys/kernel/kexec_loaded" ,"r" ); -if (fp ==NULL ) -return -1 ; - - p =fgets (line,sizeof (line), fp); -fclose (fp); - -if (p ==NULL ) -return -1 ; - - ret =strtol (line, &p,10 ); - -/* Too long */ -if (ret >INT_MAX ) -return -1 ; - -/* No digits were found */ -if (p == line) -return -1 ; -kexec/kexec.c void usage(void) · line 1041
Quoted 10 lines
kexec/kexec.c +8
-1-return (int )ret; + result =xen_kexec_status (kexec_flags); + else { +if (kexec_flags &KEXEC_ON_CRASH ) + result =kexec_loaded (KEXEC_CRASH_LOADED_PATH ); +else + result =kexec_loaded (KEXEC_LOADED_PATH ); + } +return result; }Ohhh... This is awful. Have you tried --patience option for "git format-patch"? Does it help? If yes please repost. If it does not let's wait for maintainers opinion about that. Maybe we should leave forward declaration in first patch as is and then move
kexec_loaded()in second (as a cleanup).
Quoted 5 lines
Quoted 1 line
Though otherwise LGTM.
It did not seem to help when I tried.
I'm happy with things the way they are and I will apply this patch.
Great! Thanks.
Daniel
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel
On Wed, Jan 25, 2017 at 09:31:15AM -0600, Eric DeVolder wrote:
[...]
Quoted 126 lines
kexec/kexec.c +49
-31@@ -51,6 +51,9 @@#include "kexec-lzma.h" #include <arch/options.h> +#define KEXEC_LOADED_PATH "/sys/kernel/kexec_loaded" +#define KEXEC_CRASH_LOADED_PATH "/sys/kernel/kexec_crash_loaded" +unsigned long long mem_min =0 ;unsigned long long mem_max =ULONG_MAX ;static unsigned long kexec_flags =0 ;@@ -890,8 +893,6 @@ static int my_exec(void)return -1 ; } -static int kexec_loaded (void ); -static int load_jump_back_helper_image (unsigned long kexec_flags,void *entry) {int result;@@ -902,6 +903,40 @@ static int load_jump_back_helper_image(unsigned long kexec_flags, void *entry)return result; } +static int kexec_loaded (const char *file) +{ +long ret =-1 ; +FILE *fp; +char *p; +char line[3 ]; + +/* No way to tell if an image is loaded under Xen, assume it is. */ +if (xen_present ()) +return 1 ; + + fp =fopen (file,"r" ); +if (fp ==NULL ) +return -1 ; + + p =fgets (line,sizeof (line), fp); +fclose (fp); + +if (p ==NULL ) +return -1 ; + + ret =strtol (line, &p,10 ); + +/* Too long */ +if (ret >INT_MAX ) +return -1 ; + +/* No digits were found */ +if (p == line) +return -1 ; + +return (int )ret; +} +/* * Jump back to the original kernel */ @@ -909,7 +944,7 @@ static int my_load_jump_back_helper(unsigned long kexec_flags, void *entry) {int result; -if (kexec_loaded ()) { +if (kexec_loaded (KEXEC_LOADED_PATH )) {fprintf (stderr,"There is kexec kernel loaded, make sure " "you are in kexeced kernel.\n" );return -1 ;@@ -970,6 +1005,7 @@ void usage(void)" to original kernel.\n" " -s, --kexec-file-syscall Use file based syscall for kexec operation\n" " -d, --debug Enable debugging to help spot a failure.\n" +" -S, --status Return 0 if the type (by default crash) is loaded.\n" "\n" "Supported kernel file types and options: \n");for (i =0 ; i < file_types; i++) {@@ -981,40 +1017,30 @@ void usage(void)printf ("\n" ); } -static int kexec_loaded (void ) +static int k_status (unsigned long kexec_flags) { -long ret =-1 ; -FILE *fp; -char *p; -char line[3 ]; +int result; +long native_arch; + +/* set the arch */ + native_arch =physical_arch (); +if (native_arch <0 ) { +return -1 ; + } + kexec_flags |= native_arch; -/* No way to tell if an image is loaded under Xen, assume it is. */ if (xen_present ()) -return 1 ; - - fp =fopen ("/sys/kernel/kexec_loaded" ,"r" ); -if (fp ==NULL ) -return -1 ; - - p =fgets (line,sizeof (line), fp); -fclose (fp); - -if (p ==NULL ) -return -1 ; - - ret =strtol (line, &p,10 ); - -/* Too long */ -if (ret >INT_MAX ) -return -1 ; - -/* No digits were found */ -if (p == line) -return -1 ; -
kexec/kexec.c void usage(void) · line 1041
Quoted 10 lines
kexec/kexec.c +8
-1-return (int )ret; + result =xen_kexec_status (kexec_flags); + else { +if (kexec_flags &KEXEC_ON_CRASH ) + result =kexec_loaded (KEXEC_CRASH_LOADED_PATH ); +else + result =kexec_loaded (KEXEC_LOADED_PATH ); + } +return result; }
Ohhh... This is awful. Have you tried --patience option for "git format-patch"? Does it help? If yes please repost. If it does not let's wait for maintainers opinion about that. Maybe we should leave forward declaration in first patch as is and then move kexec_loaded() in second (as a cleanup).
Though otherwise LGTM.
Daniel
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel