On Tue, Dec 10, 2024 at 11:12:07AM -0700, Nathan Chancellor wrote:
> Clang 18 and newer warns (or errors with CONFIG_WERROR=y):
>
> fs/bcachefs/str_hash.c:164:2: error: label followed by a declaration is a
> C23 extension [-Werror,-Wc23-extensions]
> 164 | struct bch_inode_unpacked inode;
> | ^
>
> In Clang 17 and prior, this is an unconditional hard error:
>
> fs/bcachefs/str_hash.c:164:2: error: expected expression
> 164 | struct bch_inode_unpacked inode;
> | ^
> fs/bcachefs/str_hash.c:165:30: error: use of undeclared identifier 'inode'
> 165 | ret = bch2_inode_unpack(k, &inode);
> | ^
> fs/bcachefs/str_hash.c:169:55: error: use of undeclared identifier 'inode'
> 169 | struct bch_hash_info hash2 = bch2_hash_info_init(c, &inode);
> | ^
> fs/bcachefs/str_hash.c:171:40: error: use of undeclared identifier 'inode'
> 171 | ret = repair_inode_hash_info(trans, &inode);
> | ^
>
> Add an empty statement between the label and the declaration to fix the
> warning/error without disturbing the code too much.
This is different than what I would have done, and I like it :)
>
> Fixes: 2519d3b0d656 ("bcachefs: bch2_str_hash_check_key() now checks inode
> hash info")
> Reported-by: kernel test robot <[email protected]>
> Closes:
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Signed-off-by: Nathan Chancellor <[email protected]>
> ---
> If you would prefer to fix this in a different way, just consider this
> an additional report.
> ---
> fs/bcachefs/str_hash.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/bcachefs/str_hash.c b/fs/bcachefs/str_hash.c
> index
> ed3c852fc0befa69fabe90ab83d439986be36b42..f5977c5c67430688c8a2a31fa39115f231d5a167
> 100644
> --- a/fs/bcachefs/str_hash.c
> +++ b/fs/bcachefs/str_hash.c
> @@ -160,7 +160,7 @@ static int check_inode_hash_info_matches_root(struct
> btree_trans *trans, u64 inu
> bch_err(c, "%s(): inum %llu not found", __func__, inum);
> ret = -BCH_ERR_fsck_repair_unimplemented;
> goto err;
> -found:
> +found:;
> struct bch_inode_unpacked inode;
> ret = bch2_inode_unpack(k, &inode);
> if (ret)
>
> ---
> base-commit: dd7d7f29a7c77d02264097e7b42073a902765c49
> change-id: 20241210-bcachefs-fix-declaration-after-label-err-b16b57d634fb
>
> Best regards,
> --
> Nathan Chancellor <[email protected]>
>