From mboxrd@z Thu Jan 1 00:00:00 1970 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 D7692C83F03 for ; Sun, 6 Jul 2025 20:00:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4A2D66B03F7; Sun, 6 Jul 2025 16:00:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4537C6B03F8; Sun, 6 Jul 2025 16:00:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3904A6B03F9; Sun, 6 Jul 2025 16:00:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 2366E6B03F7 for ; Sun, 6 Jul 2025 16:00:28 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id BBA878023E for ; Sun, 6 Jul 2025 20:00:27 +0000 (UTC) X-FDA: 83634906894.28.719CE84 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf07.hostedemail.com (Postfix) with ESMTP id 335B340007 for ; Sun, 6 Jul 2025 20:00:26 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=B3fkJAcW; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751832026; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=vpTxTUv8rAEKv6/aBWhJiS2LqtB58B0InEqmnaDcR3E=; b=kf+4wCN15JGQ0TowtqL699HHfijyKzh35SfkXpPstIOsdq7WYhf0AXrIQ0oeaqTW+n5/EU Rz3ZQaesVV6awQ444FFVeGqA7Er5V28/rlUMbda2k4XIJrll2LFPnBLdclyPqnDyMb3aQP qc3KcKoZy5IKbmZRUolVKphtDEUzPw8= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=B3fkJAcW; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751832026; a=rsa-sha256; cv=none; b=iIN8Nq3hE4qTuJ19fEYB6Q4Sb9fcT6gCNIcBQ5E22PX9mmHhEy10vpiIsFy+bbyB7DuRnZ vv76jpcSyTgm+9rCUEn7d/17qLa1j/M0e1CTvISTP8QVSkS9zIvUs2ltzGS0JiFZdHTCws lrOi1b0yXrcSDSA2S7gfaMSOSwVaEZU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 4A01D5C57DF; Sun, 6 Jul 2025 20:00:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CB3AFC4CEED; Sun, 6 Jul 2025 20:00:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751832025; bh=D76AwiLfuundtcXthXhrN0gK/Q44fZ5ROfLZOcnikpk=; h=From:To:Cc:Subject:Date:From; b=B3fkJAcWkAVsVT/cO8S7VKV4oz9u9CNBPr6l9Ocmq1NKcIc2+LUhceep2Qz1pQvK7 8+KwxuDOuKHXlZEm4nFsaP0gphshiBSGZ7FiRCcYgAUoyXxhN9dBv3F5mxbdo3AMzj shNEDWdKbb1D3jZ9jfe7Xvp/w53Cahgwvd4m/+UIzdHMhIgBRbIKk22gddKpzucxj4 /0fbsLvsAOZ67+FC2q1rL8IHh6EvMy0nkfYs6uWILSGIJ/nCBecUABgW618f/sz2Go TWEDAiWZ8dycT2oDUolZN5ASww6NIzEiqIlCFPeKnxdk7yGI81ewqnYQNkzK7TiTbl AFumKBZCrTc7Q== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 00/14] mm/damon: remove damon_callback Date: Sun, 6 Jul 2025 13:00:04 -0700 Message-Id: <20250706200018.42704-1-sj@kernel.org> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: imn5hc51ix9cxjhzpozzxb33s7ftogtm X-Rspamd-Queue-Id: 335B340007 X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1751832026-336723 X-HE-Meta: U2FsdGVkX19GuTnH5Tw2krZXUjNmbDOTcZhbs5AqS1J79IhzXeWg2WBi9q7OVBJ8oTPal5WYHpuNbZgQikQcFZOdofHhQkANUMuxhKXKFeOD1Ky7uir58qqYbVzj5JPKSkz4nixkL7ru3YISdbqd4DPbOoBcQ4jsSn7H1AqletOlPZfRmRiRQGi7c2EGYPRD7aR0Xw4OPtg4B8t0NZFnHHgfX35KJQl8DuBicLK0bqhkutRL9By0Dd7Z9SyJBwRFXntinA4ZD1anosqoUne5ptltS/1g4ZTTLpA9g5rbye2RnLSolg1pjnAsZYbxrhA2ucHxinfy/pnKd9VQJUo+y4re1FcJQ+jhT/GwsWEEUUUR9ZQ6OA7Rw1kAY6H8D9lE49pAAwJh0+byRg6V+yANmrBkFaGi+Zw3qxgKZr2LjRh3YNB6QSCID1wrhmqnNcgS95dL7Wsze7QuTebfWgZGDXi9glfgtA8X0JjgjzRJh3m+7wM5nR1qpvafHzksXjZsyRV74QbCyMW5MPPCgU/NcsU81/gj51bQck1a4LMuD2o/Z8q7ZWceypWyP1ktrB2lwXJl+x3zzOugYS7THkkTpxjK3UYM6RZmvBwVX1lNECHPnEh4lXGreYtzvp+n2DdNuyWZYjDufG5By6m0dqnEzWDQjnJhJ14pwe2vKMSEtvHqgMQob6gaaT6nIBBlo2frqWhyTRMlWfOwRwphdK5C7f8U56SpX77gXG6za+Vt64B4RUNGS68uAR5O3T8FlsSVplZLLY3U9HCm72uTvwfBLjadPfptqOQOFzskHud7ovXjy9Mfa9d16MuLoRZ6f/9So1rvCbhZa7oN/vFTNE2iJoOW+9qIbHAtkBirbRm91kVihhY53svM5qvav6YgWsqkfU9al5DzjKcraT/mNTdCPRKKRKzwJ73iugVoZNC3SVmdWXM+fBtgCNwHwHhbO9bUUaJdWilHVtOp2gR9yYN 8shPn/UD fHs/BPdBJEwBNPsjqZc+OUNxvU9kEZ8fatGvk404gHy8J18jV08ByN7ZVChH+Uv01ECQdtFj3ziNn3XoRN09Eu1ZpnEz0EaCnR10LBESCDGsRdT2mtYNY8OrMlRXEA5sH6eJHMwQwzQZYfDK5fZ4OfnbiFEaV3JNzqid3kpK9xQfRHzEXIilAn217RPHlae2i3u56EsnyDW9PrcbfE++4huNzMXyc60MHffpbc54daUnN9gi54PK7AXAkvC1KkCiuNgyq 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: damon_callback was the only way for communicating with DAMON for contexts running on its worker thread. The interface is flexible and simple. But as DAMON evolves with more features, damon_callback has become somewhat too old. With runtime parameters update, for example, its lack of synchronization support was found to be inconvenient. Arguably it is also not easy to use correctly since the callers should understand when each callback is called, and implication of the return values from the callbacks. To replace it, damon_call() and damos_walk() are introduced. And those replaced a few damon_callback use cases. Some use cases of damon_callback such as parallel or repetitive DAMON internal data reading and additional cleanups cannot simply be replaced by damon_call() and damos_walk(), though. To allow those replaceable, extend damon_call() for parallel and/or repeated callbacks and modify the core/ops layers for additional resources cleanup. With the updates, replace the remaining damon_callback usages and finally remove damon_callback. SeongJae Park (14): mm/damon: accept parallel damon_call() requests mm/damon/core: introduce repeat mode damon_call() mm/damon/stat: use damon_call() repeat mode instead of damon_callback mm/damon/reclaim: use damon_call() repeat mode instead of damon_callback mm/damon/lru_sort: use damon_call() repeat mode instead of damon_callback samples/damon/prcl: use damon_call() repeat mode instead of damon_callback samples/damon/wsse: use damon_call() repeat mode instead of damon_callback mm/damon/core: do not call ops.cleanup() when destroying targets mm/damon/core: add cleanup_target() ops callback mm/damon/vaddr: put pid in cleanup_target() mm/damon/sysfs: remove damon_sysfs_destroy_targets() mm/damon/core: destroy targets when kdamond_fn() finish mm/damon/sysfs: remove damon_sysfs_before_terminate() mm/damon/core: remove damon_callback include/linux/damon.h | 44 ++++--------- mm/damon/core.c | 116 ++++++++++++++++++----------------- mm/damon/lru_sort.c | 70 ++++++++++----------- mm/damon/reclaim.c | 62 +++++++++---------- mm/damon/stat.c | 17 ++++- mm/damon/sysfs.c | 41 +------------ mm/damon/tests/core-kunit.h | 4 +- mm/damon/tests/vaddr-kunit.h | 2 +- mm/damon/vaddr.c | 6 ++ samples/damon/prcl.c | 18 ++++-- samples/damon/wsse.c | 16 ++++- 11 files changed, 189 insertions(+), 207 deletions(-) base-commit: d7932983411c60940e9b834ac554c33e0ca6f2ef -- 2.39.5