The logic in do_pages_move() is a little mess for audience to read and has some potential error on handling the return value. Especially there are three calls on do_move_pages_to_node() and store_status() with almost the same form. This patch set tries to make the code a little friendly for audience by consolidate the calls and remove some unnecessary repeat code. After this, we can do a better fix. Wei Yang (8): mm/migrate.c: skip node check if done in last round mm/migrate.c: not necessary to check start and i mm/migrate.c: reform the last call on do_move_pages_to_node() mm/migrate.c: wrap do_move_pages_to_node() and store_status() mm/migrate.c: check pagelist in move_pages_and_store_status() mm/migrate.c: handle same node and add failure in the same way mm/migrate.c: move page on next iteration mm/migrate.c: use break instead of goto out_flush mm/migrate.c | 90 ++++++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 42 deletions(-) -- 2.17.1