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 982B680474 for ; Wed, 28 Oct 2026 14:19:23 +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 69SEIAv1020643; Wed, 28 Oct 2026 17:18:11 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SEIAv1020643 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="dRRrjmUI" Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69SEI3Js020621 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 28 Oct 2026 17:18:03 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SEI3Js020621 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-c4069f03949so205271666b.0 for ; Wed, 28 Oct 2026 07:18:03 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvByz0SFbHb875167qo2tGarTkMrLr3Onyo+P3zj+CRNOttTrNu0U+dc1zdeLIRgPXySsqIIOyg==@openvz.org X-Gm-Message-State: AFq9FYLMwrsl4ddEnvXnoif3exhc6LKyXGqXN+6gv6ewrmyU5XjwMbdz 8gOSV9nwrjC2TwWjZS42eEuMfJeEW/ka1QljEG6ZgO0dkkswQdMGesk1Px2O8Wv0m9RexOTTHxv lm7yY9STvtq1TkovWjOLSSoVQg/yw6p59Z2HF0cOZ5aZuphqI6OyiMw== X-Gm-Gg: AYBFou34FG8t/x2YKvw/u+7yD7kdEk9EoMp5aVwwSoTa1a2r8iZF1ZgZ2lIelvksxgz GnS/5iuVKfA3cuiWYfr90Utdqz807I/Ivx1OC3Hn/hK/5SQwqpF758a2C30PyEbOEt0iVbjyxWT YIlSrDLZNSG4d2+5zzn5aOF+ssrkQIqWc3JRCGYJtBVAG6HJ19GGEeJfUdgLoirzMGFn6hvc4xj 3MUcd9JecV3Ipf7nqfA8H1POJtQ9DWzz3/12668X7B55JPSTWA6lyg/L/Kb8xRblIB5yfbVLwoN NAguxi574ni6EVcQ5D2SsHlwiLPTr7KMMeT0d1cM39GQ7ZiorvuxyKrhdR0rInxD/w+5CLfwmlf EpHsS4xA4BLg+ww05Eg== X-Received: by 2002:a17:907:9303:b0:c46:7de7:e41d with SMTP id a640c23a62f3a-c49a7417cabmr565279266b.18.1793197083534; Wed, 28 Oct 2026 07:18:03 -0700 (PDT) X-Received: by 2002:a17:907:9303:b0:c46:7de7:e41d with SMTP id a640c23a62f3a-c49a7417cabmr565273966b.18.1793197082717; Wed, 28 Oct 2026 07:18:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1793197082; cv=none; d=google.com; s=arc-20260327; b=Eap3jaAiqikNzPAFxHwYgvQMJFEbiAEzv/uyLUew7bAxryUU6/BkTD5dczP7Ih/7zC LXpgz0V2A+jq5PCcj9zDlmNLJwmMgnN4KxhkOj3AawNYn4YdqizgcIbnjniWnopfTa87 4isDCcAIo0o3RhM1zfxLv8gMiEuueSJD/RmhyS8y2TBRnRUozjsKpmmigS/E32XOZ01+ 5F/wqQpBAFghUNjdqlvbyVkLCK+lObaTTZR6HUECToFg4zbYGna9v91NhXSBMfnUHC1l KgsRxfxcqC+YAIcRABNaEcjyC96ANchzPDOrzHUTlDH98G6n7PBIww+PJwkAKb/VxbYr r7gw== 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=DGcVXW4Zk6rnrZwhzPXIILjC98eu+/8uwoMQ4B9gLPZ9pZ+6S5gMz+coyDGpV9vptE VNg5UApVuY3duzheFJtF2XGh+9gcJWArR9yVR8xrPizKoEfAA2fQ1+PI9iF4pXmWE6yv SFZrqSs2powNBzj6FlHYe6l/MWnl30VWi+nvE9LFcedUPwrevdk06p76NibZVbjYEiLm rfXLW6BX9jmdQTybCDrqx86R6MennIQi/aS0FfsVtf3vU2NXkh2M8CRjrjwkksYVD0nf eeMkYMBaDnZ2fKThNuxqQ/lOvh7spP9NlDvAln4uUp+3h7CE2XfNWTSNo6XodCJaYQWo TqNA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=dRRrjmUI; 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-48e431d38ccsi24224888f8f.100.2026.10.28.07.18.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2026 07:18:02 -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=dRRrjmUI; 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=dRRrjmUIZn7I2hvoaOq VL5t23DRrEFtcUHyqy+S1yHsy4+J5xDEDMqrX815vD+Fjjd9yde2ybfzio/2gYCBABF6JFCSi/7p4 aXhR4po0hRaHHWiGJL2lMpOBW9gFASjaoxNoPXChPBv6i9YoKK7GO4oOAVASsi8pP2LHpZdPjaP9u NeoWi9j0MfYrt0uI8vYPWgW1XRF8QO3Tav0bKjFxLuNQnooXcgWXj400YPTLFkRVJP0/DsDlox2Cr TFry4ocvO/ndZkoShtTPmYo9gu2OGebdL0rjUH7/90dkA2wMvNNPQ0mofT5GwgwPw+e94J5bxV1bN KtVb5vYQAu9mYfw==; 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 1xM4Pn-009nYa-2o; Wed, 28 Oct 2026 15:18:01 +0100 From: Konstantin Khorenko Date: Wed, 28 Oct 2026 15:17:58 +0100 MIME-Version: 1.0 Message-Id: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v2-1-b973a82a5b0c@virtuozzo.com> References: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v2-0-b973a82a5b0c@virtuozzo.com> In-Reply-To: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v2-0-b973a82a5b0c@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/ZANAwAKAVGWCkf5YVwqAcsmYgBq4gQYgBbibfrYJ/3QGGTjt7lJ4cRcMV9vBSVxc Q/q2b6Wd4KJAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCauIEGAAKCRBRlgpH+WFc KhsTD/47zz/1GS20EtEDVo5QJwki1CvUqx/1xYAAGDIWj8L1tKwcqiQ6g6OPy5jpSWI5fzq2MnR 6S3i8FC60nkbn+4nbdw/DwbV89RV+4KCwf+RpjJJJ4m26EXnonQvpITd4fRp+D7xa6JEqutU98r 5hizxAkgD2aeTkNlJYT+uPaunxcVyukTn0qR7fifk5SQAmNgLkULFrJOXVI0co7Bup+5dCQYUbb TSUD4EMMeYdAYvnvIihNylkn4AUTsRnmBfvfxdj1DyYW5SnFCqM+oNIaMmmeDC+EjHXOhMLAQiP yj3cUSfnYrAQJi8wQCHxoDdEZ7z3xHt6gHgvocE5VwlL5Ir4BaLpUlA1Vwshjb5dGYjxXE1uwhL KkZAwegq/+wEN8/eq4SnNhG0xmYL+tbzu3O9deZUM3uVEX9txF4tROPa7OCn0xJNCNBke8+KC5I t4iuudRZj9kQ8sQNEmdEzbxQIiG+GwHKzVgK3ri/AMM9GVLY2tdJTJYprUlHOXYw16X0I4k9VDK FbVgsLUVcd0m0cplvqzdkzb1NxqFtQq9z83f0ll7AY81rpUEEWcA+r0p16EGd3VwsNKfxpteu5k lYIerGBRXZBtHcH0+pOC9ZwMFecSf/3DRs91VlOtWdy1FrH0mW5N+tmhi41jOWmOa9iPN6bnfji 8YKAxNek5PwOgZA== 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 v2 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