From 379abca968850d0fb66f42115178b040b3a1f5bb Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Tue, 23 Apr 2013 23:38:47 +0400 Subject: [PATCH] check: Introduce --ms option This option skips checking for features, that are known to be absent in mainstream kernel. Signed-off-by: Pavel Emelyanov --- cr-check.c | 12 +++++++++++- crtools.c | 5 +++++ include/crtools.h | 1 + sockets.c | 7 ++++++- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/cr-check.c b/cr-check.c index d22343923..f19bc4fcf 100644 --- a/cr-check.c +++ b/cr-check.c @@ -459,6 +459,11 @@ int check_ptrace_peeksiginfo() siginfo_t siginfo; pid_t pid, ret = 0; + if (opts.check_ms_kernel) { + pr_warn("Skipping peeking siginfos check (not yet merged)\n"); + return 0; + } + pid = fork(); if (pid < 0) pr_perror("fork"); @@ -489,11 +494,16 @@ int check_ptrace_peeksiginfo() static int check_mem_dirty_track(void) { + if (opts.check_ms_kernel) { + pr_warn("Skipping dirty tracking check (not yet merged)\n"); + return 0; + } + if (kerndat_get_dirty_track() < 0) return -1; if (!kerndat_has_dirty_track) - pr_info("Dirty tracking is OFF. Memory snapshot will not work.\n"); + pr_warn("Dirty tracking is OFF. Memory snapshot will not work.\n"); return 0; } diff --git a/crtools.c b/crtools.c index e041b4b87..03c65ef7d 100644 --- a/crtools.c +++ b/crtools.c @@ -114,6 +114,7 @@ int main(int argc, char *argv[]) { "address", required_argument, 0, 51}, { "port", required_argument, 0, 52}, { "snapshot", optional_argument, 0, 53}, + { "ms", no_argument, 0, 54}, { }, }; @@ -264,6 +265,9 @@ int main(int argc, char *argv[]) opts.mem_snapshot = true; opts.snap_parent = optarg; break; + case 54: + opts.check_ms_kernel = true; + break; case 'V': pr_msg("Version: %s\n", version); return 0; @@ -413,6 +417,7 @@ usage: pr_msg("\nOther options:\n"); pr_msg(" -h|--help show this text\n"); pr_msg(" -V|--version show version\n"); + pr_msg(" --ms don't check not yet merged kernel features\n"); return -1; diff --git a/include/crtools.h b/include/crtools.h index 62611cabc..f679e2ddb 100644 --- a/include/crtools.h +++ b/include/crtools.h @@ -100,6 +100,7 @@ struct script { struct cr_options { int final_state; char *show_dump_file; + bool check_ms_kernel; bool show_pages_content; bool restore_detach; bool ext_unix_sk; diff --git a/sockets.c b/sockets.c index d1965613d..f0c51b806 100644 --- a/sockets.c +++ b/sockets.c @@ -612,6 +612,11 @@ int collect_sockets(int pid) err = tmp; } + if (pid == 0 && opts.check_ms_kernel) { + pr_warn("Skipping netling diag check (not yet merged)\n"); + goto skip; + } + req.r.n.sdiag_family = AF_NETLINK; req.r.n.sdiag_protocol = NDIAG_PROTO_ALL; req.r.n.ndiag_show = NDIAG_SHOW_GROUPS; @@ -621,7 +626,7 @@ int collect_sockets(int pid) if (pid == 0 || tmp != -ENOENT) /* Going to be in 3.10 */ err = tmp; } - +skip: close(nl); out: if (rst >= 0) {