2024-02-12 11:51:52

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] filelock: ignore 'lock' argument to for_each_file_lock()

From: Arnd Bergmann <[email protected]>

When CONFIG_FILE_LOCKING is disabled, ceph causes a warning about
a variable that is only used insode of the for_each_file_lock()
loop:

fs/ceph/locks.c: In function 'ceph_count_locks':
fs/ceph/locks.c:380:27: error: unused variable 'lock' [-Werror=unused-variable]
380 | struct file_lock *lock;

Rather than working around this in ceph, change the macro definition
to still contain a reference to the variable in order to shut up the
warning.

Fixes: 75cabec0111b ("filelock: add some new helper functions")
Signed-off-by: Arnd Bergmann <[email protected]>
---
include/linux/filelock.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/filelock.h b/include/linux/filelock.h
index aabd4bdf7eba..69290173280a 100644
--- a/include/linux/filelock.h
+++ b/include/linux/filelock.h
@@ -283,7 +283,7 @@ static inline void locks_wake_up(struct file_lock *fl)
{
}

-#define for_each_file_lock(_fl, _head) while(false)
+#define for_each_file_lock(_fl, _head) while((void)_fl, false)

static inline void
locks_free_lock_context(struct inode *inode)
--
2.39.2



2024-02-12 12:13:40

by Jeffrey Layton

[permalink] [raw]
Subject: Re: [PATCH] filelock: ignore 'lock' argument to for_each_file_lock()

On Mon, 2024-02-12 at 12:26 +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]>
>
> When CONFIG_FILE_LOCKING is disabled, ceph causes a warning about
> a variable that is only used insode of the for_each_file_lock()
> loop:
>
> fs/ceph/locks.c: In function 'ceph_count_locks':
> fs/ceph/locks.c:380:27: error: unused variable 'lock' [-Werror=unused-variable]
> 380 | struct file_lock *lock;
>
> Rather than working around this in ceph, change the macro definition
> to still contain a reference to the variable in order to shut up the
> warning.
>
> Fixes: 75cabec0111b ("filelock: add some new helper functions")
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> include/linux/filelock.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/filelock.h b/include/linux/filelock.h
> index aabd4bdf7eba..69290173280a 100644
> --- a/include/linux/filelock.h
> +++ b/include/linux/filelock.h
> @@ -283,7 +283,7 @@ static inline void locks_wake_up(struct file_lock *fl)
> {
> }
>
> -#define for_each_file_lock(_fl, _head) while(false)
> +#define for_each_file_lock(_fl, _head) while((void)_fl, false)
>
> static inline void
> locks_free_lock_context(struct inode *inode)

I had sent a patch early last week for this, but then dropped the ball
on following up. The simpler fix is to just unconditionally define
for_each_file_lock(). It's a macro, so we can just move the "real"
definition outside of the #ifdef.

I'll spin up a patch later today and resend it.

Thanks,
--
Jeff Layton <[email protected]>

2024-02-12 12:36:03

by Christian Brauner

[permalink] [raw]
Subject: Re: [PATCH] filelock: ignore 'lock' argument to for_each_file_lock()

On Mon, Feb 12, 2024 at 12:26:11PM +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]>
>
> When CONFIG_FILE_LOCKING is disabled, ceph causes a warning about
> a variable that is only used insode of the for_each_file_lock()
> loop:
>
> fs/ceph/locks.c: In function 'ceph_count_locks':
> fs/ceph/locks.c:380:27: error: unused variable 'lock' [-Werror=unused-variable]
> 380 | struct file_lock *lock;
>
> Rather than working around this in ceph, change the macro definition
> to still contain a reference to the variable in order to shut up the
> warning.
>
> Fixes: 75cabec0111b ("filelock: add some new helper functions")
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---

Yup, seems good to me.