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

Justin Mattock justinmattock at gmail.com
Wed Jan 12 01:26:37 UTC 2011


On Jan 11, 2011, at 1:22 PM, Mike Snitzer wrote:

> 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).
>

right now, I am not running that system(clfs) that this was showing up  
on i.e. built with gcc 4.6.* (august)
What I can do is load that one up(when I have some free time) and see  
if this shows up again with the latest
gcc


>
>> 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

Justin P. Mattock




More information about the dm-devel mailing list