On 11/25/13 at 08:09am, Atsushi Kumagai wrote: > Hello WANG, > > On 2013/11/21 16:15:22, kexec <kexec-boun...@lists.infradead.org> wrote: > > > How about this fail back structure instead of such an extra option ? > > > > > > Thanks > > > Atsushi Kumagai > > > > > > From: Atsushi Kumagai <kumagai-atsu...@mxc.nes.nec.co.jp> > > > Date: Wed, 20 Nov 2013 14:10:19 +0900 > > > Subject: [PATCH] Fall back to read() when mmap() fails. > > > > > > Signed-off-by: Atsushi Kumagai <kumagai-atsu...@mxc.nes.nec.co.jp> > > > --- > > > makedumpfile.c | 10 +++++++++- > > > 1 file changed, 9 insertions(+), 1 deletion(-) > > > > > > diff --git a/makedumpfile.c b/makedumpfile.c > > > index ca03440..f583602 100644 > > > --- a/makedumpfile.c > > > +++ b/makedumpfile.c > > > @@ -324,7 +324,15 @@ read_from_vmcore(off_t offset, void *bufptr, > > > unsigned long size) > > > if (!read_with_mmap(offset, bufptr, size)) { > > > ERRMSG("Can't read the dump memory(%s) with mmap().\n", > > > info->name_memory); > > > - return FALSE; > > > + > > > + ERRMSG("This kernel might have some problems about > > > mmap().\n"); > > > + ERRMSG("read() will be used instead of mmap() from > > > now.\n"); > > > + > > > + /* > > > + * Fall back to read(). > > > + */ > > > + info->flag_usemmap = FALSE; > > > + read_from_vmcore(offset, bufptr, size); > > > > Hi, Atsushi > > > > I've got such a workstation too. And I confirm this patch works for me. > > Thanks for your testing ! > > > However, I have a question: > > Why not switch to mmap() back after read()? > > I made this patch as a general safety net, not only for the partial page > issue. > When facing unknown issues related mmap(), the kernel may have some bugs > and mmap() can fail for every pages. In the worst case, most all mmap() > will fail and try read() with error messages after every fail, but this > patch will prevent the chattering of the switch and so many error messages.
Thanks for you explanation. I agree with you. Since mmap() is error prone after first mmap failure, use read() instead as a fail safe makes much sense to me. WANG Chao > > > Thanks > Atsushi Kumagai > > > Thanks > > WANG Chao > > > > > } > > > } else { > > > if (lseek(info->fd_memory, offset, SEEK_SET) == failed) { > > > -- > > > 1.8.0.2 > > > > _______________________________________________ > > kexec mailing list > > ke...@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/kexec > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/