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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99BF6C3271E for ; Tue, 9 Jul 2024 01:49:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1D0CC6B009D; Mon, 8 Jul 2024 21:49:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1800A6B00A0; Mon, 8 Jul 2024 21:49:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 047146B00A2; Mon, 8 Jul 2024 21:49:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D41066B009D for ; Mon, 8 Jul 2024 21:49:04 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5BF27A4C97 for ; Tue, 9 Jul 2024 01:49:04 +0000 (UTC) X-FDA: 82318531008.30.0601D6F Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) by imf06.hostedemail.com (Postfix) with ESMTP id EA074180008 for ; Tue, 9 Jul 2024 01:49:00 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=aIZY6EX4; spf=pass (imf06.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.98 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720489727; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=3zCVRopH8rldnh7e3UYS9KcHE12Nh6EGAjAplapUpmA=; b=i0c2/fOdB9+otyTRHfCXwB9yiPhvYTycUCpJLHKHw+AyXcZxsLt/UXz3IZiKBH7kydPI2x XZfVxs6soxEqsyU3LwoFvSSTOCrkBZMENTTc61/WcgItAQdk3C+EaA+Gh6sLZbgGyu+C0i kLGnL25OScuKobj8hXGval8es0pyAmY= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=aIZY6EX4; spf=pass (imf06.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.98 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720489727; a=rsa-sha256; cv=none; b=HVXsi/is9VMqpzxi1YjoKwBcUuP5aMrTF90wqi+VfOfzBvW0YMjZMTNJkG+Al3o/6z8Tvo 0DcSngxSsAPbQUzF4yKD0uhdLW4H90XJ0xyVL3KYQhbmiBRrvRZSu3N8c5XFE8bcPQjgLD aBAN+ABVY2khg4GXX839MHN2wLvDLuU= DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1720489736; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=3zCVRopH8rldnh7e3UYS9KcHE12Nh6EGAjAplapUpmA=; b=aIZY6EX4u+j55kf0oAOhxcuDM/stohfO0gs5TGYLIwt1oug1Dg+0yNifAo+mP6jabRlu1tgSIJl2xoR+0w/DtsNkSRJpIFHnqWOvb/bJrYUkgV+buUbFxbeBDiv7vgG8hQYA870duOvk1+PybHvmdylzATXYsf5K2+AG3Q21sCM= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R211e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037067112;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=9;SR=0;TI=SMTPD_---0WA9qAr5_1720489735; Received: from 30.97.56.68(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0WA9qAr5_1720489735) by smtp.aliyun-inc.com; Tue, 09 Jul 2024 09:48:55 +0800 Message-ID: <4e30c29c-e310-4391-9d3c-09753f173770@linux.alibaba.com> Date: Tue, 9 Jul 2024 09:48:54 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm/migrate: Putback split folios when numa hint migration fails To: Peter Xu , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Andrew Morton , Zi Yan , Yang Shi , Hugh Dickins , Huang Ying , David Hildenbrand References: <20240708215537.2630610-1-peterx@redhat.com> From: Baolin Wang In-Reply-To: <20240708215537.2630610-1-peterx@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: EA074180008 X-Stat-Signature: fpchzqsh564qt96o7n9tgi76k94tpay6 X-Rspam-User: X-HE-Tag: 1720489740-749626 X-HE-Meta: U2FsdGVkX1/qWuK/4sdDuPEqcdfmFpNz5DgBkHhQThZCXqqpS1iDwwRZG8NGLye+rRpJQOM3BJXWwTmt6XESGzG46PypQvXxqCFQGkb55bC9bBzywil35rTH5KpGbLEqN+WQHZaLciQ4uDC8r4yHtA9i5HNXYXBTureNxepX5Ll5MknZM+zJR3HjUCdRtu6dmR5PXzESvqhkyUdmxOi4lI48cQojwiEalYI2QytDBoYlYKTeuiU3JKe9fHKRESm0Otac4x+D5/Lp7QF8vraFKaRxoiYTTWtFu7CppzAw/ZyS75fKO7xdonGKMkiqYCCL2IoLfRqDtY1/xyKFOBIt4Oh7IuiE1dPVra0VVIJlVPff/BPtWiB1JW0WmK8cFV/G6XuloeWaaQ7Oej1rGdxKroDGcewKREMvg3z26DU+Q13kR69n064WO7EFN7vYcOuIOjcfU4k8P1DP0l/s/MRTFsi1YvcJbTLUl+faAxz8WHAu7JjOGQCp+UR9AKHdMR5ebjYWhsQRVB+DWEKGwK3Z84pVYdFx2kKil6g+SCWoXPJnXTuSlKiNIgEYqbzBDV+rQcXG2VhVr0M8SMfkzBgSozoamp7Y11Aw0T8CZFCZxCN0McxbuF97Jde+vbNT0zuZ95OERvuZrftZB936kssAaoALM75r1n97/6RuvNDIxyuuQu+Pbzn4EJBPxLT6HMxLcvcFV6pBiLfpVwt2ACdLovrFHgmHF3kM2wzwm+71egfuoMdd/6pwM5pdIIXa1p2X+USAeTcGY4Je6UCFloQrA80q1LRS9x1VpGicJ5vbDbO1kkvq+j7457uprfM/IWPN5s9D3S4mrIT0S2f7CzFISNUwo/u4V2mJ3lq3eohL0sC2z4vozn/RIr79i1tyWnvpexK4w6JDzR2p+TkE6tNvu3ZBHEfNCnIGfn/5xj7QUcP2r9xHpz6Jdj4StOFGaYmdvLkMkT7zWQBt2ZFD25I NC0Veb1D A9iEYkwx8KFHA3yu7G60Qk1KZ1FjIKVeHDqLmvhSvtVRf5rIL6OOixczfMGJ1FQhCOmbekAwkdwtbM0/WWFnyr1aYQd4W9UeYoLwRqHfe55y94gQW4lWoBUxcewnnJL34I0ZfRncEqifUZ7SX5950iVaaja2TmZ5OdDigyZKS4F02s0NBlcAzvLMHS0ubP2xNOweq9gcRgzFIsHV5ubGmNRPjLIU5Ey223j4UlQzJvvj46W66RzVHyNRZHJSuPXU0hd4+Jm5ZxOYdQSmUikKJtjQ0J9dOKICDqcEAZLYhaAk9GzCkkRwhEI6jr1ygvxCHNNiPpXH6mQAlmFuakN0l0Sswzm8Tf5zFXmh/+AAdSRNw5h0RhR2ly1pD/UyLonXvrPKODU+1gx59mHA7g+L2mMBSrE2Wh6Wmg7/HkWDaxfLxD5kOI+b0qHBF9UTwN7O8O1kah1depECAG/TY6YhlEZnHs1eTwbQvxxA7BhO1dhkk0biu/vVUifYGxw== 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: List-Subscribe: List-Unsubscribe: On 2024/7/9 05:55, Peter Xu wrote: > This issue is not from any report yet, but by code observation only. > > This is yet another fix besides Hugh's patch [1] but on relevant code path, > where eager split of folio can happen if the folio is already on deferred > list during a folio migration. > > Here the issue is NUMA path (migrate_misplaced_folio()) may start to > encounter such folio split now even with MR_NUMA_MISPLACED hint applied. > Then when migrate_pages() didn't migrate all the folios, it's possible the > split small folios be put onto the list instead of the original folio. > Then putting back only the head page won't be enough. > > Fix it by putting back all the folios on the list. > > [1] https://lore.kernel.org/all/46c948b4-4dd8-6e03-4c7b-ce4e81cfa536@google.com/ > > Cc: Zi Yan > Cc: Yang Shi > Cc: Hugh Dickins > Cc: Baolin Wang > Cc: Huang Ying > Cc: David Hildenbrand > Fixes: 7262f208ca68 ("mm/migrate: split source folio if it is on deferred split list") > Signed-off-by: Peter Xu > --- Good catch. With fixing the building issue pointed by Andrew, please feel free to add: Reviewed-by: Baolin Wang > > Don't need to copy stable if this can still hit 6.10.. Only smoke tested. > --- > mm/migrate.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index e10d2445fbd8..20da2595527a 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -2615,14 +2615,8 @@ int migrate_misplaced_folio(struct folio *folio, struct vm_area_struct *vma, > nr_remaining = migrate_pages(&migratepages, alloc_misplaced_dst_folio, > NULL, node, MIGRATE_ASYNC, > MR_NUMA_MISPLACED, &nr_succeeded); > - if (nr_remaining) { > - if (!list_empty(&migratepages)) { > - list_del(&folio->lru); > - node_stat_mod_folio(folio, NR_ISOLATED_ANON + > - folio_is_file_lru(folio), -nr_pages); > - folio_putback_lru(folio); > - } > - } > + if (nr_remaining && !list_empty(&migratepages)) Nit: you can drop the '!list_empty(&migratepages)' validation, since putback_movable_pages() can handle this unusual case. > + putback_movable_pages(&migratepages); > if (nr_succeeded) { > count_vm_numa_events(NUMA_PAGE_MIGRATE, nr_succeeded); > if (!node_is_toptier(folio_nid(folio)) && node_is_toptier(node))