OK, so what is the difference between memory hotremoving a range
withing
a zone and on the zone boundary? There should be none, yet spanned
pages
do get updated only when we do the later, IIRC? So spanned pages is not
really all that valuable information. It just tells the
zone_end-zone_start. Also not what is the semantic of
spanned_pages for interleaving zones.
Ok, I think I start getting your point.
Yes, spanned_pages are only touched in case we remove the first or the
last
section of memory range.
So your point is to get rid of shrink_zone_span() and
shrink_node_span(),
and do not touch spanned_pages at all? (only when the zone is gone or
the node
goes offline?)
The only thing I am worried about is that by doing that, the system
will account spanned_pages incorrectly.
So, if we remove pages on zone-boundary, neither zone_start_pfn nor
spanned_pages will change.
I did not check yet, but could it be that somewhere we use zone/node's
spanned_pages
information to compute something?
I mean, do not get me wrong, getting rid of all shrink stuff would be
great,
it will remove a __lot__ of code and some complexity, but I am not sure
if
it is totally safe.
And if we remove it, would not this give to a user "bad"/confusing
information when looking at /proc/zoneinfo?
Who does use spanned pages for anything really important? It is managed
pages that people do care about.
Fair enough.