[PATCH] makedumpfile: clean up draft patch
Baoquan He
bhe at redhat.com
Fri Jan 10 04:32:09 EST 2014
> > +static void update_cycle(unsigned long long max, struct cycle *cycle)
> > +{
> > + cycle->start_pfn= cycle->end_pfn + 1;
> > + cycle->end_pfn= cycle->start_pfn + info->pfn_cyclic;
> > +
> > + if (cycle->end_pfn > max)
> > + cycle->end_pfn = max;
> > +}
>
> According to this function, you must treat a range of a cycle
> as below:
>
> |<----------------- a cycle ------------------->|
> ---+-----------+-----------+-----------+-----------+----
> | pfn:N | pfn:N+1 | pfn:N+2 | pfn:N+3 | ...
> ---+-----------+-----------+-----------+-----------+----
> A A
> | |
> start_pfn end_pfn
>
> However, the existing code treat it as:
>
> |<------------ a cycle ------------>|
> ---+-----------+-----------+-----------+-----------+----
> | pfn:N | pfn:N+1 | pfn:N+2 | pfn:N+3 | ...
> ---+-----------+-----------+-----------+-----------+----
> A A
> | |
> start_pfn end_pfn
>
> This can be implied from the current iterator like below:
>
> for (pfn = start_pfn; pfn < end_pfn; pfn++) {
> ^^^^^^^^^^^^^^
> In short, the existing code will not work correctly.
Yeah, you are quite right. This need be corrected. Will change in formal
patch.
>
> You may feel this design is strange.
> This came from the fact that the end of the region's *address*
> is the head of pfn:N+1 while it can also be said the tail of pfn:N.
> (And this came from the initial version.)
>
> BTW, info->cyclic_start_pfn and info->cyclic_end_pfn are no longer
> used, we can get rid of those from makedumpfile.h.
Ok, will change.
>
>
More information about the kexec
mailing list