From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 5EA042E739A for ; Fri, 26 Jun 2026 01:55:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782438902; cv=none; b=EQLqfNUvfVIDspdwOy4dvaPztNKDVFTR7tMjFBFFZnD8eNISjkEE1b1mfcJK1IH9+syRFub/tZsq0Dry2zqISfxhptxLLTfbagafue86MkcQwKa4r1LaMygiB3nlIshmq3fi6qqFM+PXPKK5ZBbXeYR9K/X0W67olmdEldmSNEk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782438902; c=relaxed/simple; bh=/hJvpiUCCX958pdIlIoe0zBEsuTZjhVPoXDhUh2tcl0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=f9q92hik0j8PLruszMRPpqA0UaHe4ETJbbxFJmHa3phqkgP//giUX98xhVmw0WrZ+oiKuW8nDaDCJNdHNOFp+ePuXDELZsH4Ug0N00ywk1nud9rMfZZAEbaQ1mryGuQaLdq7XAvN+Jan18uRaSfMOpLTfPitHZaw0rUUGWH4fzE= 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=mbOLGZul; arc=none smtp.client-ip=209.85.214.175 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="mbOLGZul" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2c7ee3952ebso6323165ad.0 for ; Thu, 25 Jun 2026 18:55:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782438900; x=1783043700; 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=bWEXl9NbMqdp+ftym+wH6sIIxuIUc2F8kWOiv8tYd1k=; b=mbOLGZul3/buXCkxeCGu6VrK/t3RSjmwm8Ki1nYgyoX1NDdsKpsgffrjIgnivxTspX H3ftG495YWGLVa9Y3J14xVMlTfQ1L3+v20x8n5V0xwXqBkTGgTxlqS25rw4LeDOXCvYE S4bU0o0eSm3orUw6QqR3aAGYWaPdmpMqJQk/Tgy3BPo5i3DZKqOV2ECBgC/2tZNG+b9O eL7n48aVzSB/fWYDZBQ9utsdkiEDpciaWhpSy0j008yQD4Id9m6/LROjl1Rf8zYSZPwD oSXErWcIu39pUhJrJ9hBc9cVNu6PE07EyEJeMzZdFCAUQ3sGC/9sEhH4l1IKRueO4sjI q0jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782438900; x=1783043700; 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=bWEXl9NbMqdp+ftym+wH6sIIxuIUc2F8kWOiv8tYd1k=; b=Be2+3F51vKy/K0L6FtEN7tXZ7INDgNuRnGSTd8OhUaUwhMYw/E03zDtamU89WwUKjo glevYTJ86GTp0Aiw8fhIul8ZJLD/tBk22MnHOexRqVb045foj/lLwJKsbqMVSR7EdvgW Cbn7p3wmIigWKQqTQxud0hauVNv0iIaau4wTKBonmT5IR4RkQFCfsGs/K581qTNqX0+d MldpilLSOUMMtSfHYKY+Lex6xmvMtlXOyH/LFsp06HIGGSu5Wfm6PkzU6gcGwmUor0cq UrmD+ESboR4MPJ/W8G4pFja5fxJbBvh/Bza1FazeXIUMmUkfjuNVAORJ80EdVwUo07Nm MPug== X-Forwarded-Encrypted: i=1; AHgh+Rp2siakc2A39W287BbkFNY7YbrUZsSQ5JSLMRwJqTNXQLsypbBhF/7HFfU1IIAvf/Z9keHgbBl3HiEa6Uw=@vger.kernel.org X-Gm-Message-State: AOJu0Yxcw5/xlwGN/n000ivNdInyDpRcSpU8t3P3nW0E4Fo9qInH8XRy IUzosnyFzdIKmgSsjmITwAU1uoKaEkHi1yExOKPmoF5+G4t0A0KSzqqi X-Gm-Gg: AfdE7cklVz53dfVw3NxEqkZZzniP4+37Rk5K4RPyFR6BEf+pwjt5lXtdKUMuUf0mvPW J4/KKcA8SuVg0KnEfptM++U3DPRXiVca1NeqjKD1xW+76gXC/99rvlMJD5euEOvED8ehZBanPhR zytBWOV3GyE0qupo6cnR/dNo6zX4Iol/1RmAI7qm2nlOFFHD95s5X7GHS5VpOb5xlU0cMDzSX6g N30KJQHWPcA5JIGsZvHIfhZiDfAijhtVm7DQi/uUffZP+PeIKxAMhfRZCdo8nsBQVdRMrzlMrkx FxUluP4MleGyxxvuZW1dOk1ncslTbHhB+DfooGXuA9I9Z9DP0Yy0ptOfqJH/cFvysg/fDV3d3ia IPMzfOZVhdfrWQwoxZBj7VFklZhwv1Q1AXfKJ0XM0f+USK6m4inaot3E1jiKr6V5UGcmmRmva1t NwtWL784OrhYxKx3i4mJ44N8fbvhCF X-Received: by 2002:a17:903:384f:b0:2c1:e426:70f4 with SMTP id d9443c01a7336-2c7fc76f62emr47054585ad.23.1782438900610; Thu, 25 Jun 2026 18:55:00 -0700 (PDT) Received: from ubuntu22.mioffice.cn ([43.224.245.232]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c7f63b2bd7sm29047005ad.48.2026.06.25.18.54.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 18:55:00 -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 v6 4/4] mm/zsmalloc: document free_zspage helper variants Date: Fri, 26 Jun 2026 09:50:03 +0800 Message-Id: <20260626015003.2965881-5-haowenchao22@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260626015003.2965881-1-haowenchao22@gmail.com> References: <20260626015003.2965881-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 Reviewed-by: Barry Song 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 f3045345e3a8..bf74e695d977 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