[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