From patchwork Tue Feb 20 11:36:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengming Zhou X-Patchwork-Id: 13563898 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 3CD51C54787 for ; Tue, 20 Feb 2024 11:37:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BFF426B007E; Tue, 20 Feb 2024 06:37:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BB0B16B0081; Tue, 20 Feb 2024 06:37:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A01CB6B0082; Tue, 20 Feb 2024 06:37:31 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 8B65D6B007E for ; Tue, 20 Feb 2024 06:37:31 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 3589F140671 for ; Tue, 20 Feb 2024 11:37:31 +0000 (UTC) X-FDA: 81811981902.30.35C81F3 Received: from out-177.mta0.migadu.com (out-177.mta0.migadu.com [91.218.175.177]) by imf26.hostedemail.com (Postfix) with ESMTP id 49A5114000E for ; Tue, 20 Feb 2024 11:37:29 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=hx+4yBZK; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf26.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.177 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708429049; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kzQqWreho0C7h7BUSKhkqs4L21k4ROBRD+6NpEqJHvk=; b=nOXRN6lb553+ScOPHt66RwgQU5hINnEpZl6IDBjZZRYv3IBylcLf1yBWlTq41hzwM7Ad2c 6xKeTaGULv2DGIfqGR/q/3zsH/EZNkXAqdSzYt+15Mm5b+jyGV5Zioi5MPXJ5lV37sJZ2W GGfEMZRBB5uFSdKdGD5y+km6ql1mrO8= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=hx+4yBZK; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf26.hostedemail.com: domain of chengming.zhou@linux.dev designates 91.218.175.177 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708429049; a=rsa-sha256; cv=none; b=7B7wN+VLudGdqRZoyBG+ic5EwL+s81gsScVx/k/FRkZQvAFdSLdYsR6DH3nvkT+kbdr/L9 BYfAj0pBqomvdMSj37F7NIIQkE+6t/YY+qezNHgR4StGhQ6axG0otF92ag+XaN73wBDOY4 PQb9AHgG7zhRfqxEERaIicUtEcFGuNs= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1708429047; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kzQqWreho0C7h7BUSKhkqs4L21k4ROBRD+6NpEqJHvk=; b=hx+4yBZK6F1f+K+KobCMKspcH9mU4c02Ya7/2WJ8h1KS2L4WAHusTpcx6exILhAFInTUL7 SjK2RjNlhSZnKKiORgS17ixwOUfDdrDWC12dFCue+HGWSq6lKKLAGf7WKDev6RYIaevBYL y+iI/Zos7kTYfT5NxuryApctqyk8JNc= From: Chengming Zhou Date: Tue, 20 Feb 2024 11:36:58 +0000 Subject: [PATCH RESEND 1/3] mm/zsmalloc: fix migrate_write_lock() when !CONFIG_COMPACTION MIME-Version: 1.0 Message-Id: <20240219-b4-szmalloc-migrate-v1-1-fc21039bed7b@linux.dev> References: <20240219-b4-szmalloc-migrate-v1-0-fc21039bed7b@linux.dev> In-Reply-To: <20240219-b4-szmalloc-migrate-v1-0-fc21039bed7b@linux.dev> To: hannes@cmpxchg.org, Sergey Senozhatsky , Minchan Kim , Andrew Morton , nphamcs@gmail.com, yosryahmed@google.com Cc: linux-mm@kvack.org, Chengming Zhou , linux-kernel@vger.kernel.org X-Developer-Signature: v=1; a=ed25519-sha256; t=1708429041; l=2263; i=chengming.zhou@linux.dev; s=20240220; h=from:subject:message-id; bh=UHSVodPnpBiivncRsTV1Arftl0WePz5UFf9WpjK+7+4=; b=163nW1R+RMQ+orBAqT5aCtZHUFeStvc1n+OYnymxXb76UYU7LE63Rfti+6qmooU5Daaopmvrh ZVuF8XTU4yRCV6oUXqz5lv+X9XhHDAJCUFRaebMIpUHJhvKi7iKCv4M X-Developer-Key: i=chengming.zhou@linux.dev; a=ed25519; pk=5+68Wfci+T30FoQos5RH+hfToF6SlC+S9LMPSPBFWuw= X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Stat-Signature: 77j7ct9iqkgdbsx3x3iaxbx7hki8n7wu X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 49A5114000E X-HE-Tag: 1708429049-412080 X-HE-Meta: U2FsdGVkX18xrO9B0IRXobiKs7SEu+orsi8ebPZtxlnJ1dvsG2JhUSTl7hsAF7V3jlGRo9IrZyD8hHSf1CF71jnCXJ3YtbGwGjnt469UzpGy0F/CysB51VXnre5KHfZBKfB/Pmbqu+ONpNmzo2UxMaar49raaVggR5jpP+HdTEzl1Ddm44Hzkuowc6G7RSawZXJgdi+VI7RFLhrSylDnmrYp/W9XpnBZ1h8KH6SQnL0d1C8plhgmrKT8obmXnn8U1gBmlJPGzHMdbaqxS8nM1b/vsvVllOiIPpjYNXiuMVFst2x5O5CCDR/wx+hwR696eR0NKJUprM421cfjywHNnqXXtd+00Mqc6pMXWapdT4zPTUmNmSD0RJ4muj8ccoRqqCqMvc4jB+GJoFhU5oQ6uwHBx2/G5r+lA46jpPTHMr4sMMBUe1JUtR6wnNIPqdDgGJIopcmOSuMMjdt++mBSvUcgV1NVSXlUGa6+eBNr+Bg9VDXzAsZaP3uGqf7ekkwsp4VgfeHwS02fcLFBj3M3tx6g11diEM04fmRrVqUCXWSonCfPIPX5YOOz+PwTUQLnn61d38Rqz6J3dZQfxuopPQASN0VTrL6Q64VumuiEdXhR9uWI4gjjDsOLYhWMpDydILuyZK4/IgUxzlscTyh3GlX6+H+7HhNKxABb+kFwPeuGrS0Ao2MUbTWIkcBCyI8nAp5jedPsK7W885blkw8gs90YllE3h127L6jjBpZdXvu/VcQAS3x3cWBzi93dRxNlAHc9OrlWTma1rZAolcCSQWu6aIG3tZjCmGMWRK3ANe2yHYq2bheCPhwzKfFR3daQAn2PM3Q1Dc4e+av3b3k0mP22BGZ7jQthwqqLZu+beVrvwExuIyMIfMQwdaERvlfLPTp2xEiZaBWD1m6xa4upml2nGEX107UqNN5eMTOlBiZ7dsnhcMPKlJITk4RXZvsn2TNNEB08+ks7BjasdVP /BKHEN93 4ZHhm/VbHvwzCN7gQ9vu8POFnyMOOXXfm3/STUJKF3Y+geLqhMd4e/6hjwuvY7jVUTuQMBJK3fbuKhHtK8OdUdD6T8Gy0x3QHSEjTHdeEO0Ewr5eFrqLGgNcOV511ALVaktpCTsxdFsW0kNo1mRgnVq/RehccZm9YnebDNRAZK7Qy0IpJF6tL0bEB+H6916RP6+2xJh9RmCdX97njgqLpQIvliRhkDs46b6sgUAS0VuTI3tA= 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: From: Chengming Zhou migrate_write_lock() is a empty function when !CONFIG_COMPACTION, in which case zs_compact() can be triggered from shrinker reclaim context. (Maybe it's better to rename it to zs_shrink()?) And zspage map object users rely on this migrate_read_lock() so object won't be migrated elsewhere. Fix it by always implementing the migrate_write_lock() related functions. Signed-off-by: Chengming Zhou Reviewed-by: Sergey Senozhatsky --- mm/zsmalloc.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index c937635e0ad1..64d5533fa5d8 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -278,18 +278,15 @@ static bool ZsHugePage(struct zspage *zspage) static void migrate_lock_init(struct zspage *zspage); static void migrate_read_lock(struct zspage *zspage); static void migrate_read_unlock(struct zspage *zspage); - -#ifdef CONFIG_COMPACTION static void migrate_write_lock(struct zspage *zspage); static void migrate_write_lock_nested(struct zspage *zspage); static void migrate_write_unlock(struct zspage *zspage); + +#ifdef CONFIG_COMPACTION static void kick_deferred_free(struct zs_pool *pool); static void init_deferred_free(struct zs_pool *pool); static void SetZsPageMovable(struct zs_pool *pool, struct zspage *zspage); #else -static void migrate_write_lock(struct zspage *zspage) {} -static void migrate_write_lock_nested(struct zspage *zspage) {} -static void migrate_write_unlock(struct zspage *zspage) {} static void kick_deferred_free(struct zs_pool *pool) {} static void init_deferred_free(struct zs_pool *pool) {} static void SetZsPageMovable(struct zs_pool *pool, struct zspage *zspage) {} @@ -1725,7 +1722,6 @@ static void migrate_read_unlock(struct zspage *zspage) __releases(&zspage->lock) read_unlock(&zspage->lock); } -#ifdef CONFIG_COMPACTION static void migrate_write_lock(struct zspage *zspage) { write_lock(&zspage->lock); @@ -1741,6 +1737,7 @@ static void migrate_write_unlock(struct zspage *zspage) write_unlock(&zspage->lock); } +#ifdef CONFIG_COMPACTION /* Number of isolated subpage for *page migration* in this zspage */ static void inc_zspage_isolation(struct zspage *zspage) {