lkml.org 
[lkml]   [2013]   [Nov]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: /proc/vmcore mmap() failure issue
Date
Hello WANG,

On 2013/11/21 16:15:22, kexec <kexec-bounces@lists.infradead.org> wrote:
> > How about this fail back structure instead of such an extra option ?
> >
> > Thanks
> > Atsushi Kumagai
> >
> > From: Atsushi Kumagai <kumagai-atsushi@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-atsushi@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
Atsushi Kumagai

> Thanks
> WANG Chao
>
> > }
> > } else {
> > if (lseek(info->fd_memory, offset, SEEK_SET) == failed) {
> > --
> > 1.8.0.2
>
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
>


\
 
 \ /
  Last update: 2013-11-25 09:41    [W:0.090 / U:0.184 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site