From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 0B99A8045D for ; Wed, 28 Oct 2026 23:18:57 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69SNHdP9024389; Thu, 29 Oct 2026 02:17:39 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SNHdP9024389 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Uu/qYQQ8" Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69SNHbgf024379 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Thu, 29 Oct 2026 02:17:37 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SNHbgf024379 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-48e1291432aso1127320f8f.2 for ; Wed, 28 Oct 2026 16:17:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvByEm9GmLmMvclHixcp0Hgh/zbOvevjDV4k4xP0OdZy4+dSmqbgKNAZ7wmq0F3pVJZkr4HY6cg==@openvz.org X-Gm-Message-State: AFq9FYK22GLfay+b4kXQfKFQUXe9BBdwK1eIYr+L8Ts9cC5pSB0NSQCC FrZ8x2ICmmYP7V8SaDz40+nqVmExKI9TPKOhIfMXbxxf/H2na7h5p5hc5WtxpByRAkFzZZsNlvJ ACDMOWE0vrx/+vS1OgTNx3NHjySqzYT4J1/ewss0rQndDt/pljICUpw== X-Gm-Gg: AYBFou2zDR+ILOT6bIT5q/9z9DlXNBuXKoLY2iFXk0C/4MjjadC8rADrG/itGfasr/I DS+1KN8yAfR+lV3DCxesclwUh6xmJPdhsrQg7//J24icbfuU6AEvc4kgcg5l8nDihZXEmf5lQqA QPEdRc1KHZ+ky2WPdilb3avuJEqL9XEZBjIKReqrqgVbv9gydVZhm16HqQ3lYXIBX5yvGjiqxv5 gxS4nc1w+KuqW42HAENz+bsWDzw5SUdzFlk7i1DfeDwDRLHuTGIYpguAu+Pm0g0bmYED1PjKcbN ahQmwufgPUy/cakYSNv/Bawbz1yx52PQX+ZsQ/Ta7lZsxlmDwNzo/JCxsbknpnnCYH1l9ccWza4 eYsUo1sXYO5nmQZDW X-Received: by 2002:a05:6000:4281:b0:48d:bae6:d7ba with SMTP id ffacd0b85a97d-48e5d5c7104mr8258640f8f.26.1793229457287; Wed, 28 Oct 2026 16:17:37 -0700 (PDT) X-Received: by 2002:a05:6000:4281:b0:48d:bae6:d7ba with SMTP id ffacd0b85a97d-48e5d5c7104mr8258598f8f.26.1793229456802; Wed, 28 Oct 2026 16:17:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1793229456; cv=none; d=google.com; s=arc-20260327; b=eAH+jt00IOHoqQ2w0+Sg7ykrDX7nfXPyQub0gf/MCfO/eS33/GM1/2WNT515Hebxs1 h7+OIKPZM/TbDqMFv1MT9l1xQdSnkvFnBQ3Sn8OqT5Sn1ZZLJLTbtuaJc5/gzGQOJcTr 0+bTqH8kI/xblKZ+JWoUEan151L8f8fZ/OlwE2zFIoNeiS9WQkvHoNxpMrZdnOorz7OK iGUt4YxjU/S3bUIjGIrdNQ8hWs0N8iND7/cnMooW3/k9UmfCaLm9Ady4exbi4hjsD8V8 sTWUneoYmoD2P3oeoV1nrkN0nD3Jo2sACdhYYkJsjdj/N38cuVFNo1l/tHHBcdvruQN3 1yTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:dkim-signature; bh=7fRuFngtDcU6PYEGcVRe14pLZhapl8t8kX9vhunqDuo=; fh=XcqC0Cib/C4XsQyLUc3b6E9Ii37Wk0LS3yBNHj5szHI=; b=ZVS0mGx5kEem9b44wVCMzxrPzHxWtKCIZqAagAPgkg9Lp78Fh7yW2uIScK4iYPOwIT g5uHdhRXq+p8qxDLHBqjo0HkiG/J70D7iNPWZWQ8LxRqqRhqFGL3A98m4TMMGR/+3XBF KZBgUYYYr77FcgfnmHc3Rmrb8Cx8d4ZSwb+qvzrCz1k+4hPPxS5h16ahD6DtyCYaP0CN 62iegBXjnAjUvUpx0YvFlodBhgf01iSgNpWE6WiFafOizpNtXt+SAWqYSE03aYQFJLFO wYqVruXmn47KCmYgl7VAwAS6ldpjv7Z0k1iSL5fFLZY4wWxfAE0cgFjfLVia6SHtal8g tIEg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b="Uu/qYQQ8"; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48e3ece8ebesi30761318f8f.205.2026.10.28.16.17.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2026 16:17:36 -0700 (PDT) Received-SPF: pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b="Uu/qYQQ8"; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Message-Id:Content-Type:MIME-Version:Subject:Date :From; bh=7fRuFngtDcU6PYEGcVRe14pLZhapl8t8kX9vhunqDuo=; b=Uu/qYQQ8S5KVs7755zE czsXH0fjMhwBAE8NQUbrWEfaoa9VbuIqFhskejbKumbLpWcXf4ijufO1Znmd1V+N6vt0Jd7+nldjh yFfhCxCaGBwgdwTNlPpmPCCiccfUrLv9xbcEhvryOAPAbKGhw1Yxe5H3CA2O3j8RL1lQ3lZWire/+ BM0ZAa2ZLnTldTT/A8zPS0hVcSOYN5XO15FxVFPt2EAgmGN595i2xSA7Q6TT2FynvUA7PcergeYQ6 a3cCRb/Toos70OCGaPMPXNOAwJ2jyRHpBPFPcFFU9xFAPYCnT5zi9v3pWrsYfFFVLMeZDCzRxokPE cmbs3mcjuVGExgw==; Received: from ch-demo-asa.virtuozzo.com ([130.117.225.8] helo=f0.sw.ru) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1xMCpx-004Nh2-1U; Thu, 29 Oct 2026 00:17:35 +0100 From: Konstantin Khorenko Date: Thu, 29 Oct 2026 00:17:31 +0100 MIME-Version: 1.0 Message-Id: <20261029-b4-prep-khorenko-vstor-151607-numa-migrate-order-v4-1-cf966bf93405@virtuozzo.com> References: <20261029-b4-prep-khorenko-vstor-151607-numa-migrate-order-v4-0-cf966bf93405@virtuozzo.com> In-Reply-To: <20261029-b4-prep-khorenko-vstor-151607-numa-migrate-order-v4-0-cf966bf93405@virtuozzo.com> To: Pavel Tikhomirov X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3449; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=TvBUH6ZGCZTBGTOtuFSqXE6i+ZWGUWYBewuIn+pWEAk=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBq4oKO9yZCx01bDu060tW3hlOXg2oGzosNM+98Y S62SHFSKPuJAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCauKCjgAKCRBRlgpH+WFc KoDJEACgmEz7bVJnPeldn3pQelXfih39tAhdp+x2zq5+pp3sgstsScIjXWYZMeA2wWGFxMX0xOt w0D8sXkCSKykMbpWbSNQrLBnjaioe4DewVC2zCSVOsFfBbJT2qyFKp5hYiwP27UImlMQ30FViPJ WX7DC2DMOAn6Y4HOwsINlfsMQ2MyljwEaBpZX0IE37o2Nipp8OuUTUEQpTCfWCx5/X/G4q7sij2 Cb7GoOi+eTizMHRE26LEa/ARWKIEsbrAkLt0BqNzajRVaPBIQ/glaER4dFDU2jfpL41ZVMPun2y 32uyTqob2jnUXkHAmUMgTZl+0Z+rigshlGMKhA5e+4rMpt5KUpe/1WID2XU8oC9CCpcpI9iZgs3 9vLUenoNkls5n22QHr0yAT5ierMuSyIPsdsh8hCSi0g/95ko2TEEG9aJ0el4HfjwPtHSAVGI8Zg X5egiHcVJJnbXVhDkoPSYufbCj8A7GfMGJM+rosZ9fdxF01XWvP4StHXV8fRB4U68lo056TfOCG reD6CaZjL/G/qtFCKJtWiMuvCT+ukRsnc0dnlHMHIpkPBLEpG+p/X00mN4r7FLHUz8c5AMT71W6 G9Z2X7VrW5UIxjzzAKbLtlnx4/snCFgmptAUjQyohdVr9KeNy2aMQdzLqQVpPAODU74rCvUgWwl wztItM3xFkQCtAg== X-Developer-Key: i=khorenko@virtuozzo.com; a=openpgp; fpr=560F6DC83DC5D3D063BD082C51960A47F9615C2A X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v4 1/2] mm/memcontrol: allocate numa_migrate targets of the source folio order X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org memcg_numa_migrate_new_folio() treats every large folio as a PMD-sized THP and allocates an HPAGE_PMD_ORDER destination for it. The branch is the 4.18 pattern of new_page() in mm/mempolicy.c: a compound page on the LRU could only be a THP then, so PageTransHuge() implied HPAGE_PMD_ORDER. Today the page cache holds large folios of any order (NFS sizes a folio to the write, XFS and shmem have them too) and anonymous memory has mTHP, while folio_test_large() is still just folio_test_head() and is true for any order from 1 up. migrate_pages() never checks that the destination order matches the source. For an order-1 or order-4 file folio the destination is an order-9 folio that inherits the source index and page cache reference count, so every later page cache operation that sizes the folio by its order goes wrong: nrpages underflows, neighbouring xarray slots get wiped, the folio can never be freed. On a two-node host a VM migration to another NUMA node along with a backup to NFS ends up with a negative nrpages, and closing the backup file dies in nfs4_evict_inode(): kernel BUG at fs/inode.c:737! RIP: 0010:clear_inode+0x75/0x80 Call Trace: nfs4_evict_inode+0x21/0x80 [nfsv4] evict+0x115/0x2a0 nfs4_delegreturn_release+0x55/0xa0 [nfsv4] rpc_free_task+0x39/0x60 [sunrpc] __rpc_execute+0x3d1/0x3e0 [sunrpc] A debug build dies earlier, on the first migration of a large folio of any file system, in mem_cgroup_migrate(): VM_BUG_ON_FOLIO(folio_nr_pages(old) != folio_nr_pages(new)) Make memcg_numa_migrate_new_folio() handle large folios properly. The thp_migration_supported() check goes: migrate_pages() splits PMD THPs itself when unsupported, other large folios migrate whole anyway. Fixes: 9f8a754ad6c2 ("mm: memcontrol: add memory.numa_migrate file") https://virtuozzo.atlassian.net/browse/VSTOR-151607 Feature: mm: interface to migrate memory between NUMA nodes upon userspace request Reviewed-by: Pavel Tikhomirov Reviewed-by: Vasileios Almpanis Signed-off-by: Konstantin Khorenko --- mm/memcontrol.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 0734c0fa21d05..d8a87913ace37 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3480,6 +3480,7 @@ static struct folio *memcg_numa_migrate_new_folio(struct folio *old_folio, { struct memcg_numa_migrate_struct *ms = (void *)private; gfp_t gfp_mask = GFP_HIGHUSER_MOVABLE | __GFP_NORETRY | __GFP_NOWARN; + unsigned int order = 0; ms->current_node = next_node(ms->current_node, *ms->target_nodes); if (ms->current_node >= MAX_NUMNODES) { @@ -3487,13 +3488,13 @@ static struct folio *memcg_numa_migrate_new_folio(struct folio *old_folio, VM_BUG_ON(ms->current_node >= MAX_NUMNODES); } - if (thp_migration_supported() && folio_test_large(old_folio)) { - return __folio_alloc(GFP_TRANSHUGE_LIGHT | __GFP_THISNODE, - HPAGE_PMD_ORDER, ms->current_node, - ms->target_nodes); + if (folio_test_large(old_folio)) { + gfp_mask = GFP_TRANSHUGE_LIGHT | __GFP_THISNODE; + order = folio_order(old_folio); } - return __folio_alloc(gfp_mask, 0, ms->current_node, ms->target_nodes); + return __folio_alloc(gfp_mask, order, ms->current_node, + ms->target_nodes); } /* -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel