diff options
author | Li Zefan <lizefan@huawei.com> | 2013-06-13 07:11:44 (GMT) |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-06-13 17:51:22 (GMT) |
commit | f047cecf2cfc9595b1f39c9aab383bb0682f5a53 (patch) | |
tree | e3cdfd41e39c1a43ab9cba2721efb0aaf000e858 /fs/ceph | |
parent | 88fa523bff295f1d60244a54833480b02f775152 (diff) | |
download | linux-f047cecf2cfc9595b1f39c9aab383bb0682f5a53.tar.xz |
cpuset: fix to migrate mm correctly in a corner case
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: Li Zefan <lizefan@huawei.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'fs/ceph')
0 files changed, 0 insertions, 0 deletions