Messages in this thread | | | Subject | Re: [PATCH v2] memory_hotplug: zone_can_shift() returns boolean value | From | Yasuaki Ishimatsu <> | Date | Wed, 11 Jan 2017 11:41:43 -0500 |
| |
Hi Andrew
On 01/09/2017 06:27 PM, Andrew Morton wrote: > On Tue, 13 Dec 2016 15:29:49 -0500 Yasuaki Ishimatsu <yasu.isimatu@gmail.com> wrote: > >> online_{kernel|movable} is used to change the memory zone to >> ZONE_{NORMAL|MOVABLE} and online the memory. >> >> To check that memory zone can be changed, zone_can_shift() is used. >> Currently the function returns minus integer value, plus integer >> value and 0. When the function returns minus or plus integer value, >> it means that the memory zone can be changed to ZONE_{NORNAL|MOVABLE}. >> >> But when the function returns 0, there is 2 meanings. >> >> One of the meanings is that the memory zone does not need to be changed. >> For example, when memory is in ZONE_NORMAL and onlined by online_kernel >> the memory zone does not need to be changed. >> >> Another meaning is that the memory zone cannot be changed. When memory >> is in ZONE_NORMAL and onlined by online_movable, the memory zone may >> not be changed to ZONE_MOVALBE due to memory online limitation(see >> Documentation/memory-hotplug.txt). In this case, memory must not be >> onlined. >> >> The patch changes the return type of zone_can_shift() so that memory >> is not onlined when memory zone cannot be changed. > > What are the user-visible runtime effects of this fix?
The user-visible runtime effects of the fix are here:
Before applying patch: # grep -A 35 "Node 2" /proc/zoneinfo Node 2, zone Normal <snip> node_scanned 0 spanned 8388608 present 7864320 managed 7864320 # echo online_movable > memory4097/state # grep -A 35 "Node 2" /proc/zoneinfo Node 2, zone Normal <snip> node_scanned 0 spanned 8388608 present 8388608 managed 8388608
online_movable operation succeeded. But memory is onlined as ZONE_NORMAL, not ZONE_MOVABLE.
After applying patch: # grep -A 35 "Node 2" /proc/zoneinfo Node 2, zone Normal <snip> node_scanned 0 spanned 8388608 present 7864320 managed 7864320 # echo online_movable > memory4097/state bash: echo: write error: Invalid argument # grep -A 35 "Node 2" /proc/zoneinfo Node 2, zone Normal <snip> node_scanned 0 spanned 8388608 present 7864320 managed 7864320
online_movable operation failed because of failure of changing the memory zone from ZONE_NORMAL to ZONE_MOVABLE
> Please always include this info when fixing bugs - it is required so > that others can decide which kernel version(s) need the fix.
I'll add the above information and resend the patch as v3.
Thanks, Yasuaki Ishimatsu
> Thanks. >
| |