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