From patchwork Thu Feb 20 19:46:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13984463 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 5D242C021B1 for ; Thu, 20 Feb 2025 19:46:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 33D2D280331; Thu, 20 Feb 2025 14:46:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2EC0328032E; Thu, 20 Feb 2025 14:46:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 18BDA280331; Thu, 20 Feb 2025 14:46:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E085F28032E for ; Thu, 20 Feb 2025 14:46:55 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 9295BA0C38 for ; Thu, 20 Feb 2025 19:46:55 +0000 (UTC) X-FDA: 83141355990.07.5841D28 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf18.hostedemail.com (Postfix) with ESMTP id EF9E01C001E for ; Thu, 20 Feb 2025 19:46:53 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=azoYwA17; spf=pass (imf18.hostedemail.com: domain of sj@kernel.org designates 172.105.4.254 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=1740080814; 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:in-reply-to:references:references:dkim-signature; bh=lIV3wExUit9xApAD4BiDPxks9HsxoHv75P27U/Kn9jg=; b=lGe79Qrwe7vnbHhIIbiwd+ECsa/DUyi4gRG6fMw1l0v9fLxtHz1cd4r/wao6XBe6/ciuD/ EjkmKoDg2eLMbEtrtSvVR6CO07QBuxwU/W/4XwvBU1JVy5ZzH/5CLZR1ukeAqmymj7C6F+ mmbKkqOtj8yvxMQD0KQPc9vpDIKqijc= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=azoYwA17; spf=pass (imf18.hostedemail.com: domain of sj@kernel.org designates 172.105.4.254 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=1740080814; a=rsa-sha256; cv=none; b=e1m1sYsqy5AEgKobZro2cwpOLfIDIkwgwj9YTzGPEY3grBP9nNxvxJhvRqDah5UOpt0Kju G4CzRcrkPih32JMzHQUKSjezw9vI0XJInil/jquKD0ddNmF8B3qEH6Vaz1blAHtuk12SiW nB8QsTugt5dqYnsdHWY3IReTA/UrCfQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id D08A66830E; Thu, 20 Feb 2025 19:46:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22BF8C4CED1; Thu, 20 Feb 2025 19:46:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080813; bh=x49E7WlC9jzDdYoMfkdigGCJYjlYQheM7yPC5VYZSrg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=azoYwA174ibgpxsa5omO/gZ6EKQsnGkEk4Ql2SF2Cy0Tj9zoSDHUXemgBNpO64T6U cvSp28YFClj3X9fS3NRI1PHh+KP714IZORD2IOG8JFCqJKpbUBXZcdVaJ0oKfNgAQD /SvEQayW/MtBtvBsu2bk4PI105CSB1SZfo09wwh9kcbEf0FR2gIqKpntM8AVVcewjd E8DhLOrwUW54aUlMiyS00gXij0XmoU3+06uWAH5hkHyJQUvz/DCymOeyo8QNdMV3h4 ar4O5h7nNZQuDFBW4VJETtLu838dvoLBGecYZRA54ufmuZWNOllIrN5YHkAwl+Ti97 DhwgBnBHIu4bA== 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: [PATCH 2/8] mm/damon/sysfs-schemes: implement core_filters and ops_filters directories Date: Thu, 20 Feb 2025 11:46:40 -0800 Message-Id: <20250220194646.37726-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220194646.37726-1-sj@kernel.org> References: <20250220194646.37726-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: EF9E01C001E X-Stat-Signature: co8kp9q4ta5jwzeo3wh5i3roas6soa5n X-HE-Tag: 1740080813-904077 X-HE-Meta: U2FsdGVkX1+Rfbn1mgYcGL7fS2F5c1rIjkxblsOpJ3B09ENI65swU5i9Ypm4IxP1D/IzqEyWH5s+N4/AhDEx6tIQARP6QI7g35GDNWlXUlDLXYlMosmocR9zvx7foAuPTSjUzgJSccDUm64I3PYoa/LtmU0QYz5NxbxiXb+qxpImR5nGz4W8VuHpRt8Pg4Bdryk/e+LsNx99thA5r+jwi9xEiOzKO9IcjF/FCrU/DEr5rKdVV+8xEhL26U80OjGzJJAn1+AIzv5hO3fBpEb1wgdk6YvCw3WIfZHB385uHMVnU/Fx0j+/Tnd1I4lkt86KA4n08uJSn7B462L06xdqjVDQJ78tRN4bzr59vgNKFZ44UY0+Jx2OLeOj5WhWofUP6boCWVEAZlhknQQ3jgbHm6nvdN/ZC8YdcC3xWUKNGJ/DyPgJ6u5qUDcMyfWr3hN+4lqYv7aGeHRFtlCGFhUWHwQM9LofO0L/X66Tj5OYKFMzYvjdHgkWf+aFGjg4m3Ya8WbkscgYMV29Vf9jwjvQ6BskN/q5hcM59JXdTKS/KN4yXT41MPtsg8NM0pgiUXZXXzuv5GoN69fXs8+Aaca8JsLzAWsAHONPN11Gx7YKhdXR6Igbk5A3QfljdR7usPYIsIUiQaJ5kIs/cHI7cxxrAXNs7pm3o+olgbEvLD5iymcDoAAjVH5egCAXjoIHsnGPTLTNlupG4fNA1czeHC358MYNFyy31svnQIiIdfCx298pDtB4DvS4LOM1amiW3LLKLw5pxfbz7U5ZGJN2Hw/RBV6TFZtZuFsmpLSTP8Hdv7Jt4uAyDeNKFOahk4LQ97I7wROXLR1yKH2ELcSy8ggqRgGHSBUhHgl37NYXIBI7+fwNOVnYXuA7VkYWSSiPVe5y/1TWV49JZK7542JZJJwd3wBC4hRy/NIIJNkDPkwdkncE4Vm6oJd06mTxihKmqQSMqya//BT45JSWsS9D/M3 0B4KYkgN xVphos2YdohsNIG9bD3naQRUbe2g7q9h5OSxMTFjIB3qWvj8Iq+hJ8+RyOLRLxcstH/Vo4V49BOSM5/ehn2Oezfw6BKd8xJCrFqfpCoikV6IlQ0PzfmMnqftK0GXbNnpCvCZaU70xioeaJ4wnF8IPVhlc1yFOxTRYq2xYdwgnOWx4v8AmOxQFmC4VdSkcFq4KCnyD8T0R5iZd8LOayhj1SByU65u2ntDBWwoXSMDtrPXnTwbWWg6RUYlGmsjlgKrZnWsf0Jzs4MHc9h+ds23ti7U0Jg== 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: Implement two DAMOS sysfs directories for managing core and operations layer handled filters separately. Those are named as 'core_filters' and 'ops_filters', and have files hierarchy same to 'filters'. This commit is only populating and cleaning up the directories, not really the files with DAMON. Following changes will make the connections. Signed-off-by: SeongJae Park --- mm/damon/sysfs-schemes.c | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c index 541ca5887b24..61ff800ce78d 100644 --- a/mm/damon/sysfs-schemes.c +++ b/mm/damon/sysfs-schemes.c @@ -1504,6 +1504,8 @@ struct damon_sysfs_scheme { unsigned long apply_interval_us; struct damon_sysfs_quotas *quotas; struct damon_sysfs_watermarks *watermarks; + struct damon_sysfs_scheme_filters *core_filters; + struct damon_sysfs_scheme_filters *ops_filters; struct damon_sysfs_scheme_filters *filters; struct damon_sysfs_stats *stats; struct damon_sysfs_scheme_regions *tried_regions; @@ -1624,6 +1626,33 @@ static int damon_sysfs_scheme_set_filters(struct damon_sysfs_scheme *scheme, return err; } +static int damos_sysfs_set_filter_dirs(struct damon_sysfs_scheme *scheme) +{ + int err; + + err = damon_sysfs_scheme_set_filters(scheme, "filters", + &scheme->filters); + if (err) + return err; + err = damon_sysfs_scheme_set_filters(scheme, "core_filters", + &scheme->core_filters); + if (err) + goto put_filters_out; + err = damon_sysfs_scheme_set_filters(scheme, "ops_filters", + &scheme->ops_filters); + if (err) + goto put_core_filters_out; + return 0; + +put_core_filters_out: + kobject_put(&scheme->core_filters->kobj); + scheme->core_filters = NULL; +put_filters_out: + kobject_put(&scheme->filters->kobj); + scheme->filters = NULL; + return err; +} + static int damon_sysfs_scheme_set_stats(struct damon_sysfs_scheme *scheme) { struct damon_sysfs_stats *stats = damon_sysfs_stats_alloc(); @@ -1672,8 +1701,7 @@ static int damon_sysfs_scheme_add_dirs(struct damon_sysfs_scheme *scheme) err = damon_sysfs_scheme_set_watermarks(scheme); if (err) goto put_quotas_access_pattern_out; - err = damon_sysfs_scheme_set_filters(scheme, "filters", - &scheme->filters); + err = damos_sysfs_set_filter_dirs(scheme); if (err) goto put_watermarks_quotas_access_pattern_out; err = damon_sysfs_scheme_set_stats(scheme); @@ -1688,6 +1716,10 @@ static int damon_sysfs_scheme_add_dirs(struct damon_sysfs_scheme *scheme) kobject_put(&scheme->tried_regions->kobj); scheme->tried_regions = NULL; put_filters_watermarks_quotas_access_pattern_out: + kobject_put(&scheme->ops_filters->kobj); + scheme->ops_filters = NULL; + kobject_put(&scheme->core_filters->kobj); + scheme->core_filters = NULL; kobject_put(&scheme->filters->kobj); scheme->filters = NULL; put_watermarks_quotas_access_pattern_out: @@ -1711,6 +1743,10 @@ static void damon_sysfs_scheme_rm_dirs(struct damon_sysfs_scheme *scheme) kobject_put(&scheme->watermarks->kobj); damon_sysfs_scheme_filters_rm_dirs(scheme->filters); kobject_put(&scheme->filters->kobj); + damon_sysfs_scheme_filters_rm_dirs(scheme->core_filters); + kobject_put(&scheme->core_filters->kobj); + damon_sysfs_scheme_filters_rm_dirs(scheme->ops_filters); + kobject_put(&scheme->ops_filters->kobj); kobject_put(&scheme->stats->kobj); damon_sysfs_scheme_regions_rm_dirs(scheme->tried_regions); kobject_put(&scheme->tried_regions->kobj);