* [MAKDUMPFILE PATCH 0/2] Get stats without writing dumpfile @ 2020-11-24 10:45 Julien Thierry 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile Julien Thierry 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 2/2] Add shorthand option to show report stats Julien Thierry 0 siblings, 2 replies; 7+ messages in thread From: Julien Thierry @ 2020-11-24 10:45 UTC (permalink / raw) To: kexec; +Cc: bhsharma, Julien Thierry, k-hagio-ab, lijiang Hi, This series is a follow up to the --vmcore-size proposal[1]. The goal is to be able to obtain informations about the dumpfile without actually generating it. Instead of the --vmcore-size approach, we add two different options, one allowing to run makedumpfil without writting the dumpfile, and another to explicitly enable stat displaying. [1] https://www.spinics.net/lists/kexec/msg26058.html Cheers, Julien --> Julien Thierry (2): Add option to prevent writing the dumpfile Add shorthand option to show report stats makedumpfile.8 | 10 ++++++++++ makedumpfile.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- makedumpfile.h | 3 +++ print_info.c | 6 ++++++ 4 files changed, 61 insertions(+), 3 deletions(-) -- 2.25.4 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply [flat|nested] 7+ messages in thread
* [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile 2020-11-24 10:45 [MAKDUMPFILE PATCH 0/2] Get stats without writing dumpfile Julien Thierry @ 2020-11-24 10:45 ` Julien Thierry 2021-01-18 6:43 ` HAGIO KAZUHITO(萩尾 一仁) 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 2/2] Add shorthand option to show report stats Julien Thierry 1 sibling, 1 reply; 7+ messages in thread From: Julien Thierry @ 2020-11-24 10:45 UTC (permalink / raw) To: kexec; +Cc: bhsharma, Julien Thierry, k-hagio-ab, lijiang Add a --dry-run option to run all operations without writing the dump to the output file. Signed-off-by: Julien Thierry <jthierry@redhat.com> --- makedumpfile.8 | 5 +++++ makedumpfile.c | 33 +++++++++++++++++++++++++++++++-- makedumpfile.h | 2 ++ print_info.c | 3 +++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/makedumpfile.8 b/makedumpfile.8 index 2fe2cd0..39a63ba 100644 --- a/makedumpfile.8 +++ b/makedumpfile.8 @@ -637,6 +637,11 @@ Show the version of makedumpfile. Only check whether the command-line parameters are valid or not, and exit. Preferable to be given as the first parameter. +.TP +\fB\-\-dry-run\fR +Do not write the output dump file while still performing operations specified +by other options. + .SH ENVIRONMENT VARIABLES .TP 8 diff --git a/makedumpfile.c b/makedumpfile.c index cdde040..90258f3 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -1366,7 +1366,9 @@ open_dump_file(void) if (!info->flag_force) open_flags |= O_EXCL; - if (info->flag_flatten) { + if (info->flag_dry_run) { + fd = -1; + } else if (info->flag_flatten) { fd = STDOUT_FILENO; info->name_dumpfile = filename_stdout; } else if ((fd = open(info->name_dumpfile, open_flags, @@ -1384,6 +1386,9 @@ check_dump_file(const char *path) { char *err_str; + if (info->flag_dry_run) + return TRUE; + if (access(path, F_OK) != 0) return TRUE; /* File does not exist */ if (info->flag_force) { @@ -4643,6 +4648,8 @@ write_buffer(int fd, off_t offset, void *buf, size_t buf_size, char *file_name) } if (!write_and_check_space(fd, &fdh, sizeof(fdh), file_name)) return FALSE; + } else if (info->flag_dry_run && fd == info->fd_dumpfile) { + return TRUE; } else { if (lseek(fd, offset, SEEK_SET) == failed) { ERRMSG("Can't seek the dump file(%s). %s\n", @@ -9007,6 +9014,9 @@ close_dump_file(void) if (info->flag_flatten) return; + if (info->flag_dry_run) + return; + if (close(info->fd_dumpfile) < 0) ERRMSG("Can't close the dump file(%s). %s\n", info->name_dumpfile, strerror(errno)); @@ -11032,7 +11042,8 @@ check_param_for_creating_dumpfile(int argc, char *argv[]) */ info->name_memory = argv[optind]; - } else if ((argc == optind + 1) && info->flag_mem_usage) { + } else if ((argc == optind + 1) && (info->flag_mem_usage || + info->flag_dry_run)) { /* * Parameter for showing the page number of memory * in different use from. @@ -11412,6 +11423,7 @@ static struct option longopts[] = { {"work-dir", required_argument, NULL, OPT_WORKING_DIR}, {"num-threads", required_argument, NULL, OPT_NUM_THREADS}, {"check-params", no_argument, NULL, OPT_CHECK_PARAMS}, + {"dry-run", no_argument, NULL, OPT_DRY_RUN}, {0, 0, 0, 0} }; @@ -11578,6 +11590,9 @@ main(int argc, char *argv[]) info->flag_check_params = TRUE; message_level = DEFAULT_MSG_LEVEL; break; + case OPT_DRY_RUN: + info->flag_dry_run = TRUE; + break; case '?': MSG("Commandline parameter is invalid.\n"); MSG("Try `makedumpfile --help' for more information.\n"); @@ -11591,6 +11606,10 @@ main(int argc, char *argv[]) /* suppress debugging messages */ message_level = DEFAULT_MSG_LEVEL; + if (info->flag_dry_run) + /* Suppress progress indicator as dumpfile won't get written */ + message_level &= ~ML_PRINT_PROGRESS; + if (info->flag_show_usage) { print_usage(); return COMPLETED; @@ -11661,6 +11680,9 @@ main(int argc, char *argv[]) if (!close_files_for_rearranging_dumpdata()) goto out; + if (info->flag_dry_run) + goto check_ok; + MSG("\n"); MSG("The dumpfile is saved to %s.\n", info->name_dumpfile); } else if (info->flag_reassemble) { @@ -11677,6 +11699,10 @@ main(int argc, char *argv[]) if (!reassemble_dumpfile()) goto out; + + if (info->flag_dry_run) + goto check_ok; + MSG("\n"); MSG("The dumpfile is saved to %s.\n", info->name_dumpfile); } else if (info->flag_dmesg) { @@ -11739,6 +11765,9 @@ main(int argc, char *argv[]) if (!create_dumpfile()) goto out; + if (info->flag_dry_run) + goto check_ok; + MSG("\n"); if (info->flag_split) { MSG("The dumpfiles are saved to "); diff --git a/makedumpfile.h b/makedumpfile.h index 698c054..58126cb 100644 --- a/makedumpfile.h +++ b/makedumpfile.h @@ -1321,6 +1321,7 @@ struct DumpInfo { int flag_vmemmap; /* kernel supports vmemmap address space */ int flag_excludevm; /* -e - excluding unused vmemmap pages */ int flag_use_count; /* _refcount is named _count in struct page */ + int flag_dry_run; /* do not create a vmcore file */ unsigned long vaddr_for_vtop; /* virtual address for debugging */ long page_size; /* size of page */ long page_shift; @@ -2364,6 +2365,7 @@ struct elf_prstatus { #define OPT_NUM_THREADS OPT_START+16 #define OPT_PARTIAL_DMESG OPT_START+17 #define OPT_CHECK_PARAMS OPT_START+18 +#define OPT_DRY_RUN OPT_START+19 /* * Function Prototype. diff --git a/print_info.c b/print_info.c index e0c38b4..d2b0cb7 100644 --- a/print_info.c +++ b/print_info.c @@ -308,6 +308,9 @@ print_usage(void) MSG(" the crashkernel range, then calculates the page number of different kind per\n"); MSG(" vmcoreinfo. So currently /proc/kcore need be specified explicitly.\n"); MSG("\n"); + MSG(" [--dry-run]:\n"); + MSG(" This option runs makedumpfile without writting output dump file.\n"); + MSG("\n"); MSG(" [-D]:\n"); MSG(" Print debugging message.\n"); MSG("\n"); -- 2.25.4 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply related [flat|nested] 7+ messages in thread
* RE: [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile Julien Thierry @ 2021-01-18 6:43 ` HAGIO KAZUHITO(萩尾 一仁) 2021-01-28 9:00 ` HAGIO KAZUHITO(萩尾 一仁) 0 siblings, 1 reply; 7+ messages in thread From: HAGIO KAZUHITO(萩尾 一仁) @ 2021-01-18 6:43 UTC (permalink / raw) To: Julien Thierry, kexec; +Cc: bhsharma, lijiang Hi Julien, Thanks for the patches, and sorry for the late reply.. -----Original Message----- > Add a --dry-run option to run all operations without writing the > dump to the output file. First, I think makedumpfile should not change its behavior (path checks, messages emitted, etc.) and exit code except for writing the dumpfile with or without the --dry-run option. For example with this patch: $ touch dumpfile $ makedumpfile -d 1 vmcore dumpfile --dry-run --> ok, no problem $ makedumpfile -d 1 vmcore dumpfile --> error This change is a bit strange to me. So with this premise, commented inline and attached a modified patch at end of this email. Could you check those? > > Signed-off-by: Julien Thierry <jthierry@redhat.com> > --- > makedumpfile.8 | 5 +++++ > makedumpfile.c | 33 +++++++++++++++++++++++++++++++-- > makedumpfile.h | 2 ++ > print_info.c | 3 +++ > 4 files changed, 41 insertions(+), 2 deletions(-) > > diff --git a/makedumpfile.8 b/makedumpfile.8 > index 2fe2cd0..39a63ba 100644 > --- a/makedumpfile.8 > +++ b/makedumpfile.8 > @@ -637,6 +637,11 @@ Show the version of makedumpfile. > Only check whether the command-line parameters are valid or not, and exit. > Preferable to be given as the first parameter. > > +.TP > +\fB\-\-dry-run\fR > +Do not write the output dump file while still performing operations specified > +by other options. > + > .SH ENVIRONMENT VARIABLES > > .TP 8 > diff --git a/makedumpfile.c b/makedumpfile.c > index cdde040..90258f3 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -1366,7 +1366,9 @@ open_dump_file(void) > if (!info->flag_force) > open_flags |= O_EXCL; > > - if (info->flag_flatten) { > + if (info->flag_dry_run) { > + fd = -1; > + } else if (info->flag_flatten) { > fd = STDOUT_FILENO; > info->name_dumpfile = filename_stdout; This does not support -F option. # makedumpfile --dry-run -F -d 31 vmcore >/dev/null Can't write the dump file((null)). Bad file descriptor makedumpfile Failed. I'll change the order here: @@ -1372,6 +1372,8 @@ open_dump_file(void) if (info->flag_flatten) { fd = STDOUT_FILENO; info->name_dumpfile = filename_stdout; + } else if (info->flag_dry_run) { + fd = -1; } else if ((fd = open(info->name_dumpfile, open_flags, S_IRUSR|S_IWUSR)) < 0) { ERRMSG("Can't open the dump file(%s). %s\n", > } else if ((fd = open(info->name_dumpfile, open_flags, > @@ -1384,6 +1386,9 @@ check_dump_file(const char *path) > { > char *err_str; > > + if (info->flag_dry_run) > + return TRUE; > + I would prefer to check the path rather than skip it because of the reason I wrote above. > if (access(path, F_OK) != 0) > return TRUE; /* File does not exist */ > if (info->flag_force) { > @@ -4643,6 +4648,8 @@ write_buffer(int fd, off_t offset, void *buf, size_t buf_size, char *file_name) > } > if (!write_and_check_space(fd, &fdh, sizeof(fdh), file_name)) > return FALSE; > + } else if (info->flag_dry_run && fd == info->fd_dumpfile) { > + return TRUE; To support -F option and count bytes written later, I'll add this in write_and_check_space(). @@ -4711,6 +4713,9 @@ write_and_check_space(int fd, void *buf, size_t buf_size, char *file_name) { int status, written_size = 0; + if (info->flag_dry_run) + return TRUE; + while (written_size < buf_size) { status = write(fd, buf + written_size, buf_size - written_size); > } else { > if (lseek(fd, offset, SEEK_SET) == failed) { > ERRMSG("Can't seek the dump file(%s). %s\n", > @@ -9007,6 +9014,9 @@ close_dump_file(void) > if (info->flag_flatten) > return; > > + if (info->flag_dry_run) > + return; > + > if (close(info->fd_dumpfile) < 0) > ERRMSG("Can't close the dump file(%s). %s\n", > info->name_dumpfile, strerror(errno)); > @@ -11032,7 +11042,8 @@ check_param_for_creating_dumpfile(int argc, char *argv[]) > */ > info->name_memory = argv[optind]; > > - } else if ((argc == optind + 1) && info->flag_mem_usage) { > + } else if ((argc == optind + 1) && (info->flag_mem_usage || > + info->flag_dry_run)) { I would not like to change valid parameters with --dry-run, so will restore this. > /* > * Parameter for showing the page number of memory > * in different use from. > @@ -11412,6 +11423,7 @@ static struct option longopts[] = { > {"work-dir", required_argument, NULL, OPT_WORKING_DIR}, > {"num-threads", required_argument, NULL, OPT_NUM_THREADS}, > {"check-params", no_argument, NULL, OPT_CHECK_PARAMS}, > + {"dry-run", no_argument, NULL, OPT_DRY_RUN}, > {0, 0, 0, 0} > }; > > @@ -11578,6 +11590,9 @@ main(int argc, char *argv[]) > info->flag_check_params = TRUE; > message_level = DEFAULT_MSG_LEVEL; > break; > + case OPT_DRY_RUN: > + info->flag_dry_run = TRUE; > + break; > case '?': > MSG("Commandline parameter is invalid.\n"); > MSG("Try `makedumpfile --help' for more information.\n"); > @@ -11591,6 +11606,10 @@ main(int argc, char *argv[]) > /* suppress debugging messages */ > message_level = DEFAULT_MSG_LEVEL; > > + if (info->flag_dry_run) > + /* Suppress progress indicator as dumpfile won't get written */ > + message_level &= ~ML_PRINT_PROGRESS; > + Will restore this as well. > if (info->flag_show_usage) { > print_usage(); > return COMPLETED; > @@ -11661,6 +11680,9 @@ main(int argc, char *argv[]) > if (!close_files_for_rearranging_dumpdata()) > goto out; > > + if (info->flag_dry_run) > + goto check_ok; > + > MSG("\n"); > MSG("The dumpfile is saved to %s.\n", info->name_dumpfile); > } else if (info->flag_reassemble) { > @@ -11677,6 +11699,10 @@ main(int argc, char *argv[]) > > if (!reassemble_dumpfile()) > goto out; > + > + if (info->flag_dry_run) > + goto check_ok; To make --reassemble, --dump-dmesg, etc. support --dry-run looks a bit troublesome and not so useful, I would like to not support it like: @@ -11029,6 +11038,11 @@ check_param_for_reassembling_dumpfile(int argc, char *argv[]) || info->flag_exclude_xen_dom || info->flag_split) return FALSE; + if (info->flag_dry_run) { + MSG("--dry-run cannot be used with --reassemble.\n"); + return FALSE; + } + if ((info->splitting_info = malloc(sizeof(struct splitting_info) * info->num_dumpfile)) == NULL) { > + > MSG("\n"); > MSG("The dumpfile is saved to %s.\n", info->name_dumpfile); > } else if (info->flag_dmesg) { > @@ -11739,6 +11765,9 @@ main(int argc, char *argv[]) > if (!create_dumpfile()) > goto out; > > + if (info->flag_dry_run) > + goto check_ok; > + > MSG("\n"); > if (info->flag_split) { > MSG("The dumpfiles are saved to "); > diff --git a/makedumpfile.h b/makedumpfile.h > index 698c054..58126cb 100644 > --- a/makedumpfile.h > +++ b/makedumpfile.h > @@ -1321,6 +1321,7 @@ struct DumpInfo { > int flag_vmemmap; /* kernel supports vmemmap address space */ > int flag_excludevm; /* -e - excluding unused vmemmap pages */ > int flag_use_count; /* _refcount is named _count in struct page */ > + int flag_dry_run; /* do not create a vmcore file */ > unsigned long vaddr_for_vtop; /* virtual address for debugging */ > long page_size; /* size of page */ > long page_shift; > @@ -2364,6 +2365,7 @@ struct elf_prstatus { > #define OPT_NUM_THREADS OPT_START+16 > #define OPT_PARTIAL_DMESG OPT_START+17 > #define OPT_CHECK_PARAMS OPT_START+18 > +#define OPT_DRY_RUN OPT_START+19 > > /* > * Function Prototype. > diff --git a/print_info.c b/print_info.c > index e0c38b4..d2b0cb7 100644 > --- a/print_info.c > +++ b/print_info.c > @@ -308,6 +308,9 @@ print_usage(void) > MSG(" the crashkernel range, then calculates the page number of different kind per\n"); > MSG(" vmcoreinfo. So currently /proc/kcore need be specified explicitly.\n"); > MSG("\n"); > + MSG(" [--dry-run]:\n"); > + MSG(" This option runs makedumpfile without writting output dump file.\n"); > + MSG("\n"); > MSG(" [-D]:\n"); > MSG(" Print debugging message.\n"); > MSG("\n"); > -- > 2.25.4 From e4600ef29a1bac00b93a03e9dd82dd86c719ce94 Mon Sep 17 00:00:00 2001 From: Julien Thierry <jthierry@redhat.com> Date: Tue, 24 Nov 2020 10:45:24 +0000 Subject: [PATCH] Add --dry-run option to prevent writing the dumpfile Add a --dry-run option to run all operations without writing the dump to the output file. Signed-off-by: Julien Thierry <jthierry@redhat.com> Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com> --- makedumpfile.8 | 5 +++++ makedumpfile.c | 37 ++++++++++++++++++++++++++++++------- makedumpfile.h | 2 ++ print_info.c | 3 +++ 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/makedumpfile.8 b/makedumpfile.8 index b68a7e3563a7..6dffc81ddc7b 100644 --- a/makedumpfile.8 +++ b/makedumpfile.8 @@ -637,6 +637,11 @@ Show the version of makedumpfile. Only check whether the command-line parameters are valid or not, and exit. Preferable to be given as the first parameter. +.TP +\fB\-\-dry-run\fR +Do not write the output dump file while still performing operations specified +by other options. + .SH ENVIRONMENT VARIABLES .TP 8 diff --git a/makedumpfile.c b/makedumpfile.c index ecd63fa1a90f..8c80c49b21cb 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -1372,6 +1372,8 @@ open_dump_file(void) if (info->flag_flatten) { fd = STDOUT_FILENO; info->name_dumpfile = filename_stdout; + } else if (info->flag_dry_run) { + fd = -1; } else if ((fd = open(info->name_dumpfile, open_flags, S_IRUSR|S_IWUSR)) < 0) { ERRMSG("Can't open the dump file(%s). %s\n", @@ -4711,6 +4713,9 @@ write_and_check_space(int fd, void *buf, size_t buf_size, char *file_name) { int status, written_size = 0; + if (info->flag_dry_run) + return TRUE; + while (written_size < buf_size) { status = write(fd, buf + written_size, buf_size - written_size); @@ -4748,13 +4753,12 @@ write_buffer(int fd, off_t offset, void *buf, size_t buf_size, char *file_name) } if (!write_and_check_space(fd, &fdh, sizeof(fdh), file_name)) return FALSE; - } else { - if (lseek(fd, offset, SEEK_SET) == failed) { - ERRMSG("Can't seek the dump file(%s). %s\n", - file_name, strerror(errno)); - return FALSE; - } + } else if (!info->flag_dry_run && + lseek(fd, offset, SEEK_SET) == failed) { + ERRMSG("Can't seek the dump file(%s). %s\n", file_name, strerror(errno)); + return FALSE; } + if (!write_and_check_space(fd, buf, buf_size, file_name)) return FALSE; @@ -9112,7 +9116,7 @@ close_dump_memory(void) void close_dump_file(void) { - if (info->flag_flatten) + if (info->flag_flatten || info->flag_dry_run) return; if (close(info->fd_dumpfile) < 0) @@ -10985,6 +10989,11 @@ check_param_for_generating_vmcoreinfo(int argc, char *argv[]) return FALSE; + if (info->flag_dry_run) { + MSG("--dry-run cannot be used with -g.\n"); + return FALSE; + } + return TRUE; } @@ -11029,6 +11038,11 @@ check_param_for_reassembling_dumpfile(int argc, char *argv[]) || info->flag_exclude_xen_dom || info->flag_split) return FALSE; + if (info->flag_dry_run) { + MSG("--dry-run cannot be used with --reassemble.\n"); + return FALSE; + } + if ((info->splitting_info = malloc(sizeof(struct splitting_info) * info->num_dumpfile)) == NULL) { @@ -11057,6 +11071,11 @@ check_param_for_creating_dumpfile(int argc, char *argv[]) || (info->flag_read_vmcoreinfo && info->name_xen_syms)) return FALSE; + if (info->flag_dry_run && info->flag_dmesg) { + MSG("--dry-run cannot be used with --dump-dmesg.\n"); + return FALSE; + } + if (info->flag_flatten && info->flag_split) return FALSE; @@ -11520,6 +11539,7 @@ static struct option longopts[] = { {"work-dir", required_argument, NULL, OPT_WORKING_DIR}, {"num-threads", required_argument, NULL, OPT_NUM_THREADS}, {"check-params", no_argument, NULL, OPT_CHECK_PARAMS}, + {"dry-run", no_argument, NULL, OPT_DRY_RUN}, {0, 0, 0, 0} }; @@ -11686,6 +11706,9 @@ main(int argc, char *argv[]) info->flag_check_params = TRUE; message_level = DEFAULT_MSG_LEVEL; break; + case OPT_DRY_RUN: + info->flag_dry_run = TRUE; + break; case '?': MSG("Commandline parameter is invalid.\n"); MSG("Try `makedumpfile --help' for more information.\n"); diff --git a/makedumpfile.h b/makedumpfile.h index 5f50080f958d..4c4222cc2545 100644 --- a/makedumpfile.h +++ b/makedumpfile.h @@ -1322,6 +1322,7 @@ struct DumpInfo { int flag_vmemmap; /* kernel supports vmemmap address space */ int flag_excludevm; /* -e - excluding unused vmemmap pages */ int flag_use_count; /* _refcount is named _count in struct page */ + int flag_dry_run; /* do not create a vmcore file */ unsigned long vaddr_for_vtop; /* virtual address for debugging */ long page_size; /* size of page */ long page_shift; @@ -2425,6 +2426,7 @@ struct elf_prstatus { #define OPT_NUM_THREADS OPT_START+16 #define OPT_PARTIAL_DMESG OPT_START+17 #define OPT_CHECK_PARAMS OPT_START+18 +#define OPT_DRY_RUN OPT_START+19 /* * Function Prototype. diff --git a/print_info.c b/print_info.c index e0c38b4c2ba3..d2b0cb7aaef8 100644 --- a/print_info.c +++ b/print_info.c @@ -308,6 +308,9 @@ print_usage(void) MSG(" the crashkernel range, then calculates the page number of different kind per\n"); MSG(" vmcoreinfo. So currently /proc/kcore need be specified explicitly.\n"); MSG("\n"); + MSG(" [--dry-run]:\n"); + MSG(" This option runs makedumpfile without writting output dump file.\n"); + MSG("\n"); MSG(" [-D]:\n"); MSG(" Print debugging message.\n"); MSG("\n"); -- 1.8.3.1 Thanks, Kazu _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply related [flat|nested] 7+ messages in thread
* RE: [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile 2021-01-18 6:43 ` HAGIO KAZUHITO(萩尾 一仁) @ 2021-01-28 9:00 ` HAGIO KAZUHITO(萩尾 一仁) 2021-02-04 8:21 ` HAGIO KAZUHITO(萩尾 一仁) 0 siblings, 1 reply; 7+ messages in thread From: HAGIO KAZUHITO(萩尾 一仁) @ 2021-01-28 9:00 UTC (permalink / raw) To: Julien Thierry, lijiang; +Cc: kexec -----Original Message----- > Hi Julien, > > Thanks for the patches, and sorry for the late reply.. > > -----Original Message----- > > Add a --dry-run option to run all operations without writing the > > dump to the output file. > > First, I think makedumpfile should not change its behavior (path checks, > messages emitted, etc.) and exit code except for writing the dumpfile > with or without the --dry-run option. For example with this patch: > > $ touch dumpfile > $ makedumpfile -d 1 vmcore dumpfile --dry-run --> ok, no problem > $ makedumpfile -d 1 vmcore dumpfile --> error > > This change is a bit strange to me. So with this premise, commented inline > and attached a modified patch at end of this email. Could you check those? This patchset is applied with some modifications: https://github.com/makedumpfile/makedumpfile/compare/54aec38...6f3e75a I will add another for counting bytes to be written and more readable stats later.. Thanks, Kazu _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile 2021-01-28 9:00 ` HAGIO KAZUHITO(萩尾 一仁) @ 2021-02-04 8:21 ` HAGIO KAZUHITO(萩尾 一仁) 0 siblings, 0 replies; 7+ messages in thread From: HAGIO KAZUHITO(萩尾 一仁) @ 2021-02-04 8:21 UTC (permalink / raw) To: Julien Thierry, lijiang; +Cc: kexec Hi Lianbo, Julien, -----Original Message----- > This patchset is applied with some modifications: > https://github.com/makedumpfile/makedumpfile/compare/54aec38...6f3e75a > > I will add another for counting bytes to be written and more readable stats later.. I've applied a patch to show write byte size. https://github.com/makedumpfile/makedumpfile/commit/0ef2ca6c9fa2f61f217a4bf5d7fd70f24e12b2eb I hope this is used rightly. Thanks, Kazu _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply [flat|nested] 7+ messages in thread
* [MAKEDUMPFILE PATCH 2/2] Add shorthand option to show report stats 2020-11-24 10:45 [MAKDUMPFILE PATCH 0/2] Get stats without writing dumpfile Julien Thierry 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile Julien Thierry @ 2020-11-24 10:45 ` Julien Thierry 2021-01-18 7:19 ` HAGIO KAZUHITO(萩尾 一仁) 1 sibling, 1 reply; 7+ messages in thread From: Julien Thierry @ 2020-11-24 10:45 UTC (permalink / raw) To: kexec; +Cc: bhsharma, Julien Thierry, k-hagio-ab, lijiang Provide shorthand option to enable report messages without needing to set a particular value for message-level. Signed-off-by: Julien Thierry <jthierry@redhat.com> --- makedumpfile.8 | 5 +++++ makedumpfile.c | 12 +++++++++++- makedumpfile.h | 1 + print_info.c | 3 +++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/makedumpfile.8 b/makedumpfile.8 index 39a63ba..ec1e625 100644 --- a/makedumpfile.8 +++ b/makedumpfile.8 @@ -642,6 +642,11 @@ Preferable to be given as the first parameter. Do not write the output dump file while still performing operations specified by other options. +.TP +\fB\-\-show-stats\fR +Display report messages. This is an alternative to enabling bit 4 in the level +provided to --message-level. + .SH ENVIRONMENT VARIABLES .TP 8 diff --git a/makedumpfile.c b/makedumpfile.c index 90258f3..db31a03 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -11424,13 +11424,14 @@ static struct option longopts[] = { {"num-threads", required_argument, NULL, OPT_NUM_THREADS}, {"check-params", no_argument, NULL, OPT_CHECK_PARAMS}, {"dry-run", no_argument, NULL, OPT_DRY_RUN}, + {"show-stats", no_argument, NULL, OPT_SHOW_STATS}, {0, 0, 0, 0} }; int main(int argc, char *argv[]) { - int i, opt, flag_debug = FALSE; + int i, opt, flag_debug = FALSE, flag_show_stats = FALSE; if ((info = calloc(1, sizeof(struct DumpInfo))) == NULL) { ERRMSG("Can't allocate memory for the pagedesc cache. %s.\n", @@ -11593,6 +11594,9 @@ main(int argc, char *argv[]) case OPT_DRY_RUN: info->flag_dry_run = TRUE; break; + case OPT_SHOW_STATS: + flag_show_stats = TRUE; + break; case '?': MSG("Commandline parameter is invalid.\n"); MSG("Try `makedumpfile --help' for more information.\n"); @@ -11606,6 +11610,12 @@ main(int argc, char *argv[]) /* suppress debugging messages */ message_level = DEFAULT_MSG_LEVEL; + if (flag_show_stats) { + message_level |= ML_PRINT_REPORT_MSG; + /* Progress indicator interferes with report messages */ + message_level &= ~ML_PRINT_PROGRESS; + } + if (info->flag_dry_run) /* Suppress progress indicator as dumpfile won't get written */ message_level &= ~ML_PRINT_PROGRESS; diff --git a/makedumpfile.h b/makedumpfile.h index 58126cb..18c8b0b 100644 --- a/makedumpfile.h +++ b/makedumpfile.h @@ -2366,6 +2366,7 @@ struct elf_prstatus { #define OPT_PARTIAL_DMESG OPT_START+17 #define OPT_CHECK_PARAMS OPT_START+18 #define OPT_DRY_RUN OPT_START+19 +#define OPT_SHOW_STATS OPT_START+20 /* * Function Prototype. diff --git a/print_info.c b/print_info.c index d2b0cb7..6ebf611 100644 --- a/print_info.c +++ b/print_info.c @@ -311,6 +311,9 @@ print_usage(void) MSG(" [--dry-run]:\n"); MSG(" This option runs makedumpfile without writting output dump file.\n"); MSG("\n"); + MSG(" [--show-stats]:\n"); + MSG(" This option sets message-level to print report messages\n"); + MSG("\n"); MSG(" [-D]:\n"); MSG(" Print debugging message.\n"); MSG("\n"); -- 2.25.4 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply related [flat|nested] 7+ messages in thread
* RE: [MAKEDUMPFILE PATCH 2/2] Add shorthand option to show report stats 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 2/2] Add shorthand option to show report stats Julien Thierry @ 2021-01-18 7:19 ` HAGIO KAZUHITO(萩尾 一仁) 0 siblings, 0 replies; 7+ messages in thread From: HAGIO KAZUHITO(萩尾 一仁) @ 2021-01-18 7:19 UTC (permalink / raw) To: Julien Thierry, kexec; +Cc: bhsharma, lijiang -----Original Message----- > Provide shorthand option to enable report messages without needing > to set a particular value for message-level. > > Signed-off-by: Julien Thierry <jthierry@redhat.com> > --- > makedumpfile.8 | 5 +++++ > makedumpfile.c | 12 +++++++++++- > makedumpfile.h | 1 + > print_info.c | 3 +++ > 4 files changed, 20 insertions(+), 1 deletion(-) > > diff --git a/makedumpfile.8 b/makedumpfile.8 > index 39a63ba..ec1e625 100644 > --- a/makedumpfile.8 > +++ b/makedumpfile.8 > @@ -642,6 +642,11 @@ Preferable to be given as the first parameter. > Do not write the output dump file while still performing operations specified > by other options. > > +.TP > +\fB\-\-show-stats\fR > +Display report messages. This is an alternative to enabling bit 4 in the level > +provided to --message-level. > + > .SH ENVIRONMENT VARIABLES > > .TP 8 > diff --git a/makedumpfile.c b/makedumpfile.c > index 90258f3..db31a03 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -11424,13 +11424,14 @@ static struct option longopts[] = { > {"num-threads", required_argument, NULL, OPT_NUM_THREADS}, > {"check-params", no_argument, NULL, OPT_CHECK_PARAMS}, > {"dry-run", no_argument, NULL, OPT_DRY_RUN}, > + {"show-stats", no_argument, NULL, OPT_SHOW_STATS}, > {0, 0, 0, 0} > }; > > int > main(int argc, char *argv[]) > { > - int i, opt, flag_debug = FALSE; > + int i, opt, flag_debug = FALSE, flag_show_stats = FALSE; > > if ((info = calloc(1, sizeof(struct DumpInfo))) == NULL) { > ERRMSG("Can't allocate memory for the pagedesc cache. %s.\n", > @@ -11593,6 +11594,9 @@ main(int argc, char *argv[]) > case OPT_DRY_RUN: > info->flag_dry_run = TRUE; > break; > + case OPT_SHOW_STATS: > + flag_show_stats = TRUE; > + break; > case '?': > MSG("Commandline parameter is invalid.\n"); > MSG("Try `makedumpfile --help' for more information.\n"); > @@ -11606,6 +11610,12 @@ main(int argc, char *argv[]) > /* suppress debugging messages */ > message_level = DEFAULT_MSG_LEVEL; > > + if (flag_show_stats) { > + message_level |= ML_PRINT_REPORT_MSG; > + /* Progress indicator interferes with report messages */ > + message_level &= ~ML_PRINT_PROGRESS; I personally don't think it's so interfering, should we drop the ML_PRINT_PROGRESS? Otherwise, looks good to me. Thanks, Kazu > + } > + > if (info->flag_dry_run) > /* Suppress progress indicator as dumpfile won't get written */ > message_level &= ~ML_PRINT_PROGRESS; > diff --git a/makedumpfile.h b/makedumpfile.h > index 58126cb..18c8b0b 100644 > --- a/makedumpfile.h > +++ b/makedumpfile.h > @@ -2366,6 +2366,7 @@ struct elf_prstatus { > #define OPT_PARTIAL_DMESG OPT_START+17 > #define OPT_CHECK_PARAMS OPT_START+18 > #define OPT_DRY_RUN OPT_START+19 > +#define OPT_SHOW_STATS OPT_START+20 > > /* > * Function Prototype. > diff --git a/print_info.c b/print_info.c > index d2b0cb7..6ebf611 100644 > --- a/print_info.c > +++ b/print_info.c > @@ -311,6 +311,9 @@ print_usage(void) > MSG(" [--dry-run]:\n"); > MSG(" This option runs makedumpfile without writting output dump file.\n"); > MSG("\n"); > + MSG(" [--show-stats]:\n"); > + MSG(" This option sets message-level to print report messages\n"); > + MSG("\n"); > MSG(" [-D]:\n"); > MSG(" Print debugging message.\n"); > MSG("\n"); > -- > 2.25.4 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-02-04 8:21 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-11-24 10:45 [MAKDUMPFILE PATCH 0/2] Get stats without writing dumpfile Julien Thierry 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 1/2] Add option to prevent writing the dumpfile Julien Thierry 2021-01-18 6:43 ` HAGIO KAZUHITO(萩尾 一仁) 2021-01-28 9:00 ` HAGIO KAZUHITO(萩尾 一仁) 2021-02-04 8:21 ` HAGIO KAZUHITO(萩尾 一仁) 2020-11-24 10:45 ` [MAKEDUMPFILE PATCH 2/2] Add shorthand option to show report stats Julien Thierry 2021-01-18 7:19 ` HAGIO KAZUHITO(萩尾 一仁)
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.