| From: SeongJae Park <sj@kernel.org> |
| Subject: mm/damon/dbgfs: implement deprecation notice file |
| Date: Mon, 29 Jan 2024 17:35:42 -0800 |
| |
| Implement a read-only file for DAMON debugfs interface deprecation notice, |
| to let users who manually read/write the DAMON debugfs files from their |
| shell command line easily notice the fact. |
| |
| [arnd@arndb.de: fix bogus string length] |
| Link: https://lkml.kernel.org/r/20240202124339.892862-1-arnd@kernel.org |
| Link: https://lkml.kernel.org/r/20240130013549.89538-4-sj@kernel.org |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Cc: Alex Shi <alexs@kernel.org> |
| Cc: Hu Haowen <2023002089@link.tyut.edu.cn> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Cc: Shuah Khan <shuah@kernel.org> |
| Cc: Yanteng Si <siyanteng@loongson.cn> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/damon/dbgfs.c | 19 +++++++++++++++++-- |
| 1 file changed, 17 insertions(+), 2 deletions(-) |
| |
| --- a/mm/damon/dbgfs.c~mm-damon-dbgfs-implement-deprecation-notice-file |
| +++ a/mm/damon/dbgfs.c |
| @@ -805,6 +805,17 @@ static void dbgfs_destroy_ctx(struct dam |
| damon_destroy_ctx(ctx); |
| } |
| |
| +static ssize_t damon_dbgfs_deprecated_read(struct file *file, |
| + char __user *buf, size_t count, loff_t *ppos) |
| +{ |
| + static const char kbuf[512] = "DAMON debugfs interface is deprecated, " |
| + "so users should move to DAMON_SYSFS. If you cannot, " |
| + "please report your usecase to damon@lists.linux.dev and " |
| + "linux-mm@kvack.org.\n"; |
| + |
| + return simple_read_from_buffer(buf, count, ppos, kbuf, strlen(kbuf)); |
| +} |
| + |
| /* |
| * Make a context of @name and create a debugfs directory for it. |
| * |
| @@ -1056,6 +1067,10 @@ static int damon_dbgfs_static_file_open( |
| return nonseekable_open(inode, file); |
| } |
| |
| +static const struct file_operations deprecated_fops = { |
| + .read = damon_dbgfs_deprecated_read, |
| +}; |
| + |
| static const struct file_operations mk_contexts_fops = { |
| .open = damon_dbgfs_static_file_open, |
| .write = dbgfs_mk_context_write, |
| @@ -1076,9 +1091,9 @@ static int __init __damon_dbgfs_init(voi |
| { |
| struct dentry *dbgfs_root; |
| const char * const file_names[] = {"mk_contexts", "rm_contexts", |
| - "monitor_on"}; |
| + "monitor_on", "DEPRECATED"}; |
| const struct file_operations *fops[] = {&mk_contexts_fops, |
| - &rm_contexts_fops, &monitor_on_fops}; |
| + &rm_contexts_fops, &monitor_on_fops, &deprecated_fops}; |
| int i; |
| |
| dbgfs_root = debugfs_create_dir("damon", NULL); |
| _ |