xfs: fix unused variable warning in xfs_buf_item_unlock()
diff mbox

Message ID 20170831160458.24886-1-bfoster@redhat.com
State New
Headers show

Commit Message

Brian Foster Aug. 31, 2017, 4:04 p.m. UTC
The ordered variable generates an unused warning on !DEBUG builds.
Separate the initialization of the associated variables from the
declarations to quiet gcc.

Signed-off-by: Brian Foster <bfoster@redhat.com>
---
 fs/xfs/xfs_buf_item.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

Comments

Darrick J. Wong Aug. 31, 2017, 4:41 p.m. UTC | #1
On Thu, Aug 31, 2017 at 12:04:58PM -0400, Brian Foster wrote:
> The ordered variable generates an unused warning on !DEBUG builds.
> Separate the initialization of the associated variables from the
> declarations to quiet gcc.
> 
> Signed-off-by: Brian Foster <bfoster@redhat.com>

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

> ---
>  fs/xfs/xfs_buf_item.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
> index ef2c137..f5d25f5 100644
> --- a/fs/xfs/xfs_buf_item.c
> +++ b/fs/xfs/xfs_buf_item.c
> @@ -567,10 +567,15 @@ xfs_buf_item_unlock(
>  {
>  	struct xfs_buf_log_item	*bip = BUF_ITEM(lip);
>  	struct xfs_buf		*bp = bip->bli_buf;
> -	bool			aborted = !!(lip->li_flags & XFS_LI_ABORTED);
> -	bool			hold = !!(bip->bli_flags & XFS_BLI_HOLD);
> -	bool			dirty = !!(bip->bli_flags & XFS_BLI_DIRTY);
> -	bool			ordered = !!(bip->bli_flags & XFS_BLI_ORDERED);
> +	bool			aborted;
> +	bool			hold;
> +	bool			dirty;
> +	bool			ordered;
> +
> +	aborted = !!(lip->li_flags & XFS_LI_ABORTED);
> +	hold = !!(bip->bli_flags & XFS_BLI_HOLD);
> +	dirty = !!(bip->bli_flags & XFS_BLI_DIRTY);
> +	ordered = !!(bip->bli_flags & XFS_BLI_ORDERED);
>  
>  	/* Clear the buffer's association with this transaction. */
>  	bp->b_transp = NULL;
> -- 
> 2.9.5
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dave Chinner Aug. 31, 2017, 9:52 p.m. UTC | #2
On Thu, Aug 31, 2017 at 09:41:07AM -0700, Darrick J. Wong wrote:
> On Thu, Aug 31, 2017 at 12:04:58PM -0400, Brian Foster wrote:
> > The ordered variable generates an unused warning on !DEBUG builds.
> > Separate the initialization of the associated variables from the
> > declarations to quiet gcc.
> > 
> > Signed-off-by: Brian Foster <bfoster@redhat.com>
> 
> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

And merged before everyone in different timezones has had a chance
to comment. :(

I just built the latest for-next with CONFIG_XFS_DEBUG=n and there's
three set-but-unused warnings, one of which is introduced by this
patch.

fs/xfs/libxfs/xfs_inode_fork.c: In function ¿xfs_iext_realloc_indirect¿:
fs/xfs/libxfs/xfs_inode_fork.c:1503:7: error: variable ¿size¿ set but not used [-Werror=unused-but-set-variable]
  int  size;  /* current indirection array size */
       ^~~~

fs/xfs/xfs_buf_item.c: In function ¿xfs_buf_item_unlock¿:
fs/xfs/xfs_buf_item.c:573:9: error: variable ¿ordered¿ set but not used [-Werror=unused-but-set-variable]
  bool   ordered;
         ^~~~~~~

fs/xfs/xfs_log_recover.c: In function ¿xlog_recover_process_intents¿:
fs/xfs/xfs_log_recover.c:4830:13: error: variable ¿last_lsn¿ set but not used [-Werror=unused-but-set-variable]
  xfs_lsn_t  last_lsn;
             ^~~~~~~~

Yeah, maintainer habits die hard; I'm still patching fs/xfs/Makefile
in my build trees with this:

-ccflags-y += -I$(src)                  # needed for trace events
+ccflags-y += -I$(src) -Werror -Wunused-but-set-variable

Which catches stupid problems like this that will the userspace
libxfs build will trip over when the next merge occurs.

Playing games with declaration/initialisation order to avoid
warnigns just doesn't work.

Cheers,

Dave.
Brian Foster Sept. 1, 2017, 10:24 a.m. UTC | #3
On Fri, Sep 01, 2017 at 07:52:09AM +1000, Dave Chinner wrote:
> On Thu, Aug 31, 2017 at 09:41:07AM -0700, Darrick J. Wong wrote:
> > On Thu, Aug 31, 2017 at 12:04:58PM -0400, Brian Foster wrote:
> > > The ordered variable generates an unused warning on !DEBUG builds.
> > > Separate the initialization of the associated variables from the
> > > declarations to quiet gcc.
> > > 
> > > Signed-off-by: Brian Foster <bfoster@redhat.com>
> > 
> > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
> 
> And merged before everyone in different timezones has had a chance
> to comment. :(
> 
> I just built the latest for-next with CONFIG_XFS_DEBUG=n and there's
> three set-but-unused warnings, one of which is introduced by this
> patch.
> 
> fs/xfs/libxfs/xfs_inode_fork.c: In function ¿xfs_iext_realloc_indirect¿:
> fs/xfs/libxfs/xfs_inode_fork.c:1503:7: error: variable ¿size¿ set but not used [-Werror=unused-but-set-variable]
>   int  size;  /* current indirection array size */
>        ^~~~
> 
> fs/xfs/xfs_buf_item.c: In function ¿xfs_buf_item_unlock¿:
> fs/xfs/xfs_buf_item.c:573:9: error: variable ¿ordered¿ set but not used [-Werror=unused-but-set-variable]
>   bool   ordered;
>          ^~~~~~~
> 
> fs/xfs/xfs_log_recover.c: In function ¿xlog_recover_process_intents¿:
> fs/xfs/xfs_log_recover.c:4830:13: error: variable ¿last_lsn¿ set but not used [-Werror=unused-but-set-variable]
>   xfs_lsn_t  last_lsn;
>              ^~~~~~~~
> 
> Yeah, maintainer habits die hard; I'm still patching fs/xfs/Makefile
> in my build trees with this:
> 
> -ccflags-y += -I$(src)                  # needed for trace events
> +ccflags-y += -I$(src) -Werror -Wunused-but-set-variable
> 
> Which catches stupid problems like this that will the userspace
> libxfs build will trip over when the next merge occurs.
> 

Note that the associated bli code is not shared with userspace, fwiw. We
should probably fix the warnings regardless...

Hmm, I don't see that option enabled in xfsprogs. Is the issue then that
it is more of a default behavior and the kernel disables it somewhere?
After poking around a bit, that appears to be the case. We can run 'make
W=1' to generate these (and more) in the kernel build.

Brian

> Playing games with declaration/initialisation order to avoid
> warnigns just doesn't work.
> 
> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@fromorbit.com
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dave Chinner Sept. 1, 2017, 10:07 p.m. UTC | #4
On Fri, Sep 01, 2017 at 06:24:20AM -0400, Brian Foster wrote:
> On Fri, Sep 01, 2017 at 07:52:09AM +1000, Dave Chinner wrote:
> > On Thu, Aug 31, 2017 at 09:41:07AM -0700, Darrick J. Wong wrote:
> > > On Thu, Aug 31, 2017 at 12:04:58PM -0400, Brian Foster wrote:
> > > > The ordered variable generates an unused warning on !DEBUG builds.
> > > > Separate the initialization of the associated variables from the
> > > > declarations to quiet gcc.
> > > > 
> > > > Signed-off-by: Brian Foster <bfoster@redhat.com>
> > > 
> > > Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
> > 
> > And merged before everyone in different timezones has had a chance
> > to comment. :(
> > 
> > I just built the latest for-next with CONFIG_XFS_DEBUG=n and there's
> > three set-but-unused warnings, one of which is introduced by this
> > patch.
> > 
> > fs/xfs/libxfs/xfs_inode_fork.c: In function ¿xfs_iext_realloc_indirect¿:
> > fs/xfs/libxfs/xfs_inode_fork.c:1503:7: error: variable ¿size¿ set but not used [-Werror=unused-but-set-variable]
> >   int  size;  /* current indirection array size */
> >        ^~~~
> > 
> > fs/xfs/xfs_buf_item.c: In function ¿xfs_buf_item_unlock¿:
> > fs/xfs/xfs_buf_item.c:573:9: error: variable ¿ordered¿ set but not used [-Werror=unused-but-set-variable]
> >   bool   ordered;
> >          ^~~~~~~
> > 
> > fs/xfs/xfs_log_recover.c: In function ¿xlog_recover_process_intents¿:
> > fs/xfs/xfs_log_recover.c:4830:13: error: variable ¿last_lsn¿ set but not used [-Werror=unused-but-set-variable]
> >   xfs_lsn_t  last_lsn;
> >              ^~~~~~~~
> > 
> > Yeah, maintainer habits die hard; I'm still patching fs/xfs/Makefile
> > in my build trees with this:
> > 
> > -ccflags-y += -I$(src)                  # needed for trace events
> > +ccflags-y += -I$(src) -Werror -Wunused-but-set-variable
> > 
> > Which catches stupid problems like this that will the userspace
> > libxfs build will trip over when the next merge occurs.
> > 
> 
> Note that the associated bli code is not shared with userspace, fwiw. We
> should probably fix the warnings regardless...
> 
> Hmm, I don't see that option enabled in xfsprogs. Is the issue then that
> it is more of a default behavior and the kernel disables it somewhere?

Yup, it's default gcc behaviour since early 5.x, IIRC, and the
kernel build disables a bunch of different warnings including this
one.

> After poking around a bit, that appears to be the case. We can run 'make
> W=1' to generate these (and more) in the kernel build.

Oh, yeah, but we don't want to do that by default because the kernel
headers throw huge numbers of warnings (e.g. signed v unsigned char)
that won't ever get fixed.  There's been heat and light expended on
LKML over fixing these warnings in the past, but the only outcome of
those discussion was to add the "-W1" option to allow people who
cared to see all the warnings that don't indicate a problem and
so won't get fixed....

Hence I started adding my own flags for XFS builds so I would avoid
adding code to the kernel that would throw userspace warnings.

Cheers,

Dave.

Patch
diff mbox

diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
index ef2c137..f5d25f5 100644
--- a/fs/xfs/xfs_buf_item.c
+++ b/fs/xfs/xfs_buf_item.c
@@ -567,10 +567,15 @@  xfs_buf_item_unlock(
 {
 	struct xfs_buf_log_item	*bip = BUF_ITEM(lip);
 	struct xfs_buf		*bp = bip->bli_buf;
-	bool			aborted = !!(lip->li_flags & XFS_LI_ABORTED);
-	bool			hold = !!(bip->bli_flags & XFS_BLI_HOLD);
-	bool			dirty = !!(bip->bli_flags & XFS_BLI_DIRTY);
-	bool			ordered = !!(bip->bli_flags & XFS_BLI_ORDERED);
+	bool			aborted;
+	bool			hold;
+	bool			dirty;
+	bool			ordered;
+
+	aborted = !!(lip->li_flags & XFS_LI_ABORTED);
+	hold = !!(bip->bli_flags & XFS_BLI_HOLD);
+	dirty = !!(bip->bli_flags & XFS_BLI_DIRTY);
+	ordered = !!(bip->bli_flags & XFS_BLI_ORDERED);
 
 	/* Clear the buffer's association with this transaction. */
 	bp->b_transp = NULL;