[PATCH] makedumpfile: Check dump file early

Atsushi Kumagai kumagai-atsushi at mxc.nes.nec.co.jp
Tue Apr 23 21:33:34 EDT 2013


Hello Michael,

On Mon, 22 Apr 2013 11:11:17 +0200
Michael Holzheu <holzheu at linux.vnet.ibm.com> wrote:

> On Mon, 22 Apr 2013 09:01:23 +0900
> HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote:
> > > +	if (info->flag_force) {
> > > +		if (access(path, W_OK) == 0)
> > > +			return TRUE; /* We have write permission */
> > > +		err_str = strerror(errno);
> > > +	} else {
> > > +		err_str = "File exists";
> > 
> > How about strerror(EEXIST)? It's better to avoid hard code to use the 
> > same string as what libc returns.
> 
> Yes, this solution is better.
> 
> Here the updated patch:

Nice work!
I'll merge this patch into v1.5.4.


Thanks
Atsushi Kumagai

> ---
>  makedumpfile.c |   37 ++++++++++++++++++++++++++++++++++++-
>  1 file changed, 36 insertions(+), 1 deletion(-)
> 
> --- a/makedumpfile.c
> +++ b/makedumpfile.c
> @@ -730,6 +730,24 @@ open_dump_file(void)
>  }
>  
>  int
> +check_dump_file(const char *path)
> +{
> +	char *err_str;
> +
> +	if (access(path, F_OK) != 0)
> +		return TRUE; /* File does not exist */
> +	if (info->flag_force) {
> +		if (access(path, W_OK) == 0)
> +			return TRUE; /* We have write permission */
> +		err_str = strerror(errno);
> +	} else {
> +		err_str = strerror(EEXIST);
> +	}
> +	ERRMSG("Can't open the dump file (%s). %s\n", path, err_str);
> +	return FALSE;
> +}
> +
> +int
>  open_dump_bitmap(void)
>  {
>  	int i, fd;
> @@ -8609,6 +8627,9 @@ main(int argc, char *argv[])
>  			MSG("Try `makedumpfile --help' for more information.\n");
>  			goto out;
>  		}
> +		if (!check_dump_file(info->name_dumpfile))
> +			goto out;
> +
>  		if (!open_files_for_rearranging_dumpdata())
>  			goto out;
>  
> @@ -8626,9 +8647,11 @@ main(int argc, char *argv[])
>  			MSG("Try `makedumpfile --help' for more information.\n");
>  			goto out;
>  		}
> -		if (!reassemble_dumpfile())
> +		if (!check_dump_file(info->name_dumpfile))
>  			goto out;
>  
> +		if (!reassemble_dumpfile())
> +			goto out;
>  		MSG("\n");
>  		MSG("The dumpfile is saved to %s.\n", info->name_dumpfile);
>  	} else if (info->flag_dmesg) {
> @@ -8637,6 +8660,8 @@ main(int argc, char *argv[])
>  			MSG("Try `makedumpfile --help' for more information.\n");
>  			goto out;
>  		}
> +		if (!check_dump_file(info->name_dumpfile))
> +			goto out;
>  		if (!dump_dmesg())
>  			goto out;
>  
> @@ -8648,6 +8673,16 @@ main(int argc, char *argv[])
>  			MSG("Try `makedumpfile --help' for more information.\n");
>  			goto out;
>  		}
> +		if (info->flag_split) {
> +			for (i = 0; i < info->num_dumpfile; i++) {
> +				if (!check_dump_file(SPLITTING_DUMPFILE(i)))
> +					goto out;
> +			}
> +		} else {
> +			if (!check_dump_file(info->name_dumpfile))
> +				goto out;
> +		}
> +
>  		if (!create_dumpfile())
>  			goto out;
>  
> 
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec



More information about the kexec mailing list