2021-02-01 07:54:10

by Jiapeng Chong

[permalink] [raw]
Subject: [PATCH] ceph: Replace DEFINE_SIMPLE_ATTRIBUTE with DEFINE_DEBUGFS_ATTRIBUTE

Fix the following coccicheck warning:

./fs/ceph/debugfs.c:347:0-23: WARNING: congestion_kb_fops should be
defined with DEFINE_DEBUGFS_ATTRIBUTE.

Reported-by: Abaci Robot <[email protected]>
Signed-off-by: Jiapeng Chong <[email protected]>
---
fs/ceph/debugfs.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
index 66989c8..617327e 100644
--- a/fs/ceph/debugfs.c
+++ b/fs/ceph/debugfs.c
@@ -344,8 +344,8 @@ static int congestion_kb_get(void *data, u64 *val)
return 0;
}

-DEFINE_SIMPLE_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
- congestion_kb_set, "%llu\n");
+DEFINE_DEBUGFS_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
+ congestion_kb_set, "%llu\n");


void ceph_fs_debugfs_cleanup(struct ceph_fs_client *fsc)
--
1.8.3.1


2021-02-01 19:04:52

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH] ceph: Replace DEFINE_SIMPLE_ATTRIBUTE with DEFINE_DEBUGFS_ATTRIBUTE

On Mon, 2021-02-01 at 15:52 +0800, Jiapeng Chong wrote:
> Fix the following coccicheck warning:
>
> ./fs/ceph/debugfs.c:347:0-23: WARNING: congestion_kb_fops should be
> defined with DEFINE_DEBUGFS_ATTRIBUTE.
>
> Reported-by: Abaci Robot <[email protected]>
> Signed-off-by: Jiapeng Chong <[email protected]>
> ---
> ?fs/ceph/debugfs.c | 4 ++--
> ?1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
> index 66989c8..617327e 100644
> --- a/fs/ceph/debugfs.c
> +++ b/fs/ceph/debugfs.c
> @@ -344,8 +344,8 @@ static int congestion_kb_get(void *data, u64 *val)
> ? return 0;
> ?}
> ?
>
> -DEFINE_SIMPLE_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> - congestion_kb_set, "%llu\n");
> +DEFINE_DEBUGFS_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> + congestion_kb_set, "%llu\n");
> ?
>
> ?
>
> ?void ceph_fs_debugfs_cleanup(struct ceph_fs_client *fsc)

Looks reasonable. Merged into ceph-client/testing branch.

Thanks!
--
Jeff Layton <[email protected]>

2021-02-02 12:12:23

by Ilya Dryomov

[permalink] [raw]
Subject: Re: [PATCH] ceph: Replace DEFINE_SIMPLE_ATTRIBUTE with DEFINE_DEBUGFS_ATTRIBUTE

On Mon, Feb 1, 2021 at 8:52 AM Jiapeng Chong
<[email protected]> wrote:
>
> Fix the following coccicheck warning:
>
> ./fs/ceph/debugfs.c:347:0-23: WARNING: congestion_kb_fops should be
> defined with DEFINE_DEBUGFS_ATTRIBUTE.
>
> Reported-by: Abaci Robot <[email protected]>
> Signed-off-by: Jiapeng Chong <[email protected]>
> ---
> fs/ceph/debugfs.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
> index 66989c8..617327e 100644
> --- a/fs/ceph/debugfs.c
> +++ b/fs/ceph/debugfs.c
> @@ -344,8 +344,8 @@ static int congestion_kb_get(void *data, u64 *val)
> return 0;
> }
>
> -DEFINE_SIMPLE_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> - congestion_kb_set, "%llu\n");
> +DEFINE_DEBUGFS_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> + congestion_kb_set, "%llu\n");
>
>
> void ceph_fs_debugfs_cleanup(struct ceph_fs_client *fsc)

Hi Jiapeng,

What is the benefit of this conversion?

From a quick look, with DEFINE_DEBUGFS_ATTRIBUTE writeback_congestion_kb
file would no longer be seekable. It may not matter much, but something
that should have been mentioned.

Futher, debugfs_create_file() creates a full proxy for fops, protecting
against removal races. DEFINE_DEBUGFS_ATTRIBUTE adds its own protection
but just for ->read() and ->write(). I don't think we need both.

Thanks,

Ilya

2021-02-02 21:29:02

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH] ceph: Replace DEFINE_SIMPLE_ATTRIBUTE with DEFINE_DEBUGFS_ATTRIBUTE

On Tue, 2021-02-02 at 13:07 +0100, Ilya Dryomov wrote:
> On Mon, Feb 1, 2021 at 8:52 AM Jiapeng Chong
> <[email protected]> wrote:
> >
> > Fix the following coccicheck warning:
> >
> > ./fs/ceph/debugfs.c:347:0-23: WARNING: congestion_kb_fops should be
> > defined with DEFINE_DEBUGFS_ATTRIBUTE.
> >
> > Reported-by: Abaci Robot <[email protected]>
> > Signed-off-by: Jiapeng Chong <[email protected]>
> > ---
> > ?fs/ceph/debugfs.c | 4 ++--
> > ?1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
> > index 66989c8..617327e 100644
> > --- a/fs/ceph/debugfs.c
> > +++ b/fs/ceph/debugfs.c
> > @@ -344,8 +344,8 @@ static int congestion_kb_get(void *data, u64 *val)
> > ????????return 0;
> > ?}
> >
> > -DEFINE_SIMPLE_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> > - congestion_kb_set, "%llu\n");
> > +DEFINE_DEBUGFS_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> > + congestion_kb_set, "%llu\n");
> >
> >
> > ?void ceph_fs_debugfs_cleanup(struct ceph_fs_client *fsc)
>
> Hi Jiapeng,
>
> What is the benefit of this conversion?
>
> From a quick look, with DEFINE_DEBUGFS_ATTRIBUTE writeback_congestion_kb
> file would no longer be seekable. It may not matter much, but something
> that should have been mentioned.
>
> Futher, debugfs_create_file() creates a full proxy for fops, protecting
> against removal races. DEFINE_DEBUGFS_ATTRIBUTE adds its own protection
> but just for ->read() and ->write(). I don't think we need both.
>


The coccinelle script clarifies some of this. See the commit log here:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5103068eaca290f890a30aae70085fac44cecaf6

That said, it also mentions that the file should be converted to use
debugfs_create_file_unsafe now as well, and that wasn't done in this
patch. Jiapeng, was that intentional? If so, why?

--
Jeff Layton <[email protected]>

2021-02-02 22:50:12

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH] ceph: Replace DEFINE_SIMPLE_ATTRIBUTE with DEFINE_DEBUGFS_ATTRIBUTE

On Tue, 2021-02-02 at 07:45 -0500, Jeff Layton wrote:
> On Tue, 2021-02-02 at 13:07 +0100, Ilya Dryomov wrote:
> > On Mon, Feb 1, 2021 at 8:52 AM Jiapeng Chong
> > <[email protected]> wrote:
> > >
> > > Fix the following coccicheck warning:
> > >
> > > ./fs/ceph/debugfs.c:347:0-23: WARNING: congestion_kb_fops should be
> > > defined with DEFINE_DEBUGFS_ATTRIBUTE.
> > >
> > > Reported-by: Abaci Robot <[email protected]>
> > > Signed-off-by: Jiapeng Chong <[email protected]>
> > > ---
> > > ?fs/ceph/debugfs.c | 4 ++--
> > > ?1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/fs/ceph/debugfs.c b/fs/ceph/debugfs.c
> > > index 66989c8..617327e 100644
> > > --- a/fs/ceph/debugfs.c
> > > +++ b/fs/ceph/debugfs.c
> > > @@ -344,8 +344,8 @@ static int congestion_kb_get(void *data, u64 *val)
> > > ????????return 0;
> > > ?}
> > >
> > > -DEFINE_SIMPLE_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> > > - congestion_kb_set, "%llu\n");
> > > +DEFINE_DEBUGFS_ATTRIBUTE(congestion_kb_fops, congestion_kb_get,
> > > + congestion_kb_set, "%llu\n");
> > >
> > >
> > > ?void ceph_fs_debugfs_cleanup(struct ceph_fs_client *fsc)
> >
> > Hi Jiapeng,
> >
> > What is the benefit of this conversion?
> >
> > From a quick look, with DEFINE_DEBUGFS_ATTRIBUTE writeback_congestion_kb
> > file would no longer be seekable. It may not matter much, but something
> > that should have been mentioned.
> >
> > Futher, debugfs_create_file() creates a full proxy for fops, protecting
> > against removal races. DEFINE_DEBUGFS_ATTRIBUTE adds its own protection
> > but just for ->read() and ->write(). I don't think we need both.
> >
>
>
> The coccinelle script clarifies some of this. See the commit log here:
>
> ????https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5103068eaca290f890a30aae70085fac44cecaf6
>
> That said, it also mentions that the file should be converted to use
> debugfs_create_file_unsafe now as well, and that wasn't done in this
> patch. Jiapeng, was that intentional? If so, why?
>

For now, I've dropped this patch until the situation with
debugfs_create_file_unsafe is clear.
--
Jeff Layton <[email protected]>