From patchwork Thu Feb 27 01:57:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13993525 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 E7089C021B8 for ; Thu, 27 Feb 2025 01:58:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3F55D6B0092; Wed, 26 Feb 2025 20:58:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A4626B0093; Wed, 26 Feb 2025 20:58:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1F8D16B0096; Wed, 26 Feb 2025 20:58:07 -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 027806B0092 for ; Wed, 26 Feb 2025 20:58:06 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id BCD87C1346 for ; Thu, 27 Feb 2025 01:58:06 +0000 (UTC) X-FDA: 83164064172.19.2652149 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf05.hostedemail.com (Postfix) with ESMTP id 36F56100002 for ; Thu, 27 Feb 2025 01:58:05 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=VwgPPSnP; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740621485; a=rsa-sha256; cv=none; b=jrhO75ssdcJpqYcARAAE3l0AW5N0NhxpNyQXZNdy9Tz65kw3jJEaxhVsT4QUlSaNS44522 rnEkWoCtcxpCoKwTbtXBSbzcbyCUagq+QUUnRdhaOMay3hdojoU9ift2zDLWcdhXbkmfEV jFKYtHMHxwTGQMI6nHC1Ty4bwyhry+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740621485; 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=wjbwVqpPrZ4BkwLJ1+3TE6Tj5NuGrcF5DEkVKQVMzxQ=; b=RhTix9jqjJVhieBcdwALAmlWPMPtJbjfCadg0JRWwaRVvPOlp4CMLHH7n5rFXl9gkIB+XK pZIaeka9keQJRcLJ+VunXhTj0qbp5/l5jQokLx+w53Z/H1dXk6/KveDgOh4lzB1+Unfir4 gh7lj+kohZM7aEHOET1JKafF68yXS7k= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=VwgPPSnP; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id A46AC5C7637; Thu, 27 Feb 2025 01:57:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 29670C4CEE9; Thu, 27 Feb 2025 01:58:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740621484; bh=QU2B5OyjwKcbSYOittkRG8TZWYJnF6pYkD/57XDdhdI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VwgPPSnPJQDwc1rIVc7Xx2E+0web9XOgqArVd0SNog172cRGHzVZOVlDqmVdLin2W LLsafYJZIObPHyBR6FtPy4GXobvAx8bDPgoGmKOGbheMalJLOqEE918Ys1Im19RAJr JevxJ/CifsvJqnzMdjGmHnLGcLPhbCTTf16UlCnfOYY0W38Xd/1/LRfTVgvb5ayGz2 56Jeu70HfrlQE6odKGESqBShUS90gYBpYtNoZ2RggUBGgjr6YixIBqOrs3/vDKLQqh I/aIY0swcGT3PSWadD7IY26Rdf/eM8lGHeiaw/YXahxPhvcfCf8KJZkNC3VlkHdkhg XQJUfC8DLYF5Q== 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 v2 3/9] mm/damon/core: support committing ops_filters Date: Wed, 26 Feb 2025 17:57:48 -0800 Message-Id: <20250227015754.38789-4-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250227015754.38789-1-sj@kernel.org> References: <20250227015754.38789-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 36F56100002 X-Rspamd-Server: rspam08 X-Rspam-User: X-Stat-Signature: kmtnxobxn8oyw1b9zdob5npdmw5xerrg X-HE-Tag: 1740621485-964229 X-HE-Meta: U2FsdGVkX19dbUmVllLp+iEnxiHROnALV8oRE8x7u3dEh/aSqmKvz/JOcUIbHXJhjKRqBfdXo5RXq9d/lCkKrW454L5totJC63zItt3r0rzWBWqJYJ6kiy/9cB/PLVMFWEXpq7S7fBEdS7Rhqw4qfOfzejfM9dvEdBlJVXhobcOaTO5p4BCfL58wYE2ZUqnGncmLrT3QXB/WtLSCdQpip1SZlzd8SbRLWRgtudR5Hvikiwr96AkgK5m3vQI08iRrxLvMycCo2suRCKe5FYdKWB3mrcHJ512eDF8npbjservPzaCJklilyi7a27xZTk3zJnyqun29k5NqODtnb+2uiCXKwCpot/vko9gSu4CnPbG6002mzaao3ffLz0Lfpz0uv8/9JHThM8KZTS7lyynsgyalep9gjl8dCaAaik901hSTTqQfB6w9Yz9Xjavn/LKSOAhf+M/hkfVYNV0WhSIRnUmwrq7ucBQf0xqGAhxIH7+ZliL5EdFd4otVz71n5hMnkRvPI0lXbJ/gh2/43ShBSZLk1lsBz5u6vdQllCdvxrqNjuEVDtvbGYr3pzlQgxehg+9sr6S7KvFM44MBLFPFA5I7C9rYskOUX47clmwu9QfGq5TGqV3AkAxXRstnN+e+9uRSJ+NyJIT9eQo4qhBQzFqyLo9un2YQlkvIUqYBFB3i6qCwcXUIbKpktLXoANzf9nQPh2kd0+W7ilnL9n4CrnvTTKg5/BZm4LYlRJ9Lxsv3CWQF46w4W+cUQo2mP3qSLXBJCe9+WGPH7Qf4YJdnYGTjMJL/ZySgggpjez4DSjza6bA7MP2ESs6wLS5qpj1zVL7Jw/nuaZrA7/tRpgZMfUvtK8JPadZgznwJKteepsa8A2h3Gvdz8AKFcA78TVfnMkr7xmkThymRHzehhBUhpcCM+iAzHzy30ir9zUQt6SQexrXmDhyL5iw3zpv6/SCyw3HWDUtvlvP1Ka/zSXM MSoZl6kY G0fjUcLjsfXEvYVYJyMUE3x9OHjo+9vnyGZc/wDn/RMbhhWen++i3PRkrBCFbbvdavEMaQ3Ykve+gMuYDzEe/xHUja/dxJ5et45eI5qL/1uUkTd8BLkWzzjB+agIWaBTOedk1utbNT8HLCSM5VfmC4QzEK0hNOZoN6BDP2JssSFZF5C3BLU3TinVvmtxvnQbxa8r7fj9v6JJBxErnTNojlVxgsnnTS+u6b+Sy007JGKKwpL73RgubnXtjcUlfvUNZoqM+XlidnUKMeZWSisXSG+d1iA== 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 kernel API callers should use damon_commit_ctx() to install DAMON parameters including DAMOS filters. But damos_commit_ops_filters(), which is called by damon_commit_ctx() for filters installing, is not handling damos->ops_filters. Hence, no DAMON kernel API caller can use damos->ops_filters. Do the committing of the ops_filters to make it usable. Signed-off-by: SeongJae Park --- mm/damon/core.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index bcb7e42098dc..ffdd84ff6fa5 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -793,7 +793,7 @@ static void damos_commit_filter( damos_commit_filter_arg(dst, src); } -static int damos_commit_filters(struct damos *dst, struct damos *src) +static int damos_commit_core_filters(struct damos *dst, struct damos *src) { struct damos_filter *dst_filter, *next, *src_filter, *new_filter; int i = 0, j = 0; @@ -821,6 +821,44 @@ static int damos_commit_filters(struct damos *dst, struct damos *src) return 0; } +static int damos_commit_ops_filters(struct damos *dst, struct damos *src) +{ + struct damos_filter *dst_filter, *next, *src_filter, *new_filter; + int i = 0, j = 0; + + damos_for_each_ops_filter_safe(dst_filter, next, dst) { + src_filter = damos_nth_filter(i++, src); + if (src_filter) + damos_commit_filter(dst_filter, src_filter); + else + damos_destroy_filter(dst_filter); + } + + damos_for_each_ops_filter_safe(src_filter, next, src) { + if (j++ < i) + continue; + + new_filter = damos_new_filter( + src_filter->type, src_filter->matching, + src_filter->allow); + if (!new_filter) + return -ENOMEM; + damos_commit_filter_arg(new_filter, src_filter); + damos_add_filter(dst, new_filter); + } + return 0; +} + +static int damos_commit_filters(struct damos *dst, struct damos *src) +{ + int err; + + err = damos_commit_core_filters(dst, src); + if (err) + return err; + return damos_commit_ops_filters(dst, src); +} + static struct damos *damon_nth_scheme(int n, struct damon_ctx *ctx) { struct damos *s;