2019-07-02 14:50:48

by Yue Haibing

[permalink] [raw]
Subject: [PATCH] btrfs: Fix build error while LIBCRC32C is module

If CONFIG_BTRFS_FS is y and CONFIG_LIBCRC32C is m,
building fails:

fs/btrfs/super.o: In function `btrfs_mount_root':
super.c:(.text+0xb7f9): undefined reference to `crc32c_impl'
fs/btrfs/super.o: In function `init_btrfs_fs':
super.c:(.init.text+0x3465): undefined reference to `crc32c_impl'
fs/btrfs/extent-tree.o: In function `hash_extent_data_ref':
extent-tree.c:(.text+0xe60): undefined reference to `crc32c'
extent-tree.c:(.text+0xe78): undefined reference to `crc32c'
extent-tree.c:(.text+0xe8b): undefined reference to `crc32c'
fs/btrfs/dir-item.o: In function `btrfs_insert_xattr_item':
dir-item.c:(.text+0x291): undefined reference to `crc32c'
fs/btrfs/dir-item.o: In function `btrfs_insert_dir_item':
dir-item.c:(.text+0x429): undefined reference to `crc32c'

Select LIBCRC32C to fix it.

Reported-by: Hulk Robot <[email protected]>
Fixes: d5178578bcd4 ("btrfs: directly call into crypto framework for checksumming")
Signed-off-by: YueHaibing <[email protected]>
---
fs/btrfs/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/btrfs/Kconfig b/fs/btrfs/Kconfig
index 2521a24..df4041d 100644
--- a/fs/btrfs/Kconfig
+++ b/fs/btrfs/Kconfig
@@ -4,6 +4,7 @@ config BTRFS_FS
tristate "Btrfs filesystem support"
select CRYPTO
select CRYPTO_CRC32C
+ select LIBCRC32C
select CRYPTO_SHA256
select ZLIB_INFLATE
select ZLIB_DEFLATE
--
2.7.4



2019-07-04 09:17:22

by Johannes Thumshirn

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix build error while LIBCRC32C is module

Looks good,
Reviewed-by: Johannes Thumshirn <[email protected]>
--
Johannes Thumshirn SUSE Labs Filesystems
[email protected] +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 N?rnberg
GF: Felix Imend?rffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG N?rnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850

2019-07-04 16:35:21

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix build error while LIBCRC32C is module

On Tue, Jul 02, 2019 at 10:39:03PM +0800, YueHaibing wrote:
> If CONFIG_BTRFS_FS is y and CONFIG_LIBCRC32C is m,
> building fails:
>
> fs/btrfs/super.o: In function `btrfs_mount_root':
> super.c:(.text+0xb7f9): undefined reference to `crc32c_impl'
> fs/btrfs/super.o: In function `init_btrfs_fs':
> super.c:(.init.text+0x3465): undefined reference to `crc32c_impl'
> fs/btrfs/extent-tree.o: In function `hash_extent_data_ref':
> extent-tree.c:(.text+0xe60): undefined reference to `crc32c'
> extent-tree.c:(.text+0xe78): undefined reference to `crc32c'
> extent-tree.c:(.text+0xe8b): undefined reference to `crc32c'
> fs/btrfs/dir-item.o: In function `btrfs_insert_xattr_item':
> dir-item.c:(.text+0x291): undefined reference to `crc32c'
> fs/btrfs/dir-item.o: In function `btrfs_insert_dir_item':
> dir-item.c:(.text+0x429): undefined reference to `crc32c'
>
> Select LIBCRC32C to fix it.
>
> Reported-by: Hulk Robot <[email protected]>
> Fixes: d5178578bcd4 ("btrfs: directly call into crypto framework for checksumming")

Thanks, queued for 5.3. I hoped we could reduce the config dependencies
a bit, oh well.