xfs
[Top] [All Lists]

Re: [PATCH] xfs: remove unused variable warning in xfs_finish_page_write

To: xfs@xxxxxxxxxxx
Subject: Re: [PATCH] xfs: remove unused variable warning in xfs_finish_page_writeback
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Wed, 11 May 2016 11:33:21 -0500
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1462983266-15235-1-git-send-email-cmaiolino@xxxxxxxxxx>
References: <1462983266-15235-1-git-send-email-cmaiolino@xxxxxxxxxx>
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.0

On 5/11/16 11:14 AM, Carlos Maiolino wrote:
> From: Carlos Maiolino <cmaiolino@xxxxxxxxxx>
> 
> Due the initialization of blockmask variable with its definition, gcc issues 
> the
> following warning due an unused variable during compilation time.
> 
> fs/xfs//xfs_aops.c: In function âxfs_finish_page_writebackâ:
> fs/xfs//xfs_aops.c:97:15: warning: unused variable âblockmaskâ
> [-Wunused-variable]
>   unsigned int  blockmask = (1 << inode->i_blkbits) - 1;
>                ^
> Remove this warning by initializing the variable after its definition.
> 
> This change causes no difference in the generated assembly code

Oh, I see.  It's unused on non-debug builds because it's only used
under ASSERT.

Ok, that's a good way to fix it, although there are some scanners
out there (clang?  some gcc?  I don't recall) which will also flag
write-only variables.  It'd be ugly but sometimes I wonder if an
ASSERT_DECL() macro would make some sense.

Or a MASK() macro so we could just do:

#define MASK(nbits) ((1UL << (nbits)) - 1) /* mask with NBITS bits set */

ASSERT((bvec->bv_offset & MASK(inode->i_blkbits)) == 0);

But for now, this is better, and fixes what most people will see,
so fine by me:

Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>

> Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx>
> ---
>  fs/xfs/xfs_aops.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index 40645a4..f4e2d3b 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -94,11 +94,12 @@ xfs_finish_page_writeback(
>       struct bio_vec          *bvec,
>       int                     error)
>  {
> -     unsigned int            blockmask = (1 << inode->i_blkbits) - 1;
> +     unsigned int            blockmask;
>       unsigned int            end = bvec->bv_offset + bvec->bv_len - 1;
>       struct buffer_head      *head, *bh;
>       unsigned int            off = 0;
>  
> +     blockmask = (1 << inode->i_blkbits) - 1;
>       ASSERT(bvec->bv_offset < PAGE_SIZE);
>       ASSERT((bvec->bv_offset & blockmask) == 0);
>       ASSERT(end < PAGE_SIZE);
> 

<Prev in Thread] Current Thread [Next in Thread>