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

From: Jeff Layton
Date: Mon Feb 12 2024 - 07:13:41 EST


On Mon, 2024-02-12 at 12:26 +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> 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 <arnd@xxxxxxxx>
> ---
> 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 <jlayton@xxxxxxxxxx>