From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx2.suse.de ([195.135.220.15]) by canuck.infradead.org with esmtps (Exim 4.63 #1 (Red Hat Linux)) id 1IAnXO-00039b-T7 for kexec@lists.infradead.org; Tue, 17 Jul 2007 09:56:28 -0400 Date: Tue, 17 Jul 2007 15:56:16 +0200 From: Bernhard Walle Subject: [PATCH] [makedumpfile] Introduce -f (force) option Message-ID: <20070717135615.GA19864@suse.de> MIME-Version: 1.0 Content-Disposition: inline List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org+dwmw2=infradead.org@lists.infradead.org To: kexec@lists.infradead.org Cc: Ken'ichi Ohmichi As I always forget to delete the produced dump file when testing something, I'd like to see a `-f' option that forces makedumpfile to overwrite existing files. Signed-off-by: Bernhard Walle --- makedumpfile.8 | 10 ++++++++++ makedumpfile.c | 11 +++++++++-- makedumpfile.h | 1 + 3 files changed, 20 insertions(+), 2 deletions(-) --- a/makedumpfile.8 +++ b/makedumpfile.8 @@ -144,6 +144,16 @@ support compressed data. # makedumpfile \-E \-d 31 \-x vmlinux /proc/vmcore dumpfile .TP +\fB\-f\fR +Force existing files to be overwritten. +.br +.B Example: +.br +# makedumpfile \-f \-x vmlinux /proc/vmcore dumpfile +.br +This command overwrites \fIdumpfile\fR if it already exists. + +.TP \fB\-x\fR \fIVMLINUX\fR Specify the first kernel's \fIVMLINUX\fR with debug information to analyze the first kernel's memory usage. --- a/makedumpfile.c +++ b/makedumpfile.c @@ -409,6 +409,10 @@ int open_dump_file(struct DumpInfo *info) { int fd; + int open_flags = O_RDWR|O_CREAT; + + if (!info->flag_force) + open_flags |= O_EXCL; if (info->flag_flatten) { if ((info->name_dumpfile @@ -420,7 +424,7 @@ open_dump_file(struct DumpInfo *info) fd = STDOUT_FILENO; strcpy(info->name_dumpfile, FILENAME_STDOUT); - } else if ((fd = open(info->name_dumpfile, O_RDWR|O_CREAT|O_EXCL, + } else if ((fd = open(info->name_dumpfile, open_flags, S_IRUSR|S_IWUSR)) < 0) { ERRMSG("Can't open the dump file(%s). %s\n", info->name_dumpfile, strerror(errno)); @@ -4624,7 +4628,7 @@ main(int argc, char *argv[]) vt = &info->vm_table; info->block_order = DEFAULT_ORDER; - while ((opt = getopt(argc, argv, "b:cDd:EFg:hi:Rvx:")) != -1) { + while ((opt = getopt(argc, argv, "b:cDd:EFg:hi:Rvx:f")) != -1) { switch (opt) { case 'b': info->block_order = atoi(optarg); @@ -4646,6 +4650,9 @@ main(int argc, char *argv[]) case 'F': info->flag_flatten = 1; break; + case 'f': + info->flag_force = 1; + break; case 'g': info->flag_generate_config = 1; info->name_configfile = optarg; --- a/makedumpfile.h +++ b/makedumpfile.h @@ -552,6 +552,7 @@ struct DumpInfo { format to a standard out */ int flag_rearrange; /* flag of creating dumpfile from flattened format */ + int flag_force; /* overwrite existing stuff */ long page_size; /* size of page */ long page_shift; unsigned long long max_mapnr; /* number of page descriptor */ _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec