From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A1A6C33CA1 for ; Mon, 20 Jan 2020 13:06:30 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1503922464 for ; Mon, 20 Jan 2020 13:06:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1503922464 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A32D26B0650; Mon, 20 Jan 2020 08:06:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9E9756B0651; Mon, 20 Jan 2020 08:06:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D1016B0652; Mon, 20 Jan 2020 08:06:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0154.hostedemail.com [216.40.44.154]) by kanga.kvack.org (Postfix) with ESMTP id 743636B0650 for ; Mon, 20 Jan 2020 08:06:29 -0500 (EST) Received: from smtpin14.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with SMTP id 32B12180AD802 for ; Mon, 20 Jan 2020 13:06:29 +0000 (UTC) X-FDA: 76398036498.14.hook41_55af09aeae352 X-HE-Tag: hook41_55af09aeae352 X-Filterd-Recvd-Size: 4283 Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Mon, 20 Jan 2020 13:06:28 +0000 (UTC) Received: by mail-wm1-f67.google.com with SMTP id a5so14435701wmb.0 for ; Mon, 20 Jan 2020 05:06:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=yAP4AxE8jezFjjNwotXQWmTcKA84LGA03EpyU82A5NQ=; b=iJLA+L1+1kUDV2fHE+2sSnD6LWOsBCxs9EDpz60DQo8uN4JD3UMuHiSxJJfPVe3NFK H1sNzqdoAuMO8HAcMVP8ooQmjc3+3dFpLRzqimwOKctx7nZf6QBf/nlX7I+j1FhFreQp WMJLu0nkuCvXMrf8Kk8w21RUU2exMubhX64/ZHr91kdDOsk2Ti0mEspSsAZhGaobby5/ qmszrN3HH9DILE5bhfE3nglvAhlHydS2VjtIMQtr/hgriW8rCWqI4xx2pQKLNUE8SiEt h0sVSktGifwnoREnXMc6HsO0usm9LCTdkZrdtpTni48+RxArft4SNZoRK4Hk3NQlfOYF PATA== X-Gm-Message-State: APjAAAVoYdVQiWiGaG1fVh55hSyLJDzOivFMGEk5wpNgJL1k/3eUVUrI URq7rGPAaCQdOk8UxjjLSCw= X-Google-Smtp-Source: APXvYqy9ZRyVn2Uj4Hak4b0GCXZIvQoCZGbEy/6ofUz59wN/vXZ2z+9kjnuxMPGnLSbwovzTlQdxwQ== X-Received: by 2002:a05:600c:22d3:: with SMTP id 19mr18745263wmg.20.1579525586658; Mon, 20 Jan 2020 05:06:26 -0800 (PST) Received: from localhost (prg-ext-pat.suse.com. [213.151.95.130]) by smtp.gmail.com with ESMTPSA id c195sm3106848wmd.45.2020.01.20.05.06.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jan 2020 05:06:25 -0800 (PST) Date: Mon, 20 Jan 2020 14:06:24 +0100 From: Michal Hocko To: Yang Shi Cc: richardw.yang@linux.intel.com, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH] mm: move_pages: fix the return value if there are not-migrated pages Message-ID: <20200120130624.GD18451@dhcp22.suse.cz> References: <1579325203-16405-1-git-send-email-yang.shi@linux.alibaba.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1579325203-16405-1-git-send-email-yang.shi@linux.alibaba.com> User-Agent: Mutt/1.12.2 (2019-09-21) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Sat 18-01-20 13:26:43, Yang Shi wrote: > The do_move_pages_to_node() might return > 0 value, the number of pages > that are not migrated, then the value will be returned to userspace > directly. But, move_pages() syscall would just return 0 or errno. So, > we need reset the return value to 0 for such case as what pre-v4.17 did. The patch is wrong. migrate_pages returns the number of pages it _hasn't_ migrated or -errno. Yeah that semantic sucks but... So err != 0 is always an error. Except err > 0 doesn't really provide any useful information to the userspace. I cannot really remember what was the actual behavior before my rework because there were some gotchas hidden there. If you want to fix this properly then you have to query node status of each page unmigrated when migrate_pages fails with > 0. This would be easier if the fix is done on the latest cleanup posted to the list which consolidates all do_move_pages_to_node and store_status calls to a single function. > Fixes: a49bd4d71637 ("mm, numa: rework do_pages_move") > Cc: Michal Hocko > Cc: Wei Yang > Cc: [4.17+] > Signed-off-by: Yang Shi > --- > mm/migrate.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index 86873b6..3e75432 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1659,8 +1659,11 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, > goto out_flush; > > err = do_move_pages_to_node(mm, &pagelist, current_node); > - if (err) > + if (err) { > + if (err > 0) > + err = 0; > goto out; > + } > if (i > start) { > err = store_status(status, start, current_node, i - start); > if (err) > -- > 1.8.3.1 -- Michal Hocko SUSE Labs