Messages in this thread | | | Date | Thu, 21 Nov 2013 11:52:37 -0500 | From | Vivek Goyal <> | Subject | Re: /proc/vmcore mmap() failure issue |
| |
On Thu, Nov 21, 2013 at 05:31:46PM +0900, HATAYAMA Daisuke wrote:
[..] > > So I think the patch I sent is enough, the policy will be simpler as > > "Don't use mmap() for buggy kernels". > > > > [PATCH] Fall back to read() when mmap() fails. > > http://lists.infradead.org/pipermail/kexec/2013-November/010199.html > > > > I think logic becomes not so complex. For example, if input vmcore > format is ELF, then: > > o in update_mmap_range(): > - first calculate a range of the corresponding PT_LOAD entry truncated with > PAGE_SIZE. > - Then, truncate range of mmap() by the truncated range of the corresponding > PT_LOAD entry, i.e., exlucde partial pages from mmap() target range. > - Then determine offsets of two partial pages; the number of partial pages > are always at most two. The offsets can easily be calculated from the > original range of the corresponding PT_LOAD entry > > o in read_from_vmcore(), if a given offset belongs to either of two partial > pages, then go to read() path; if not, go to mmap() path.
I agree that we should do mmap() on all non-partial pages and do read() on all partial pages. Otherwise we lose the benefit of faster speed of mmap().
Thanks Vivek
| |