2019-05-14 15:10:53

by Qian Cai

[permalink] [raw]
Subject: [RESEND PATCH] nvdimm: fix some compilation warnings

Several places (dimm_devs.c, core.c etc) include label.h but only
label.c uses NSINDEX_SIGNATURE, so move its definition to label.c
instead.
In file included from drivers/nvdimm/dimm_devs.c:23:
drivers/nvdimm/label.h:41:19: warning: 'NSINDEX_SIGNATURE' defined but
not used [-Wunused-const-variable=]

The commit d9b83c756953 ("libnvdimm, btt: rework error clearing") left
an unused variable.
drivers/nvdimm/btt.c: In function 'btt_read_pg':
drivers/nvdimm/btt.c:1272:8: warning: variable 'rc' set but not used
[-Wunused-but-set-variable]

Last, some places abuse "/**" which is only reserved for the kernel-doc.
drivers/nvdimm/bus.c:648: warning: cannot understand function prototype:
'struct attribute_group nd_device_attribute_group = '
drivers/nvdimm/bus.c:677: warning: cannot understand function prototype:
'struct attribute_group nd_numa_attribute_group = '

Reviewed-by: Vishal Verma <[email protected]>
Signed-off-by: Qian Cai <[email protected]>
---
drivers/nvdimm/btt.c | 6 ++----
drivers/nvdimm/bus.c | 4 ++--
drivers/nvdimm/label.c | 2 ++
drivers/nvdimm/label.h | 2 --
4 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
index 4671776f5623..9f02a99cfac0 100644
--- a/drivers/nvdimm/btt.c
+++ b/drivers/nvdimm/btt.c
@@ -1269,11 +1269,9 @@ static int btt_read_pg(struct btt *btt, struct bio_integrity_payload *bip,

ret = btt_data_read(arena, page, off, postmap, cur_len);
if (ret) {
- int rc;
-
/* Media error - set the e_flag */
- rc = btt_map_write(arena, premap, postmap, 0, 1,
- NVDIMM_IO_ATOMIC);
+ btt_map_write(arena, premap, postmap, 0, 1,
+ NVDIMM_IO_ATOMIC);
goto out_rtt;
}

diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c
index 7ff684159f29..2eb6a6cfe9e4 100644
--- a/drivers/nvdimm/bus.c
+++ b/drivers/nvdimm/bus.c
@@ -642,7 +642,7 @@ static struct attribute *nd_device_attributes[] = {
NULL,
};

-/**
+/*
* nd_device_attribute_group - generic attributes for all devices on an nd bus
*/
struct attribute_group nd_device_attribute_group = {
@@ -671,7 +671,7 @@ static umode_t nd_numa_attr_visible(struct kobject *kobj, struct attribute *a,
return a->mode;
}

-/**
+/*
* nd_numa_attribute_group - NUMA attributes for all devices on an nd bus
*/
struct attribute_group nd_numa_attribute_group = {
diff --git a/drivers/nvdimm/label.c b/drivers/nvdimm/label.c
index f3d753d3169c..02a51b7775e1 100644
--- a/drivers/nvdimm/label.c
+++ b/drivers/nvdimm/label.c
@@ -25,6 +25,8 @@ static guid_t nvdimm_btt2_guid;
static guid_t nvdimm_pfn_guid;
static guid_t nvdimm_dax_guid;

+static const char NSINDEX_SIGNATURE[] = "NAMESPACE_INDEX\0";
+
static u32 best_seq(u32 a, u32 b)
{
a &= NSINDEX_SEQ_MASK;
diff --git a/drivers/nvdimm/label.h b/drivers/nvdimm/label.h
index e9a2ad3c2150..4bb7add39580 100644
--- a/drivers/nvdimm/label.h
+++ b/drivers/nvdimm/label.h
@@ -38,8 +38,6 @@ enum {
ND_NSINDEX_INIT = 0x1,
};

-static const char NSINDEX_SIGNATURE[] = "NAMESPACE_INDEX\0";
-
/**
* struct nd_namespace_index - label set superblock
* @sig: NAMESPACE_INDEX\0
--
2.20.1 (Apple Git-117)


2019-05-15 23:28:56

by Dan Williams

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings

On Tue, May 14, 2019 at 8:08 AM Qian Cai <[email protected]> wrote:
>
> Several places (dimm_devs.c, core.c etc) include label.h but only
> label.c uses NSINDEX_SIGNATURE, so move its definition to label.c
> instead.
> In file included from drivers/nvdimm/dimm_devs.c:23:
> drivers/nvdimm/label.h:41:19: warning: 'NSINDEX_SIGNATURE' defined but
> not used [-Wunused-const-variable=]
>
> The commit d9b83c756953 ("libnvdimm, btt: rework error clearing") left
> an unused variable.
> drivers/nvdimm/btt.c: In function 'btt_read_pg':
> drivers/nvdimm/btt.c:1272:8: warning: variable 'rc' set but not used
> [-Wunused-but-set-variable]
>
> Last, some places abuse "/**" which is only reserved for the kernel-doc.
> drivers/nvdimm/bus.c:648: warning: cannot understand function prototype:
> 'struct attribute_group nd_device_attribute_group = '
> drivers/nvdimm/bus.c:677: warning: cannot understand function prototype:
> 'struct attribute_group nd_numa_attribute_group = '

Can you include the compiler where these errors start appearing, since
I don't see these warnings with gcc-8.3.1

>
> Reviewed-by: Vishal Verma <[email protected]>
> Signed-off-by: Qian Cai <[email protected]>
> ---
> drivers/nvdimm/btt.c | 6 ++----
> drivers/nvdimm/bus.c | 4 ++--
> drivers/nvdimm/label.c | 2 ++
> drivers/nvdimm/label.h | 2 --
> 4 files changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
> index 4671776f5623..9f02a99cfac0 100644
> --- a/drivers/nvdimm/btt.c
> +++ b/drivers/nvdimm/btt.c
> @@ -1269,11 +1269,9 @@ static int btt_read_pg(struct btt *btt, struct bio_integrity_payload *bip,
>
> ret = btt_data_read(arena, page, off, postmap, cur_len);
> if (ret) {
> - int rc;
> -
> /* Media error - set the e_flag */
> - rc = btt_map_write(arena, premap, postmap, 0, 1,
> - NVDIMM_IO_ATOMIC);
> + btt_map_write(arena, premap, postmap, 0, 1,
> + NVDIMM_IO_ATOMIC);
> goto out_rtt;

This doesn't look correct to me, shouldn't we at least be logging that
the bad-block failed to be persistently tracked?

> }
>
> diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c
> index 7ff684159f29..2eb6a6cfe9e4 100644
> --- a/drivers/nvdimm/bus.c
> +++ b/drivers/nvdimm/bus.c
> @@ -642,7 +642,7 @@ static struct attribute *nd_device_attributes[] = {
> NULL,
> };
>
> -/**
> +/*
> * nd_device_attribute_group - generic attributes for all devices on an nd bus
> */
> struct attribute_group nd_device_attribute_group = {
> @@ -671,7 +671,7 @@ static umode_t nd_numa_attr_visible(struct kobject *kobj, struct attribute *a,
> return a->mode;
> }
>
> -/**
> +/*
> * nd_numa_attribute_group - NUMA attributes for all devices on an nd bus
> */

Lets just fix this to be a valid kernel-doc format for a struct.

@@ -672,7 +672,7 @@ static umode_t nd_numa_attr_visible(struct kobject
*kobj, struct attribute *a,
}

/**
- * nd_numa_attribute_group - NUMA attributes for all devices on an nd bus
+ * struct nd_numa_attribute_group - NUMA attributes for all devices
on an nd bus
*/
struct attribute_group nd_numa_attribute_group = {
.attrs = nd_numa_attributes,

> struct attribute_group nd_numa_attribute_group = {
> diff --git a/drivers/nvdimm/label.c b/drivers/nvdimm/label.c
> index f3d753d3169c..02a51b7775e1 100644
> --- a/drivers/nvdimm/label.c
> +++ b/drivers/nvdimm/label.c
> @@ -25,6 +25,8 @@ static guid_t nvdimm_btt2_guid;
> static guid_t nvdimm_pfn_guid;
> static guid_t nvdimm_dax_guid;
>
> +static const char NSINDEX_SIGNATURE[] = "NAMESPACE_INDEX\0";
> +

Looks good to me.

> static u32 best_seq(u32 a, u32 b)
> {
> a &= NSINDEX_SEQ_MASK;
> diff --git a/drivers/nvdimm/label.h b/drivers/nvdimm/label.h
> index e9a2ad3c2150..4bb7add39580 100644
> --- a/drivers/nvdimm/label.h
> +++ b/drivers/nvdimm/label.h
> @@ -38,8 +38,6 @@ enum {
> ND_NSINDEX_INIT = 0x1,
> };
>
> -static const char NSINDEX_SIGNATURE[] = "NAMESPACE_INDEX\0";
> -
> /**
> * struct nd_namespace_index - label set superblock
> * @sig: NAMESPACE_INDEX\0
> --
> 2.20.1 (Apple Git-117)
>

2019-05-16 01:50:15

by Qian Cai

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings


>> }
>>
>> diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c
>> index 7ff684159f29..2eb6a6cfe9e4 100644
>> --- a/drivers/nvdimm/bus.c
>> +++ b/drivers/nvdimm/bus.c
>> @@ -642,7 +642,7 @@ static struct attribute *nd_device_attributes[] = {
>> NULL,
>> };
>>
>> -/**
>> +/*
>> * nd_device_attribute_group - generic attributes for all devices on an nd bus
>> */
>> struct attribute_group nd_device_attribute_group = {
>> @@ -671,7 +671,7 @@ static umode_t nd_numa_attr_visible(struct kobject *kobj, struct attribute *a,
>> return a->mode;
>> }
>>
>> -/**
>> +/*
>> * nd_numa_attribute_group - NUMA attributes for all devices on an nd bus
>> */
>
> Lets just fix this to be a valid kernel-doc format for a struct.
>
> @@ -672,7 +672,7 @@ static umode_t nd_numa_attr_visible(struct kobject
> *kobj, struct attribute *a,
> }
>
> /**
> - * nd_numa_attribute_group - NUMA attributes for all devices on an nd bus
> + * struct nd_numa_attribute_group - NUMA attributes for all devices
> on an nd bus
> */
> struct attribute_group nd_numa_attribute_group = {
> .attrs = nd_numa_attributes,

This won’t work because kernel-doc is to explain a struct definition, but this is a just an assignment.
The "struct attribute_group” kernel-doc is in include/linux/sysfs.h.

2019-05-16 01:50:15

by Qian Cai

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings



> On May 15, 2019, at 7:25 PM, Dan Williams <[email protected]> wrote:
>
> On Tue, May 14, 2019 at 8:08 AM Qian Cai <[email protected]> wrote:
>>
>> Several places (dimm_devs.c, core.c etc) include label.h but only
>> label.c uses NSINDEX_SIGNATURE, so move its definition to label.c
>> instead.
>> In file included from drivers/nvdimm/dimm_devs.c:23:
>> drivers/nvdimm/label.h:41:19: warning: 'NSINDEX_SIGNATURE' defined but
>> not used [-Wunused-const-variable=]
>>
>> The commit d9b83c756953 ("libnvdimm, btt: rework error clearing") left
>> an unused variable.
>> drivers/nvdimm/btt.c: In function 'btt_read_pg':
>> drivers/nvdimm/btt.c:1272:8: warning: variable 'rc' set but not used
>> [-Wunused-but-set-variable]
>>
>> Last, some places abuse "/**" which is only reserved for the kernel-doc.
>> drivers/nvdimm/bus.c:648: warning: cannot understand function prototype:
>> 'struct attribute_group nd_device_attribute_group = '
>> drivers/nvdimm/bus.c:677: warning: cannot understand function prototype:
>> 'struct attribute_group nd_numa_attribute_group = '
>
> Can you include the compiler where these errors start appearing, since
> I don't see these warnings with gcc-8.3.1

This can be reproduced by performing extra compiler checks, i.e, "make W=n”.

2019-05-16 01:50:44

by Verma, Vishal L

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings

On Wed, 2019-05-15 at 16:25 -0700, Dan Williams wrote:
>
> > diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
> > index 4671776f5623..9f02a99cfac0 100644
> > --- a/drivers/nvdimm/btt.c
> > +++ b/drivers/nvdimm/btt.c
> > @@ -1269,11 +1269,9 @@ static int btt_read_pg(struct btt *btt, struct bio_integrity_payload *bip,
> >
> > ret = btt_data_read(arena, page, off, postmap, cur_len);
> > if (ret) {
> > - int rc;
> > -
> > /* Media error - set the e_flag */
> > - rc = btt_map_write(arena, premap, postmap, 0, 1,
> > - NVDIMM_IO_ATOMIC);
> > + btt_map_write(arena, premap, postmap, 0, 1,
> > + NVDIMM_IO_ATOMIC);
> > goto out_rtt;
>
> This doesn't look correct to me, shouldn't we at least be logging that
> the bad-block failed to be persistently tracked?

Yes logging it sounds good to me. Qian, can you include this in your
respin or shall I send a fix for it separately (since we were always
ignoring the failure here regardless of this patch)?


2019-05-16 01:51:25

by Verma, Vishal L

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings


On Wed, 2019-05-15 at 17:26 -0700, Dan Williams wrote:
> On Wed, May 15, 2019 at 5:25 PM Verma, Vishal L
> <[email protected]> wrote:
> > On Wed, 2019-05-15 at 16:25 -0700, Dan Williams wrote:
> > > > diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
> > > > index 4671776f5623..9f02a99cfac0 100644
> > > > --- a/drivers/nvdimm/btt.c
> > > > +++ b/drivers/nvdimm/btt.c
> > > > @@ -1269,11 +1269,9 @@ static int btt_read_pg(struct btt *btt,
> > > > struct bio_integrity_payload *bip,
> > > >
> > > > ret = btt_data_read(arena, page, off, postmap,
> > > > cur_len);
> > > > if (ret) {
> > > > - int rc;
> > > > -
> > > > /* Media error - set the e_flag */
> > > > - rc = btt_map_write(arena, premap,
> > > > postmap, 0, 1,
> > > > - NVDIMM_IO_ATOMIC);
> > > > + btt_map_write(arena, premap, postmap, 0,
> > > > 1,
> > > > + NVDIMM_IO_ATOMIC);
> > > > goto out_rtt;
> > >
> > > This doesn't look correct to me, shouldn't we at least be logging
> > > that
> > > the bad-block failed to be persistently tracked?
> >
> > Yes logging it sounds good to me. Qian, can you include this in your
> > respin or shall I send a fix for it separately (since we were always
> > ignoring the failure here regardless of this patch)?
>
> I think a separate fix for this makes more sense. Likely also needs to
> be a ratelimited message in case a storm of errors is encountered.

Yes good point on rate limiting - I was thinking WARN_ONCE but that
might mask errors for distinct blocks, but a rate limited printk should
work best. I'll prepare a patch.

2019-05-16 01:52:34

by Dan Williams

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings

On Wed, May 15, 2019 at 5:25 PM Verma, Vishal L
<[email protected]> wrote:
>
> On Wed, 2019-05-15 at 16:25 -0700, Dan Williams wrote:
> >
> > > diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
> > > index 4671776f5623..9f02a99cfac0 100644
> > > --- a/drivers/nvdimm/btt.c
> > > +++ b/drivers/nvdimm/btt.c
> > > @@ -1269,11 +1269,9 @@ static int btt_read_pg(struct btt *btt, struct bio_integrity_payload *bip,
> > >
> > > ret = btt_data_read(arena, page, off, postmap, cur_len);
> > > if (ret) {
> > > - int rc;
> > > -
> > > /* Media error - set the e_flag */
> > > - rc = btt_map_write(arena, premap, postmap, 0, 1,
> > > - NVDIMM_IO_ATOMIC);
> > > + btt_map_write(arena, premap, postmap, 0, 1,
> > > + NVDIMM_IO_ATOMIC);
> > > goto out_rtt;
> >
> > This doesn't look correct to me, shouldn't we at least be logging that
> > the bad-block failed to be persistently tracked?
>
> Yes logging it sounds good to me. Qian, can you include this in your
> respin or shall I send a fix for it separately (since we were always
> ignoring the failure here regardless of this patch)?

I think a separate fix for this makes more sense. Likely also needs to
be a ratelimited message in case a storm of errors is encountered.

2019-06-26 21:02:38

by Qian Cai

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings

On Thu, 2019-05-16 at 00:29 +0000, Verma, Vishal L wrote:
> On Wed, 2019-05-15 at 17:26 -0700, Dan Williams wrote:
> > On Wed, May 15, 2019 at 5:25 PM Verma, Vishal L
> > <[email protected]> wrote:
> > > On Wed, 2019-05-15 at 16:25 -0700, Dan Williams wrote:
> > > > > diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
> > > > > index 4671776f5623..9f02a99cfac0 100644
> > > > > --- a/drivers/nvdimm/btt.c
> > > > > +++ b/drivers/nvdimm/btt.c
> > > > > @@ -1269,11 +1269,9 @@ static int btt_read_pg(struct btt *btt,
> > > > > struct bio_integrity_payload *bip,
> > > > >
> > > > >                 ret = btt_data_read(arena, page, off, postmap,
> > > > > cur_len);
> > > > >                 if (ret) {
> > > > > -                       int rc;
> > > > > -
> > > > >                         /* Media error - set the e_flag */
> > > > > -                       rc = btt_map_write(arena, premap,
> > > > > postmap, 0, 1,
> > > > > -                               NVDIMM_IO_ATOMIC);
> > > > > +                       btt_map_write(arena, premap, postmap, 0,
> > > > > 1,
> > > > > +                                     NVDIMM_IO_ATOMIC);
> > > > >                         goto out_rtt;
> > > >
> > > > This doesn't look correct to me, shouldn't we at least be logging
> > > > that
> > > > the bad-block failed to be persistently tracked?
> > >
> > > Yes logging it sounds good to me. Qian, can you include this in your
> > > respin or shall I send a fix for it separately (since we were always
> > > ignoring the failure here regardless of this patch)?
> >
> > I think a separate fix for this makes more sense. Likely also needs to
> > be a ratelimited message in case a storm of errors is encountered.
>
> Yes good point on rate limiting - I was thinking WARN_ONCE but that
> might mask errors for distinct blocks, but a rate limited printk should
> work best. I'll prepare a patch.
>

Verma, are you still working on this? I can still see this warning in the latest
linux-next.

drivers/nvdimm/btt.c: In function 'btt_read_pg':
drivers/nvdimm/btt.c:1272:8: warning: variable 'rc' set but not used
[-Wunused-but-set-variable]

2019-06-26 21:44:05

by Verma, Vishal L

[permalink] [raw]
Subject: Re: [RESEND PATCH] nvdimm: fix some compilation warnings


On Wed, 2019-06-26 at 17:00 -0400, Qian Cai wrote:
>
> Verma, are you still working on this? I can still see this warning in the latest
> linux-next.
>
> drivers/nvdimm/btt.c: In function 'btt_read_pg':
> drivers/nvdimm/btt.c:1272:8: warning: variable 'rc' set but not used
> [-Wunused-but-set-variable]
>
Sorry, this fell off the list. I'll take a look soon, but in the
meanwhile, if a patch were to appear, I'd be happy to review it :)
(i.e. feel free to take a shot at it).

Thanks,
-Vishal