On Wed, 19 Aug 2015 04:18:26 -0400 Changsheng Liu <[email protected]> 
wrote:

> From: Changsheng Liu <[email protected]>
> 
> When memory hot added, the function should_add_memory_movable
> always return 0,because the movable zone is empty,
> so the memory that hot added will add to normal zone even if
> we want to remove the memory.
> So we change the function should_add_memory_movable,if the user
> config CONFIG_MOVABLE_NODE it will return 1 when
> movable zone is empty

I cleaned this up a bit:

: Subject: mm: memory hot-add: memory can not been added to movable zone
: 
: When memory is hot added, should_add_memory_movable() always returns 0
: because the movable zone is empty, so the memory that was hot added will
: add to the normal zone even if we want to remove the memory.
: 
: So we change should_add_memory_movable(): if the user config
: CONFIG_MOVABLE_NODE it will return 1 when the movable zone is empty.

But I don't understand the "even if we want to remove the memory". 
This is hot-add, not hot-remove.  What do you mean here?

> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1198,9 +1198,13 @@ static int should_add_memory_movable(int nid, u64 
> start, u64 size)
>       pg_data_t *pgdat = NODE_DATA(nid);
>       struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
>  
> -     if (zone_is_empty(movable_zone))
> +     if (zone_is_empty(movable_zone)) {
> +     #ifdef CONFIG_MOVABLE_NODE
> +             return 1;
> +     #else
>               return 0;
> -
> +     #endif
> +     }
>       if (movable_zone->zone_start_pfn <= start_pfn)
>               return 1;

Cleaner:

--- 
a/mm/memory_hotplug.c~memory-hot-addedthe-memory-can-not-been-added-to-movable-zone-fix
+++ a/mm/memory_hotplug.c
@@ -1181,13 +1181,9 @@ static int should_add_memory_movable(int
        pg_data_t *pgdat = NODE_DATA(nid);
        struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE;
 
-       if (zone_is_empty(movable_zone)) {
-       #ifdef CONFIG_MOVABLE_NODE
-               return 1;
-       #else
-               return 0;
-       #endif
-       }
+       if (zone_is_empty(movable_zone))
+               return IS_ENABLED(CONFIG_MOVABLE_NODE);
+
        if (movable_zone->zone_start_pfn <= start_pfn)
                return 1;
 
_

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to