• L
    cpuset: fix to migrate mm correctly in a corner case · f047cecf
    Li Zefan 提交于
    Before moving tasks out of empty cpusets, update_tasks_nodemask()
    is called, which calls do_migrate_pages(xx, from, to). Then those
    tasks are moved to an ancestor, and do_migrate_pages() is called
    again.
    
    The first time: from = node_to_be_offlined, to = empty.
    The second time: from = empty, to = ancestor's nodemask.
    
    so looks like no pages will be migrated.
    
    Fix this by:
    
    - Don't call update_tasks_nodemask() on empty cpusets.
    - Pass cs->old_mems_allowed to do_migrate_pages().
    
    v4: added comment in cpuset_hotplug_update_tasks() and rephased comment
        in cpuset_attach().
    Signed-off-by: NLi Zefan <lizefan@huawei.com>
    Signed-off-by: NTejun Heo <tj@kernel.org>
    f047cecf
cpuset.c 77.6 KB