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 B6A2E80E93 for ; Wed, 28 Oct 2026 12:23: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 69SCMVwP019888; Wed, 28 Oct 2026 15:22:32 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SCMVwP019888 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Ih6ChiEb" 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 69SCMMSI019871 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 28 Oct 2026 15:22:22 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69SCMMSI019871 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-48c46582442so577745f8f.0 for ; Wed, 28 Oct 2026 05:22:22 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBxa0Iivlfvs2motRojWsrOhgSVVSZX14Ve/Uockkobgz5oQOVJxOw2VfzBLTKCGRFEHPSkxpA==@openvz.org X-Gm-Message-State: AFq9FYLoO6AzMgkboCFSKWxXe/qWfj26C4aLMEaq4dLrxFRN4ZVsioJS bB1VFa9GX0wArdcjil5vCAXiESmXftEGXChhCfeLcaXvA69vgmb6ma7OD7pNazQS1UvVZvwkqwB FxqwSbnJ0qwur/qE7mNymSL279PFYxpuH9X+fVtNLnVsZXzh8MkwHSQ== X-Gm-Gg: AYBFou3yty0FnVwEKI0aVufjZ+pN7Osi8Fxa79Rdt/2yjiCfXEIuba1j30wZVqM8MCU 0gxG315M/I8floA2NiGXmazEbIDw1Yec4buBICFveGunqkJL7mVnsVA3WWXx7EkwSvSR0G8OYNF rS9mk9XBHfgQy25qBTn1y0I6cG4grs6LtYncHVNi+oQvMo+/WVA5Qaq+H15hX22T1KeQXHShjMM mW0E2Z2CmwrC+QHV2ew59dbwXsDT0PCZzHkneGc1wj0tXnmabeQPY6y492Yp0ODPI5djcTlm3Fy 5Lmr+nDQbAUw8ZX3tUasSe4MP6UDQ8b+TyKpfiQPNgZwS1kFjkiPVCDv+V7Z2bSYtZwRqlS+77W 08k69r0m3ZWzpeuWz/Q== X-Received: by 2002:a05:6000:4308:b0:48e:6f:a9c1 with SMTP id ffacd0b85a97d-48e5d5d2236mr5725703f8f.54.1793190141689; Wed, 28 Oct 2026 05:22:21 -0700 (PDT) X-Received: by 2002:a05:6000:4308:b0:48e:6f:a9c1 with SMTP id ffacd0b85a97d-48e5d5d2236mr5725639f8f.54.1793190141009; Wed, 28 Oct 2026 05:22:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1793190141; cv=none; d=google.com; s=arc-20260327; b=dBROJ6Z+KVAcBg+3onttOuZbjDjW3V0DdX0CUc87A4lQ8a6G5VmXV4YM0DRdRPAPBQ 23h8edFCfUs8buGTUZT8WaVjDQj/UcFBPT/uR8MvqahJazZxNvLTCB97AP5J37WqHLuu SQt1AhDLcAbou8EssnlKY87gTGI7uK8IbyK3edDH0NuruHBWm0soueRYjvBvqKUOomvn nznabIexCrHpIBUvZcTp/fijbeAowNSynNjpOVsj+3Hh1dlygARzizLc+rd5z6reYjvt qUTiEo8P8Ss97dejWHTd5G6nJIQgXBeOMyJdbKHpAqny4QJ0gYvz5Clv42jjntC49rwn BLBw== 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=7BTV6htfGq6359LrVfkF2gb/tUBGN6o0VFQr10kfT6E=; fh=XcqC0Cib/C4XsQyLUc3b6E9Ii37Wk0LS3yBNHj5szHI=; b=VkK86LvHwUPUX5jS4kkz/LHd/c1HfCUk0+HMYNf5caqWJcLCZpdog6Ts3+Qp0qXbo0 19VFu6hX9Zc/k/P/Q8dWuzziDZtHbWCR7uJ/ObcMIb+Om+zSSUN7w6rIQqxOsXi5t+xu DDDUzG0XQVA7oux7fhK7Y06oTduqflqf4Hg84O4nfjpFLzHgo8um0Jo64MavylSKR+Yi odI6Qi4NdgTE9w0PoCz8yyzY4U5zOh54FJfQLuElrGKzmNrmpFYmgzjnqghnXEK56K3H dHTR8xFYhakXGNUadXnPsrNqZcdCrklSIviWxw5DGdWjR9JPsFSCPVCEWfS9N0GnPVi6 P+Uw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=Ih6ChiEb; 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-48e3ed108f2si27127677f8f.344.2026.10.28.05.22.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2026 05:22:20 -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=Ih6ChiEb; 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=7BTV6htfGq6359LrVfkF2gb/tUBGN6o0VFQr10kfT6E=; b=Ih6ChiEb4t1Q2stZLSn vb7x2ZFmhQ3wkoFxnr1/16gJ8c78LGJb/aPf38ovca+sfSqqdDo9ngM0xPRZzRPficuQzlntD6jpw IuHOkBYnhLFRGuZoV4P1enGpXFxPo6/nt8/Xn+DvlrrM+7E/zcBSrbLsfFwGlEJeh84zm97485jEq VLN9kbQ1XfJktG670qxQcbh3QB+OUCxz7NUqlJVSI4dP3ToTZECET+l4oqe0uzZh726rIkKN8oXGP a62ga48lR+rA6KR1qCZp2GJdOD+5842xjZfG041E/zfV0cH2MTh3OyFm8Paeg3yScdBHjLMKs2ttq M8O7QlKlIwGar1w==; 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 1xM2bq-007ETm-1V; Wed, 28 Oct 2026 13:22:20 +0100 From: Konstantin Khorenko Date: Wed, 28 Oct 2026 13:22:17 +0100 MIME-Version: 1.0 Message-Id: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v1-1-268336526677@virtuozzo.com> References: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v1-0-268336526677@virtuozzo.com> In-Reply-To: <20261028-b4-prep-khorenko-vstor-151607-numa-migrate-order-v1-0-268336526677@virtuozzo.com> To: Pavel Tikhomirov X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3180; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=3PoAifaVOyDzqDNEXtzoNkpORTadNruOlA2GTLU/GbU=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBq4ej7ubcr753g2+r5zNrJR4aWlCbL7ZXts1uD0 ExgtRLVrNSJAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCauHo+wAKCRBRlgpH+WFc Ks91D/4k3r+6RFfJt1wBxqT4MdDoIVuNNoTVyxVGBLpTBJ1EdGbFawVOs+/RKNcnk8Pt4ESpArZ 6UOnPmNlUYSspnJYliBDLbyb9M7uGFBWdzr2IOXlIgOD5Ud/Jtj+dhiDEhDXigxcwyPgBRu/Zlg 3XAxtMNoZqDmbrL0DOaSvEGz2SAr+ajWs1O1v9JFuUhiu0yer5N0vlZEjk6yvy3oeKFdaka2Em3 KpxHg8582CCNFKCq1VxqGjTuZpJr7ZU73x2HKhnto4lRKKu4Fc3i75dnNMAixEdKuyRXUOvygK4 UZGY92tp8obFePiKnhC96aBFgIUbyrGwSaCqmgaQarIV4HlkqNmxXYccpPu8AUHU0cYOrTc0VoA A2NJYbTXzRAdPoUhwWL/aDaJZPRipD6qnMLL0jsChSkPvMj2n8HplU9e9xLSWuZQeOgRGaMx9xZ Iczu1WOwdcIv2sI+heVGt6z9drJ+N/ZtRIT5779XTU12/vCzexCV8Qe56KuwrFQm/nKEXwr/nEu /9oJ176br4XRCHtuLWn7+25S6RtGB2sksf+EHNOEbzXoN+vhOI0nFobCjwkqDUJpxe1JjyxHhJt s4Kuupcd746aTGOBVZgeBv6FW+vuT1ZhQ1fKLFvf5PEhh1OaPYZxh6ibXdT0k7ymwCNQxBo7TeM HlEvKzKax8DWL+g== 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 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. 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 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