[dm-devel] [PATCH]md:dm.c Fix warning: statement with no effect

Mike Snitzer snitzer at redhat.com
Tue Jan 11 21:22:32 UTC 2011


On Sun, Aug 01 2010 at  6:23pm -0400,
Justin P. Mattock <justinmattock at gmail.com> wrote:

> On 07/31/2010 12:07 PM, Alasdair G Kergon wrote:
> >On Sat, Jul 31, 2010 at 12:05:04PM -0700, Justin P. Mattock wrote:
> >>haven't heard any feedback on this any ideas?
> >>>Ive noticed that having CONFIG_BLK_DEV_INTEGRITY=n I get warning messages generated by GCC(below)
> >>>    CC      drivers/md/dm.o
> >>>drivers/md/dm.c: In function 'split_bvec':
> >>>drivers/md/dm.c:1117:3: warning: statement with no effect
> >>>drivers/md/dm.c: In function 'clone_bio':
> >>>drivers/md/dm.c:1145:3: warning: statement with no effect
> >
> >I'd suggest hiding it inside the .h files and not trying to scatter #ifdefs
> >throughout the code.
> >
> >Alasdair
> >
> >
> 
> 
> o.k. this ones a bit tricky.. but I did finally get this to build clean.
> below is an updated patch that gets me to build clean. Let me know
> if something other than this should be used.(or if this is a good
> solution then let me know and I'll resend)
> 
> <---cut--->
> 
> When building the kernel with CONFIG_BLK_DEV_INTEGRITY=n everything
> gets sent(if Im reading this correctly) too:
> (line #660 bio.h)
> #else /* CONFIG_BLK_DEV_INTEGRITY */
> 
> #define bio_integrity(a)		(0)
> #define bioset_integrity_create(a, b)	(0)
> #define bio_integrity_prep(a)		(0)
> #define bio_integrity_enabled(a)	(0)
> #define bio_integrity_clone(a, b, c, d)	(0)
> #define bioset_integrity_free(a)	do { } while (0)
> #define bio_integrity_free(a, b)	do { } while (0)
> #define bio_integrity_endio(a, b)	do { } while (0)
> #define bio_integrity_advance(a, b)	do { } while (0)
> #define bio_integrity_trim(a, b, c)	do { } while (0)
> #define bio_integrity_split(a, b, c)	do { } while (0)
> #define bio_integrity_set_tag(a, b, c)	do { } while (0)
> #define bio_integrity_get_tag(a, b, c)	do { } while (0)
> #define bio_integrity_init(a)		do { } while (0)
> 
> changing #else preprocessor to #elif !defined(CONFIG_BLK_DEV_INTEGRITY)
> opposite of #if defined(CONFIG_BLK_DEV_INTEGRITY)
> gets me to build dm.c without the warning message.
> please have a look when you have time and let me know if this is a good
> solution to this.

I'm not seeing any warnings.  My .config has:
# CONFIG_BLK_DEV_INTEGRITY is not set

The bio.h block is:

#if defined(CONFIG_BLK_DEV_INTEGRITY)
...
#else /* CONFIG_BLK_DEV_INTEGRITY */
#define bio_integrity_clone(a, b, c, d)       (0)
#endif

So I'm not seeing why your proposed change matters.  Should already
behave properly (and in practice I'm not seeing any problems).

 
> Signed-off-by: Justin P. Mattock <justinmattock at gmail.com>
> 
> ---
>  include/linux/bio.h |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/bio.h b/include/linux/bio.h
> index 7fc5606..a8259c8 100644
> --- a/include/linux/bio.h
> +++ b/include/linux/bio.h
> @@ -657,7 +657,7 @@ extern int bioset_integrity_create(struct
> bio_set *, int);
>  extern void bioset_integrity_free(struct bio_set *);
>  extern void bio_integrity_init(void);
> 
> -#else /* CONFIG_BLK_DEV_INTEGRITY */
> +#elif !defined(CONFIG_BLK_DEV_INTEGRITY) /* CONFIG_BLK_DEV_INTEGRITY */
> 
>  #define bio_integrity(a)		(0)
>  #define bioset_integrity_create(a, b)	(0)
> -- 1.7.1.rc1.21.gf3bd6
> 
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel




More information about the dm-devel mailing list