Message ID | 20190514150735.39625-1-cai@lca.pw (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RESEND] nvdimm: fix some compilation warnings | expand |
On Tue, May 14, 2019 at 8:08 AM Qian Cai <cai@lca.pw> 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 <vishal.l.verma@intel.com> > Signed-off-by: Qian Cai <cai@lca.pw> > --- > 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) >
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)?
On Wed, May 15, 2019 at 5:25 PM Verma, Vishal L <vishal.l.verma@intel.com> 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.
On Wed, 2019-05-15 at 17:26 -0700, Dan Williams wrote: > On Wed, May 15, 2019 at 5:25 PM Verma, Vishal L > <vishal.l.verma@intel.com> 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.
>> } >> >> 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.
> On May 15, 2019, at 7:25 PM, Dan Williams <dan.j.williams@intel.com> wrote: > > On Tue, May 14, 2019 at 8:08 AM Qian Cai <cai@lca.pw> 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”.
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 > > <vishal.l.verma@intel.com> 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]
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
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