On Fri 06-12-19 00:25:53, John Hubbard wrote:
On 12/5/19 5:34 PM, Yang Shi wrote:You are right. Both store_status and do_move_pages_to_node do overwrite
Since commit e78bbfa82624 ("mm: stop returning -ENOENTwhoa, hold on. If I'm reading through the various error paths correctly, then this
from sys_move_pages() if nothing got migrated"), move_pages doesn't
return -ENOENT anymore if the pages are already on the target nodes, but
this change is never reflected in manpage.
Cc: Michael Kerrisk <mtk.manpages@xxxxxxxxx>
Cc: Christoph Lameter <cl@xxxxxxxxx>
Cc: John Hubbard <jhubbard@xxxxxxxxxx>
Cc: Michal Hocko <mhocko@xxxxxxxx>
Cc: Qian Cai <cai@xxxxxx>
Signed-off-by: Yang Shi <yang.shi@xxxxxxxxxxxxxxxxx>
---
man2/move_pages.2 | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/man2/move_pages.2 b/man2/move_pages.2
index 2d96468..2a2f3cd 100644
--- a/man2/move_pages.2
+++ b/man2/move_pages.2
@@ -192,9 +192,8 @@ was specified or an attempt was made to migrate pages of a kernel thread.
One of the target nodes is not online.
.TP
.B ENOENT
-No pages were found that require moving.
-All pages are either already
-on the target node, not present, had an invalid address or could not be
+No pages were found.
+All pages are either not present, had an invalid address or could not be
moved because they were mapped by multiple processes.
.TP
.B EPERM
code is *never* going to return ENOENT for the whole function. It can fill in that
value per-page, in the status array, but that's all. Did I get that right?
the error code. So you are right that ENOENT return value is not
possible. I haven't checked since when this is the case. This whole
syscall is a disaster from the API and documentation POV.
Btw. Page states error codes could see some refinements as well.