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 03B0DC3DA6E for ; Wed, 3 Jan 2024 16:50:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8EA226B019C; Wed, 3 Jan 2024 11:50:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 899CB8D006C; Wed, 3 Jan 2024 11:50:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 789AE6B019E; Wed, 3 Jan 2024 11:50:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 6549D6B019C for ; Wed, 3 Jan 2024 11:50:14 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 39B12A118E for ; Wed, 3 Jan 2024 16:50:14 +0000 (UTC) X-FDA: 81638587548.09.EBE9099 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) by imf19.hostedemail.com (Postfix) with ESMTP id 3D7A11A0005 for ; Wed, 3 Jan 2024 16:50:11 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of marc.c.dionne@gmail.com designates 209.85.218.52 as permitted sender) smtp.mailfrom=marc.c.dionne@gmail.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704300612; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KyxC65ZUHhJNVZLWmNzwaZSs3wWveWb1iIYNlwWiPu4=; b=Z278EKDEYyab+uY77QP7coixXzrS/VcoQdsnLa3JEBNplaN9UZc8jvPbAg6jjc5q5p6u+h dLKxRddqy7nsq+LceOULJgVN+8ETGlxwGuc9yQwwvkS095E8spQTimDGEGI0gZaq2yU6f2 5TcLVUbYrUbkBR5UKe1d5GcxTkTscEc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704300612; a=rsa-sha256; cv=none; b=otngXtqtaE9b+28VKpJuLg+v1G0TMH3W3K3Kl/e7ENvnIJYW7vuJTA57RV/ePecDFnodXz /WXSTczaLfXMU1l2TpEz1XoIJyDi8R6XKYoPRpGq83yWypOmRwWEOui2X9n4fMebqkIwHk 6dO/Z1zCwRYuf+5F4QHETrf3YMKfHKY= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of marc.c.dionne@gmail.com designates 209.85.218.52 as permitted sender) smtp.mailfrom=marc.c.dionne@gmail.com; dmarc=none Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-a1915034144so1212227966b.0 for ; Wed, 03 Jan 2024 08:50:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704300610; x=1704905410; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KyxC65ZUHhJNVZLWmNzwaZSs3wWveWb1iIYNlwWiPu4=; b=GgCszVXdJQ/jew4JAYULrbFwcL4DTZvW+DtuwYzDGUOul8Ps67d0/wFFoellxHOuBG Cq49fjZQMGaxEtfvRsUj4ndwbKgCZO+iuumofEsM4Lyzz/jP/44yTazuXgogK5ZLtM0W Lw3Vf3SqsRQsWajbb6ao1PVfjlLGGi5yUZXMSs1Q1QGy9CPROBOwgfXN0U6xJf69XhXb p10oh8xk3wtjhaaANzZjCuIfZ8bWIPV6UYpHimCk8cTnXd1indrvmtb7nREjIkjlvvfk nFcL8FSGh84G6v2tGSgGxIezyoHxKFrHBuaxrwsQ7NPh1wE/DFv1YhM6iHFuY3QG4izZ 1L3g== X-Gm-Message-State: AOJu0YyQ7V0SFQVNR5YlwGq4HacdRxspoOc6d5qvn5rv5eZ+fp5TNymB d3EwGGDlBb9hBIGHrvHXQPbY4eTw1AwR+PXZ X-Google-Smtp-Source: AGHT+IFEylgD9mCHsaxmHeV6nLBPpBDF9kU0FO45E0lN5D249nuqH3JbOzfG567CuB3tiVl54cEuSA== X-Received: by 2002:a17:906:d110:b0:a28:7dd0:adb4 with SMTP id b16-20020a170906d11000b00a287dd0adb4mr855397ejz.83.1704300610130; Wed, 03 Jan 2024 08:50:10 -0800 (PST) Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com. [209.85.218.46]) by smtp.gmail.com with ESMTPSA id f15-20020a17090660cf00b00a26f66ce72fsm8787273ejk.83.2024.01.03.08.50.09 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 03 Jan 2024 08:50:09 -0800 (PST) Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-a28b2e1a13fso45262766b.3 for ; Wed, 03 Jan 2024 08:50:09 -0800 (PST) X-Received: by 2002:a17:907:2d9f:b0:a23:6230:6213 with SMTP id gt31-20020a1709072d9f00b00a2362306213mr11110657ejc.98.1704300609810; Wed, 03 Jan 2024 08:50:09 -0800 (PST) MIME-Version: 1.0 References: <20231221132400.1601991-1-dhowells@redhat.com> <20231221132400.1601991-7-dhowells@redhat.com> In-Reply-To: <20231221132400.1601991-7-dhowells@redhat.com> From: Marc Dionne Date: Wed, 3 Jan 2024 12:49:58 -0400 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v5 06/40] netfs, fscache: Move /proc/fs/fscache to /proc/fs/netfs and put in a symlink To: David Howells Cc: Jeff Layton , Steve French , Matthew Wilcox , Paulo Alcantara , Shyam Prasad N , Tom Talpey , Dominique Martinet , Eric Van Hensbergen , Ilya Dryomov , Christian Brauner , linux-cachefs@redhat.com, linux-afs@lists.infradead.org, linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, v9fs@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 3D7A11A0005 X-Rspam-User: X-Stat-Signature: ze9zuh34kx3i4wu35raqhxhgsngtper8 X-Rspamd-Server: rspam03 X-HE-Tag: 1704300611-326107 X-HE-Meta: U2FsdGVkX1864a9ODmLP5No/YUc1Aq5WXPuUIUhAryPQWnYNJMc0iWHbSWbTFH0tiTxSWRXPUDzDLyOMNvLafmH2NSp4CcSk7C3PMTBY9XJTOfHZebAix01yyYsccMBM3oliZ+6yQdnWeXd+jsJ2AaxkVEDgQ93BOV5WFZLhI+n6jUhgQZkUNJBV3Frx3xjuKAk6fzLZD4Oyz+tk3u8tTH3JqSpXuNChBfamFdlAvxl4qCgSci0qr4aFIT0CmdvssWxZiaHzNCRPfg00ic2fjpH0RMw+9xLUIWINF3gGc4Gh4Y961urJhe3VZQQOFvZfb9zoxQ/1iTD/VLoU9W4BG/3JLNeLbr+cjg/vBP/85QTCEJlWz8QThOkkKmfYRN8llrqFX8DfsrG6h6Vp8WOw37rEO3iFobuCpJaOWJ3I05vOFznPlkDAfb4aa0wlV/9xueV0wDsl0WxJ0Bc5bU4Zyfi6rD0PEeg7+2Sfx7wSVoGm/R5+0rCnlNA+boiSHpfhJjbxNz02g9h8/8hJPcfU+OhxYpYYPm/jpgk0TTfJe3iTv1hrjCNiq5ZZdyzuVdkaHb0M7GXToaibC+UXv/ZJUraCEqkjelTvfU1nDELDvWu/OskAj7qpMCnZKgAOihNpON/O/2fb1dVNTupiEbkC+qoWw7g3Ox0XwPQ+Gj4wd6ZLnjoLZ4VLDS/KV2dP2vqA/7kGZ2juHGP9OXhYXgc2N4/un9nwhTSRbeoMSjFRnILUuGv8Uxa05zaStXujjXXFg1mG0JTbefufgxQL6tPnOThEuLCAtMc3RmYdv4acqDrXzSCWWnJQWLyTVd9MGZTzBcnOU3ErfysO5pD1UU44gF991MB31AHFpGLy0SqsKGupApSBmm4/1ry8m5RxZ2RmWyDD2IGTWfJr+tgJ+nDeEvgnKWZ1WpDCUypIMhZAzsaeAWoQrl+38xD0rlP2bgzMmRjymFX4gYzeT9oXb6w JwiYSDYz NK/nkhxqS+Ae95hL30Mkib1y+Hq2GifjMWUr41xjtaEXtcB1+O3MPlV5zlkn4dNb5ncs9iY2GDW8l9hOmBdyNOakUxWZtuqbDjEwioMkJHuVy6G5PGtT+rIwCwBKo/sFZZWpIMhg4KttjUWZKW3MQyOFJKw9e65h3JwNu85vFFt/8f/CROZNi9z5tJVotqaUntgGSDwuT+g/EUEYa8FVzW4IplKNXs+bb62cKegtbpYBqGylvX9D3q8X+2t2yQtSvxjKWRL4cVjCdcqQnj3KnZlCrWKIXP7VYH8lGyv+L0NlHLBwSSLc7DNAml4rFqeJuVhIRv9l+gu8QRS4URv5cUJM1XFqWPaB8fMW/w/CPtDfJEnT7BntLYWWOxvLLP9EZa/8W31g3eB6ADZ2viTis4mTLHhiFSjFIuMFrLZhXM+nZdyI+1rCSnhEi/H8vt/eJ7ARUvfY/xYuagppsTe1g90+hZEN4duizIOUPIGP6TSl6gl23rB/FUGepyhFGjwZqoFEs 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: On Thu, Dec 21, 2023 at 9:24=E2=80=AFAM David Howells = wrote: > > Rename /proc/fs/fscache to "netfs" and make a symlink from fscache to tha= t. > > Signed-off-by: David Howells > Reviewed-by: Jeff Layton > cc: Christian Brauner > cc: linux-fsdevel@vger.kernel.org > cc: linux-cachefs@redhat.com > --- > > Notes: > Changes > =3D=3D=3D=3D=3D=3D=3D > ver #5) > - fscache_init/exit() should depend on CONFIG_FSCACHE, not CONFIG_PR= OC_FS. > > fs/netfs/fscache_main.c | 8 ++------ > fs/netfs/fscache_proc.c | 23 ++++++++--------------- > fs/netfs/fscache_stats.c | 4 +--- > fs/netfs/internal.h | 12 +++++++++++- > fs/netfs/main.c | 33 +++++++++++++++++++++++++++++++++ > fs/netfs/stats.c | 13 +++++++------ > include/linux/netfs.h | 1 - > 7 files changed, 62 insertions(+), 32 deletions(-) > > diff --git a/fs/netfs/fscache_main.c b/fs/netfs/fscache_main.c > index 00600a4d9ce5..42e98bb523e3 100644 > --- a/fs/netfs/fscache_main.c > +++ b/fs/netfs/fscache_main.c > @@ -62,7 +62,7 @@ unsigned int fscache_hash(unsigned int salt, const void= *data, size_t len) > /* > * initialise the fs caching module > */ > -static int __init fscache_init(void) > +int __init fscache_init(void) > { > int ret =3D -ENOMEM; > > @@ -94,12 +94,10 @@ static int __init fscache_init(void) > return ret; > } > > -fs_initcall(fscache_init); > - > /* > * clean up on module removal > */ > -static void __exit fscache_exit(void) > +void __exit fscache_exit(void) > { > _enter(""); > > @@ -108,5 +106,3 @@ static void __exit fscache_exit(void) > destroy_workqueue(fscache_wq); > pr_notice("FS-Cache unloaded\n"); > } > - > -module_exit(fscache_exit); > diff --git a/fs/netfs/fscache_proc.c b/fs/netfs/fscache_proc.c > index dc3b0e9c8cce..ecd0d1edafaa 100644 > --- a/fs/netfs/fscache_proc.c > +++ b/fs/netfs/fscache_proc.c > @@ -12,41 +12,34 @@ > #include "internal.h" > > /* > - * initialise the /proc/fs/fscache/ directory > + * Add files to /proc/fs/netfs/. > */ > int __init fscache_proc_init(void) > { > - if (!proc_mkdir("fs/fscache", NULL)) > - goto error_dir; > + if (!proc_symlink("fs/fscache", NULL, "../netfs")) This should be just "netfs" > + goto error_sym; > > - if (!proc_create_seq("fs/fscache/caches", S_IFREG | 0444, NULL, > + if (!proc_create_seq("fs/netfs/caches", S_IFREG | 0444, NULL, > &fscache_caches_seq_ops)) > goto error; > > - if (!proc_create_seq("fs/fscache/volumes", S_IFREG | 0444, NULL, > + if (!proc_create_seq("fs/netfs/volumes", S_IFREG | 0444, NULL, > &fscache_volumes_seq_ops)) > goto error; > > - if (!proc_create_seq("fs/fscache/cookies", S_IFREG | 0444, NULL, > + if (!proc_create_seq("fs/netfs/cookies", S_IFREG | 0444, NULL, > &fscache_cookies_seq_ops)) > goto error; > - > -#ifdef CONFIG_FSCACHE_STATS > - if (!proc_create_single("fs/fscache/stats", S_IFREG | 0444, NULL, > - fscache_stats_show)) > - goto error; > -#endif > - > return 0; > > error: > remove_proc_entry("fs/fscache", NULL); > -error_dir: > +error_sym: > return -ENOMEM; > } > > /* > - * clean up the /proc/fs/fscache/ directory > + * Clean up the /proc/fs/fscache symlink. > */ > void fscache_proc_cleanup(void) > { > diff --git a/fs/netfs/fscache_stats.c b/fs/netfs/fscache_stats.c > index fc94e5e79f1c..aad812ead398 100644 > --- a/fs/netfs/fscache_stats.c > +++ b/fs/netfs/fscache_stats.c > @@ -52,7 +52,7 @@ EXPORT_SYMBOL(fscache_n_culled); > /* > * display the general statistics > */ > -int fscache_stats_show(struct seq_file *m, void *v) > +int fscache_stats_show(struct seq_file *m) > { > seq_puts(m, "FS-Cache statistics\n"); > seq_printf(m, "Cookies: n=3D%d v=3D%d vcol=3D%u voom=3D%u\n", > @@ -96,7 +96,5 @@ int fscache_stats_show(struct seq_file *m, void *v) > seq_printf(m, "IO : rd=3D%u wr=3D%u\n", > atomic_read(&fscache_n_read), > atomic_read(&fscache_n_write)); > - > - netfs_stats_show(m); > return 0; > } > diff --git a/fs/netfs/internal.h b/fs/netfs/internal.h > index 43769ac606e8..3f6e22229433 100644 > --- a/fs/netfs/internal.h > +++ b/fs/netfs/internal.h > @@ -76,6 +76,7 @@ extern atomic_t netfs_n_rh_write_done; > extern atomic_t netfs_n_rh_write_failed; > extern atomic_t netfs_n_rh_write_zskip; > > +int netfs_stats_show(struct seq_file *m, void *v); > > static inline void netfs_stat(atomic_t *stat) > { > @@ -166,6 +167,13 @@ static inline void fscache_see_cookie(struct fscache= _cookie *cookie, > * fscache-main.c > */ > extern unsigned int fscache_hash(unsigned int salt, const void *data, si= ze_t len); > +#ifdef CONFIG_FSCACHE > +int __init fscache_init(void); > +void __exit fscache_exit(void); > +#else > +static inline int fscache_init(void) { return 0; } > +static inline void fscache_exit(void) {} > +#endif > > /* > * fscache-proc.c > @@ -216,12 +224,14 @@ static inline void fscache_stat_d(atomic_t *stat) > > #define __fscache_stat(stat) (stat) > > -int fscache_stats_show(struct seq_file *m, void *v); > +int fscache_stats_show(struct seq_file *m); > #else > > #define __fscache_stat(stat) (NULL) > #define fscache_stat(stat) do {} while (0) > #define fscache_stat_d(stat) do {} while (0) > + > +static inline int fscache_stats_show(struct seq_file *m) { return 0; } > #endif > > /* > diff --git a/fs/netfs/main.c b/fs/netfs/main.c > index 1ba8091fcf3e..c9af6e0896d3 100644 > --- a/fs/netfs/main.c > +++ b/fs/netfs/main.c > @@ -7,6 +7,8 @@ > > #include > #include > +#include > +#include > #include "internal.h" > #define CREATE_TRACE_POINTS > #include > @@ -19,3 +21,34 @@ unsigned netfs_debug; > module_param_named(debug, netfs_debug, uint, S_IWUSR | S_IRUGO); > MODULE_PARM_DESC(netfs_debug, "Netfs support debugging mask"); > > +static int __init netfs_init(void) > +{ > + int ret =3D -ENOMEM; > + > + if (!proc_mkdir("fs/netfs", NULL)) > + goto error; > + > +#ifdef CONFIG_FSCACHE_STATS > + if (!proc_create_single("fs/netfs/stats", S_IFREG | 0444, NULL, > + netfs_stats_show)) > + goto error_proc; > +#endif > + > + ret =3D fscache_init(); > + if (ret < 0) > + goto error_proc; > + return 0; > + > +error_proc: > + remove_proc_entry("fs/netfs", NULL); > +error: > + return ret; > +} > +fs_initcall(netfs_init); > + > +static void __exit netfs_exit(void) > +{ > + fscache_exit(); > + remove_proc_entry("fs/netfs", NULL); > +} > +module_exit(netfs_exit); > diff --git a/fs/netfs/stats.c b/fs/netfs/stats.c > index 5510a7a14a40..6025dc485f7e 100644 > --- a/fs/netfs/stats.c > +++ b/fs/netfs/stats.c > @@ -28,31 +28,32 @@ atomic_t netfs_n_rh_write_done; > atomic_t netfs_n_rh_write_failed; > atomic_t netfs_n_rh_write_zskip; > > -void netfs_stats_show(struct seq_file *m) > +int netfs_stats_show(struct seq_file *m, void *v) > { > - seq_printf(m, "RdHelp : RA=3D%u RP=3D%u WB=3D%u WBZ=3D%u rr=3D%u = sr=3D%u\n", > + seq_printf(m, "Netfs : RA=3D%u RP=3D%u WB=3D%u WBZ=3D%u rr=3D%u = sr=3D%u\n", > atomic_read(&netfs_n_rh_readahead), > atomic_read(&netfs_n_rh_readpage), > atomic_read(&netfs_n_rh_write_begin), > atomic_read(&netfs_n_rh_write_zskip), > atomic_read(&netfs_n_rh_rreq), > atomic_read(&netfs_n_rh_sreq)); > - seq_printf(m, "RdHelp : ZR=3D%u sh=3D%u sk=3D%u\n", > + seq_printf(m, "Netfs : ZR=3D%u sh=3D%u sk=3D%u\n", > atomic_read(&netfs_n_rh_zero), > atomic_read(&netfs_n_rh_short_read), > atomic_read(&netfs_n_rh_write_zskip)); > - seq_printf(m, "RdHelp : DL=3D%u ds=3D%u df=3D%u di=3D%u\n", > + seq_printf(m, "Netfs : DL=3D%u ds=3D%u df=3D%u di=3D%u\n", > atomic_read(&netfs_n_rh_download), > atomic_read(&netfs_n_rh_download_done), > atomic_read(&netfs_n_rh_download_failed), > atomic_read(&netfs_n_rh_download_instead)); > - seq_printf(m, "RdHelp : RD=3D%u rs=3D%u rf=3D%u\n", > + seq_printf(m, "Netfs : RD=3D%u rs=3D%u rf=3D%u\n", > atomic_read(&netfs_n_rh_read), > atomic_read(&netfs_n_rh_read_done), > atomic_read(&netfs_n_rh_read_failed)); > - seq_printf(m, "RdHelp : WR=3D%u ws=3D%u wf=3D%u\n", > + seq_printf(m, "Netfs : WR=3D%u ws=3D%u wf=3D%u\n", > atomic_read(&netfs_n_rh_write), > atomic_read(&netfs_n_rh_write_done), > atomic_read(&netfs_n_rh_write_failed)); > + return fscache_stats_show(m); > } > EXPORT_SYMBOL(netfs_stats_show); > diff --git a/include/linux/netfs.h b/include/linux/netfs.h > index d294ff8f9ae4..9bd91cd615d5 100644 > --- a/include/linux/netfs.h > +++ b/include/linux/netfs.h > @@ -294,7 +294,6 @@ void netfs_get_subrequest(struct netfs_io_subrequest = *subreq, > enum netfs_sreq_ref_trace what); > void netfs_put_subrequest(struct netfs_io_subrequest *subreq, > bool was_async, enum netfs_sreq_ref_trace what)= ; > -void netfs_stats_show(struct seq_file *); > ssize_t netfs_extract_user_iter(struct iov_iter *orig, size_t orig_len, > struct iov_iter *new, > iov_iter_extraction_t extraction_flags); > Marc