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 BFCDB8045D for ; Wed, 28 Oct 2026 17:12:28 +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 69SHB8HG022256; Wed, 28 Oct 2026 20:11:09 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SHB8HG022256 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="tN9YqEDw" Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69SHB6Yi022244 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 28 Oct 2026 20:11:06 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SHB6Yi022244 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4a359c7f47bso10157785e9.2 for ; Wed, 28 Oct 2026 10:11:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBxYz/lRHF52J0eCAtS4USZe7ee4qCPU/Tbq75f8W+Py/uZQdXuxPF+1/8zfl0rjQ7Q63s/XYQ==@openvz.org X-Gm-Message-State: AFq9FYIFG9+mJ2yI3qWHQ3ZynxiV+ZbNnSEQK+IP5qSAKJnqUY/9V9Ne 9QNUfxXYNQ3KfXxFVGkEB/pRgYhJLtz0zWauIYMNNRrqfqtwB9IYOFo1220wrKjk78E7VW/IvBH itag1Z8bfHzmKC6H7/wHuhJ++ETJSMymaR+yrtgYRqhU60swfpSEfhQ== X-Gm-Gg: AYBFou08tahruH+ivv+HTqrNPXlUBxTe8HEJZZMLKXllqz0LPHFk/tJ2mubowCj2NQQ IrMpG1kIhis0veVZ57agSwc4e8l4TMAdNe8Bf4mZuLSV5n+MAPh1WnC3H5KdFD+PTEkvDxAj3hY KzDc8nfAOQNYa5LKB7PE94JaXgVVzyci7mHJSyr58UQXwr7Seshoxqi4BBa6QJmiix4ZbUz4fPW 7LA24TSVFCHU9Qp9snhAY/LHaQryO9f9vOVeE5vZh/k1sErJWUouo5jPL/p+9RcVxTTONdtVz9+ OtgBSF7eLLWtb0diAL64uPPi8pAfV2G4/yYLTCsNqbcWdJjEYzT3D9JUN9ivcNtjQg11eBxe32/ A/E6GQqDi3kWEK42VYA== X-Received: by 2002:a05:600c:a314:b0:4a3:5d64:df91 with SMTP id 5b1f17b1804b1-4a96b29d208mr50656935e9.18.1793207466105; Wed, 28 Oct 2026 10:11:06 -0700 (PDT) X-Received: by 2002:a05:600c:a314:b0:4a3:5d64:df91 with SMTP id 5b1f17b1804b1-4a96b29d208mr50656375e9.18.1793207465565; Wed, 28 Oct 2026 10:11:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1793207465; cv=none; d=google.com; s=arc-20260327; b=PfE1uFJoWUd1WMmeDQoSPU4+1s1z3ONWBfSSax9G5FCee2s/pojGj87fkvG/5CmreW TsGwrzkm6ym3PsRgQElNKaBzjqHi3qp+wLkeqqkczjxeASZ/bDrfFO4p7xabUBcj5nkr KQmNlL8LM8zUCzkfMBXLjrRS0nw1/U0jdaf6Jptlfu1YqoH3M9M8cyhrtOdcK4B1Fsk3 wJZgCTxLiHhNJr5PQolVjA1/KRZ9IbYgKwhy+kH5Q0Ay21TEatPIuoU3ffBmUdGB+c5S oGSi7TwC1VI9R/82vpakUcYmYcZtEFLLoOTRsZmyALWax/krmXo509ctwTEUonMRbEs6 f4Yg== 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=JUAlxK4C//ootCgh9s5CDO3ORCH8CX60NseDpXNxPbNq4Q4IiCMVZjjXpACYaWe5nq pSdAbMuzTCwoCygEWlemJ/JZsxA+cPjRjWFrPYJXlMd6NAJ3XKZGGbmUB1IaAnFzmqBT FJQ2loJzfitdoWXAa2Qq7XChmD3Pkvc6BDAT3oHSPagicHD+RISHlfIZIcIxSZQXs1X8 v+lradmJAiYGbqFXck5XJQab6HFSjmKGKLQAxelMwAOAihhUDwxGUHq0Mtg62lKIRr7u HVZSkdg69m5r3ak8tUw5rb4D01K51u5E/mify2I5+iMfjcMTbseXHchbi19EORICFTCe /gAg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=tN9YqEDw; 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-48e3ed2cc79si29356360f8f.472.2026.10.28.10.11.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2026 10:11:05 -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=tN9YqEDw; 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=tN9YqEDwpPpZrW06xNo hAudXTcxdsKnro0odfMIG5tCCMrmlqKy0D4wBNZFhnAA/Qz5SP+7vfsWalvC8ibpEC2YdboeaaqdJ FOH9XjrSTd8cvS/QemHZFuXQfxjZA604FO0DxRdIQE9sIaeGzyNKC2vbllr/FA1hfJ/8dDfcJrxXf HQ+s79NX+JupH+j1gTNAFNZIvlZSPOSmoUPDAiRpYfwfHKvretwouLX6DNe5KB9iFSvOQ7maT/ajq QGSu3W7BGOu8fz27tmP7mYshP2kOleqnmzNVS534oOLtWQMkj4UmKBSW7A5Y/cVEbdEOnbn/loVrZ 1KZTZLYoJvzogtA==; 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 1xM77G-00Dgbl-1s; Wed, 28 Oct 2026 18:11:04 +0100 From: Konstantin Khorenko Date: Wed, 28 Oct 2026 18:11:00 +0100 MIME-Version: 1.0 Message-Id: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v3-1-893494e8db76@virtuozzo.com> References: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v3-0-893494e8db76@virtuozzo.com> In-Reply-To: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v3-0-893494e8db76@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/ZANAwAKAVGWCkf5YVwqAcsmYgBq4iyn/T+gxSc3Zv1mKs2WcCEnkGJqZ+5+zaxJN kR9pMIEBu6JAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCauIspwAKCRBRlgpH+WFc KsjMEACF1XZ11ErBGbG744ZsAT6LzV8rtl0VPp/EDMEMazQUSh48DRHxwDYqy8FqTjsVOCN1Qgl cW+iMJKYDp9mbWEc2FT4uA1C/Yi3F02w/3MorGWp0WaO0gK2p943nTHPe3hVcMcDKfwzBMbq1qv t2l30/qEKBs7lmttAAA6INJEvnGLM85yGoKO0B4AQZUiKIZFcYXfixNZzuESRY7Vcc2qpZVQeFE H6fynY48n+UQzn67I/WhZnO6t4U9V6qSJTD5ucCkoRlBn6Fwnv3DZNMBGnLbMro8XDHub9PLgD/ STTmEHvSdDQj41Zr+SUfamjABLXoIuIt7Jd8kQNcy69WoV1BchWtr76IZCgS/IeHIyztVxSHoXx Jo9Q3tNuPgWzyYFgyrSfC2GPq+5p4Dh1IlNa7FrnYiJKM5tnFq0MGdJMGeJzppdIaUKf8eis178 VvQl+xPkB0ZKqHHGlQyHKikmJmOlkIAAGFaIown/rqvo4iOtH334DozYnzZmQGMvVlnV85XSk/h vLjZljE9WwD+yc3GbIwd35p510FYHmGiYw23ny0eJYFqOJVFrEFT43O/JebX04OTjyCP9i9Z4ZL hDa0jKYn3o1DdXtDwm54m8T0C/HbgEU/obfuixyhrOF9Hs91+Vb4d/wlnE6O1egsFPIQ9Sv3Rqx i2KoqTBRm2lkE3g== 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 v3 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