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 80D17C2BD09 for ; Tue, 9 Jul 2024 14:56:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 188E36B00B1; Tue, 9 Jul 2024 10:56:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 138C66B00BB; Tue, 9 Jul 2024 10:56:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F41A96B00BF; Tue, 9 Jul 2024 10:56:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id D70356B00B1 for ; Tue, 9 Jul 2024 10:56:58 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7B87941922 for ; Tue, 9 Jul 2024 14:56:58 +0000 (UTC) X-FDA: 82320516516.28.77BE026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf30.hostedemail.com (Postfix) with ESMTP id 4804280010 for ; Tue, 9 Jul 2024 14:56:56 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=iCDaN2ki; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf30.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720536991; a=rsa-sha256; cv=none; b=8GQgqBRBSzEWqhQqNi45fAUerNH14154Ao1Zr65ogr2BfUrHBInbuUDP5brDAxS+lar16A PfU9LZNRTeHD2Ap6vLAHBkXoXe6JM51Mgtpi70ATPd6LmTQjnwh3qybAOCdndgaPvlCYRp Sc5ydfZJWM1eeWCEAZ67vH7WrXUWZkE= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=iCDaN2ki; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf30.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720536991; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9M5uL+NQK8IPvoRvEPBKrWSCAqph9q8uCZdOp0LlX4M=; b=VOq0tcQ3uoAjgRwUzdrFwoa8gEnTcLuBq4tpUi5fM9aM0nnVu1dlkORNmJGUE3lsPyIxGL yB+pP62WpLsB2AOPTlb7HZ54ecZrfrN1vXOgbyk0rGme9uOxe/T7+EMVSQohg2xyBqjG0W 32kA4AVQKZl/G4AeKh684AH6VO9NDW0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1720537015; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=9M5uL+NQK8IPvoRvEPBKrWSCAqph9q8uCZdOp0LlX4M=; b=iCDaN2ki6ADBTOiVKUZ8vEoqDB2Hz5pwfuYb9wGJTl2X/IvOAqy5utiuUJQ+l0t8sNx6ne u5lDuI8sjmk5w/M/f+gumfseY3WYotrv2Pl1brS7KH2hfR+sucIrMIPPaGVknuJlfSBJfy Jhka172blOUFEreoBBebe7dJZgO1SzE= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-510-lKSARNOUNoK2DfGh8q2_sA-1; Tue, 09 Jul 2024 10:56:53 -0400 X-MC-Unique: lKSARNOUNoK2DfGh8q2_sA-1 Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-447e6064232so3081491cf.0 for ; Tue, 09 Jul 2024 07:56:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720537013; x=1721141813; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9M5uL+NQK8IPvoRvEPBKrWSCAqph9q8uCZdOp0LlX4M=; b=Ad7rwX3TmkYHrLgGfHtzZTi6uJi0bksrSJLOVYur+t6rz5j5SWb/yewhLli79b0ei8 VvmAmGtNwOrIMKrRPBsS+byBGhCG3nuHjjw5xJ41lUNc/AJ3B+p3O0fM0C9NSwUJgQdT VheqSwlw9K88sr+0D/NvNzYfRbu1td108yQBJW/cPEuOqCWFcyktE0VWdPTqgrpKAPaG lOKC0XhOMDqaj4IiIKOdNYZ/6RYG1fhg5HplpWQsxA3PxbFwgAaoquGuQEWdJYQw2/dJ E08Ins/ZsNrlDaM16UvhLuNNXtlXXMLhLVlTIjnk4k6Gm4U78xIxs/tB8GmI1ZnvCQnL CEwA== X-Gm-Message-State: AOJu0Yw7tPLC439j1KizKxVUT6T4NHgCTDQMeJZGXOQwbdrfvuBExkUB pib5awSPciT16Y/cXc/VY+AaL91RO81/ec/z91tsjLeIsggNankhFrPyK2UapsijJ+lY3BCD2V8 rXHcPG23bXeoHcz7PcVg71LsV7zaW8EX/Bc3vEojKKbu/oB5p X-Received: by 2002:a05:622a:386:b0:447:f8ba:950d with SMTP id d75a77b69052e-447faa8baebmr26765561cf.5.1720537012801; Tue, 09 Jul 2024 07:56:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFXzNOmg6Ox8t81ifrM0kRb2gLNom9uCDivVoUTOhP2aPDzz/ZqeFUWYbQR/GyWnA+1c2I8iA== X-Received: by 2002:a05:622a:386:b0:447:f8ba:950d with SMTP id d75a77b69052e-447faa8baebmr26765411cf.5.1720537012443; Tue, 09 Jul 2024 07:56:52 -0700 (PDT) Received: from x1n (pool-99-254-121-117.cpe.net.cable.rogers.com. [99.254.121.117]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-447f9bf2292sm11148421cf.81.2024.07.09.07.56.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jul 2024 07:56:52 -0700 (PDT) Date: Tue, 9 Jul 2024 10:56:49 -0400 From: Peter Xu To: Baolin Wang Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Zi Yan , Yang Shi , Hugh Dickins , Huang Ying , David Hildenbrand Subject: Re: [PATCH] mm/migrate: Putback split folios when numa hint migration fails Message-ID: References: <20240708215537.2630610-1-peterx@redhat.com> <4e30c29c-e310-4391-9d3c-09753f173770@linux.alibaba.com> MIME-Version: 1.0 In-Reply-To: <4e30c29c-e310-4391-9d3c-09753f173770@linux.alibaba.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 4804280010 X-Stat-Signature: qfo1h1wnzgb9a4jkbuepntkzuyngb5ee X-Rspam-User: X-HE-Tag: 1720537016-210800 X-HE-Meta: U2FsdGVkX1/bs5gcXQnv/3YYAJoMGujQTGjFDib0edZ19rXGZJETKElrpk5lwwI2r2VawMkwipQ871oxnGGORMfM5NApu5yyXFl7PmhCkLfghyzkzxEsfx33fUTLKjVCxyVXtU9mMNqgXhw14j2a28bb65mzxTwtYvOLRpfjHeX1YX+dGNDto83jeC0nYThdZonrWQftp5zF0YvWMcsf66hUQKF8t0oiK42vyoaCRTvfu31f17Vef3/mHXLLSvOiZ4OM2RfZaK5lJxPce6VoVPPjsPm01FGtEe8kQqex/FqO7mDjsRghHoS206tzqrLerY24fzo/XR6vP6o5mnYtnMIHVcyU4Zcpluah4TOhvUVgkdcwAJLyVR16fVvyBs67Hs2LI98CAFs6QteLPfCewh7WImw5bV1C/QtvqRV6pXLNyuAqPafA9ByEmylFHZV9hBHReOufLfa/t6ytoijDQeDv9Tv/pYxzXVzvJV4tJcrVw/59UHRqB1VNztGVes4X3hlkggCb00kdYNY95RjG9viADDeyOCAJTe2fosqfwIWAtpMlo3qFqNhnRkTybHMLSigBAQUHBt7Ypz9KbZtRbXPTmpOa9WAz9l74DaUonPiMPezs84azlkBCOIizFzav6PCKQc4pv1uom9RwUQjnqLjw99ze9XXQtJcZ8FVTGBI9Sf1VkTHUw7tmfj0KFI0xhSEK8IynJxEAZ+kaoLeaC0fke/xp1aMG9O4dfe6F4YvXaduqsKDMKCFdrgLGNIsw2ytQb2EQALNSdCwPOAR8SVlNCC8JJCy516rHDYgWslZTOSRWnCmwa5wm93mX7+lFmecJxpXiuQ5P1A9FqxFr+UBXHDny0jgQK4tO8P7NXFCRCZlIYruSLV15cpg+GpaSl+dNvxLIpI/Jrdl74+xC+gtUmeN1ybie+Hg4VZZPf/wJ3uXHFfQ9ka3adtpz88S8QNsk+16Qmdp+wHDQmD/ nutJAK75 MjGlYnkDcVYLRCqXci9bJTAkQ6GQV0TG4AQzf2OKNhszxn4NnHxqzYCOmucNTfqJHwQZXa1nG3weKx3BKlqJDytQ/t3cbKxp2c/V7AolqPfs5TTlEc+5uqtFS2tbu417xLVFz6XosQbMKMXNYpFkFa/W4+uICHhIE8xMBTVVqIwbDpt46GAHwylDdhPxYacCBIT2hUsJdnloo5TE8H78k5flm0wlGFio7r+HoSeHMA1vY+wGVRgyqh9VxPO9slXVuoMPzJZ6iL64qC59IB9emSuXlM5Sp7vdKtW4XBxDiJwP0JJ/q3knZv0qIj7hwmRsVwWGOJIuMnYbfocGVefbTmk/fExMAz7P+KQFOirUBgxY1bgY71rdcpydmwTECEwyo+4eBZqW/dNFzoIJfCf/Pt/0m+URsMxwpUabozzNJQEn6+V1UmLRzcOD191iTklYtnZs1q+zVSQbUJgY7q+0QmHHXPlBcMUcGOAU1Q6+P+2Fimx97h5DBiXomiNUhB3uIsn2ueNZ2DDoasTr0zv5hSk6KPY9sa+tRZs57 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 Tue, Jul 09, 2024 at 09:48:54AM +0800, Baolin Wang wrote: > > > 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. Sure, considering that it should normally be !empty when the first check passed. Though to make this simple for now, I assume we can keep what has been queued in Andrew's tree. It isn't so bad either to double check the list to avoid a function call if possible, I think. Thanks for the comment, -- Peter Xu