From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C8E13C6609 for ; Tue, 16 Jun 2026 03:13:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781579625; cv=none; b=lKRaNEbAVRB53bnfgsBVVDeRLWleCdknM99W/GLV8e/JasiFI7zi8rB+QI+53CgrAEfUfJQjz1cXblIBJdDO7c2fC1tw5ft1HRbQ5yx2jBTi0rtU0gdbvqiOwgx9nFdBA/trOT1EIk92JKUhOOoUC2R2OSl3zLqyqG7gdc1lx1U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781579625; c=relaxed/simple; bh=e0ujycxjNvJRsGvIQTQvgLtWHHw+lb5+UEwvvtQB2po=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DhSO+sJC61xNYET6Lt6FpdipFekbg9lM1dLwrk2bP2+8f6r1c0Q4YB0ZMSquPtxqjWurnwhD1/LCbR2DGRXAnTMwaRY0mfFuvfx8UNiFp+EXw6pEhl6tAP0razFe1ldt1BBTID0qqk5/dxk1BvnqB8HwyKa7z3iFzlNtG2vCsqw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HwHV+9Az; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HwHV+9Az" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2c0bb4a94b8so31688445ad.2 for ; Mon, 15 Jun 2026 20:13:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781579624; x=1782184424; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YPqw2XIMhMyn82jhf5fcsIJXemWf4yzevbAx5L3vlSY=; b=HwHV+9AzxnNUNZh3x1K7GWoO9sGriK02cd552oVcMY6kuLC/GxN6KFY+PTXcxITe+F saIXjZCd/JulbZFwYEjG/qiD9ZzOcdTX8aU10La/6vlPzGuGoZ3rr0VZKAZJM89I46b7 lwoRyhqwT+rtWQ612IOmW9AOf/NNY1CX4Va5015r19e5N6cqdgs1Xkix7Z1u48Y0yt0k Ox5C2cL2HlppEdJNDqohj8qF7tJ9JNpJd37/MDWVZVN9q4QAvVVk4spjZzSGegzf2Y04 xsJcygwGclgK0CrVBpoyhkGQKzGloVL4aOqdd+amKy46k12iR4R/xdQIu/UtXALE35D7 kdtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781579624; x=1782184424; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YPqw2XIMhMyn82jhf5fcsIJXemWf4yzevbAx5L3vlSY=; b=bf2N2YzJCyhiezovRu3hMU+By9ygsjQ0hHvJ+kjbf7Y/qJ7lBLkigvIbG3TbBrsHFw CeraIU6nQjlaYqil45YXJSi9i+kjp8YzdAryP5rhJM+D6+pQ7HfYQ27NjzfPKx/j44m3 VRdUOpn6hXrq5e/FDiUCHTXmYpLRVU+cwYVAX85tP/NDfmlEibaKQeWEbegEHnsvc33E LBv4eLmalPRs6J5CW3jn0FU1GpjSIWES4qiU+mUqujdoKmSkLYQivnLLwytMRVySmVMc hwtXgzEwkNtjkh8ZiN9W7zTfIeTU2jvGs8T72ookRtwZ7hm8l6J1j443xNd9V0+dRvrl N05g== X-Forwarded-Encrypted: i=1; AFNElJ+jZoPMCOrGJxBtNQiSOcr65QHH6uCdompUYwQh0oKVUpWD/gniprYGEJS/88S/mFZVifqLgJ/xV08FJjc=@vger.kernel.org X-Gm-Message-State: AOJu0YzdmAJzShPYTSA4iH/4yzpGDA1DMgZTpzJ4ZZ6u4wEPoCcvxyXw HDKE83y05eFbrwty/RtsU9EBAgvvCBWqAC8ZzS6bWKR0iP74TFBwYWYA X-Gm-Gg: Acq92OEY0fuixUIhE5GsiTj+AL9SXClqSJdlSuU/yqWmQfyJwEJxnRpyoft0TyJI7It nYXRqT//jDe4/ezRe60qGPbN5EfPtZYAlhbjToNBCriLsloiVIWWXXL7fS3ilfNa6frGX8ZbEe5 gAdX30wtteBTGSOX6czMevXAjH7iwKDC2qUToBCoai3Q0IDKUPU29w9Cf+KNwQU9DojaApgMG1x tqaLg6kAuHQ/NpRXOwxG7/fZINbzrMoLdFOZMycR2jP5FM00vxptj2VD6Sx2dhKigb6aEFpRYMG hIeRHrYzYNMyBmSNAxoQjn42au3K3WYIjp03DuhESgX5gdIuMzqC3BXKEQeJbSb3Sne127nQIR0 AkNOb9Bp9iREVkdXUT+qwLPK0SojnK5MnEoQQUPYmcMTBy9q088Dh5OF9ob+SJ+2pUQVM99yOeL /a80ZWZRWHTKDhBApx4mnrS+5uRQKJLrMr6CWfyWY= X-Received: by 2002:a17:902:f64f:b0:2c2:2a8a:af69 with SMTP id d9443c01a7336-2c4110b4879mr179489185ad.9.1781579623869; Mon, 15 Jun 2026 20:13:43 -0700 (PDT) Received: from ubuntu22.mioffice.cn ([43.224.245.232]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c42f2e5644sm118923385ad.4.2026.06.15.20.13.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jun 2026 20:13:43 -0700 (PDT) From: Wenchao Hao To: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Minchan Kim , Sergey Senozhatsky Cc: Nhat Pham , Joshua Hahn , Barry Song , Wenchao Hao Subject: [PATCH v5 4/4] mm/zsmalloc: document free_zspage helper variants Date: Tue, 16 Jun 2026 11:13:09 +0800 Message-Id: <20260616031309.3036234-5-haowenchao22@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260616031309.3036234-1-haowenchao22@gmail.com> References: <20260616031309.3036234-1-haowenchao22@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Wenchao Hao After splitting __free_zspage() into a lockless core and a wrapper that does the class-stat bookkeeping, three similarly-named helpers coexist: free_zspage / __free_zspage / __free_zspage_lockless. Add a comment block above them describing what each does and where it is used, so the names are not easy to confuse. No functional change. Suggested-by: Nhat Pham Reviewed-by: Nhat Pham Signed-off-by: Wenchao Hao --- mm/zsmalloc.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 8a0c0c68121d..23fd01398d41 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -884,6 +884,22 @@ static int trylock_zspage(struct zspage *zspage) return 0; } +/* + * Three free helpers, kept apart here: + * + * __free_zspage_lockless(): bare core; walks zpdescs and returns pages + * to the buddy allocator. Caller owns all zpdesc locks and has + * removed the zspage from its class list. Used by zs_free() outside + * class->lock so the buddy-side work does not stall the class. + * + * __free_zspage(): __free_zspage_lockless() + per-class accounting, + * under class->lock. Used by async_free_zspage(), the worker for + * zspages whose trylock_zspage() failed. + * + * free_zspage(): full wrapper - trylock zpdescs, remove from class + * list, call __free_zspage(); kicks deferred free on contention. + * Used by compaction. + */ static inline void __free_zspage_lockless(struct zspage *zspage) { struct zpdesc *zpdesc, *next; -- 2.34.1