mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
f2fs: switch to using the crc32 library
Now that the crc32() library function takes advantage of architecture-specific optimizations, it is unnecessary to go through the crypto API. Just use crc32(). This is much simpler, and it improves performance due to eliminating the crypto API overhead. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Acked-by: Chao Yu <chao@kernel.org> Link: https://lore.kernel.org/r/20241202010844.144356-19-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@google.com>
This commit is contained in:
parent
dd348f054b
commit
3ca4bec40e
|
|
@ -4,8 +4,7 @@ config F2FS_FS
|
||||||
depends on BLOCK
|
depends on BLOCK
|
||||||
select BUFFER_HEAD
|
select BUFFER_HEAD
|
||||||
select NLS
|
select NLS
|
||||||
select CRYPTO
|
select CRC32
|
||||||
select CRYPTO_CRC32
|
|
||||||
select F2FS_FS_XATTR if FS_ENCRYPTION
|
select F2FS_FS_XATTR if FS_ENCRYPTION
|
||||||
select FS_ENCRYPTION_ALGS if FS_ENCRYPTION
|
select FS_ENCRYPTION_ALGS if FS_ENCRYPTION
|
||||||
select FS_IOMAP
|
select FS_IOMAP
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@
|
||||||
#include <linux/quotaops.h>
|
#include <linux/quotaops.h>
|
||||||
#include <linux/part_stat.h>
|
#include <linux/part_stat.h>
|
||||||
#include <linux/rw_hint.h>
|
#include <linux/rw_hint.h>
|
||||||
#include <crypto/hash.h>
|
|
||||||
|
|
||||||
#include <linux/fscrypt.h>
|
#include <linux/fscrypt.h>
|
||||||
#include <linux/fsverity.h>
|
#include <linux/fsverity.h>
|
||||||
|
|
@ -1768,9 +1767,6 @@ struct f2fs_sb_info {
|
||||||
u64 sectors_written_start;
|
u64 sectors_written_start;
|
||||||
u64 kbytes_written;
|
u64 kbytes_written;
|
||||||
|
|
||||||
/* Reference to checksum algorithm driver via cryptoapi */
|
|
||||||
struct crypto_shash *s_chksum_driver;
|
|
||||||
|
|
||||||
/* Precomputed FS UUID checksum for seeding other checksums */
|
/* Precomputed FS UUID checksum for seeding other checksums */
|
||||||
__u32 s_chksum_seed;
|
__u32 s_chksum_seed;
|
||||||
|
|
||||||
|
|
@ -1948,21 +1944,7 @@ static inline unsigned int f2fs_time_to_wait(struct f2fs_sb_info *sbi,
|
||||||
static inline u32 __f2fs_crc32(struct f2fs_sb_info *sbi, u32 crc,
|
static inline u32 __f2fs_crc32(struct f2fs_sb_info *sbi, u32 crc,
|
||||||
const void *address, unsigned int length)
|
const void *address, unsigned int length)
|
||||||
{
|
{
|
||||||
struct {
|
return crc32(crc, address, length);
|
||||||
struct shash_desc shash;
|
|
||||||
char ctx[4];
|
|
||||||
} desc;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver) != sizeof(desc.ctx));
|
|
||||||
|
|
||||||
desc.shash.tfm = sbi->s_chksum_driver;
|
|
||||||
*(u32 *)desc.ctx = crc;
|
|
||||||
|
|
||||||
err = crypto_shash_update(&desc.shash, address, length);
|
|
||||||
BUG_ON(err);
|
|
||||||
|
|
||||||
return *(u32 *)desc.ctx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u32 f2fs_crc32(struct f2fs_sb_info *sbi, const void *address,
|
static inline u32 f2fs_crc32(struct f2fs_sb_info *sbi, const void *address,
|
||||||
|
|
|
||||||
|
|
@ -1694,8 +1694,6 @@ static void f2fs_put_super(struct super_block *sb)
|
||||||
|
|
||||||
kvfree(sbi->ckpt);
|
kvfree(sbi->ckpt);
|
||||||
|
|
||||||
if (sbi->s_chksum_driver)
|
|
||||||
crypto_free_shash(sbi->s_chksum_driver);
|
|
||||||
kfree(sbi->raw_super);
|
kfree(sbi->raw_super);
|
||||||
|
|
||||||
f2fs_destroy_page_array_cache(sbi);
|
f2fs_destroy_page_array_cache(sbi);
|
||||||
|
|
@ -4466,15 +4464,6 @@ try_onemore:
|
||||||
}
|
}
|
||||||
mutex_init(&sbi->flush_lock);
|
mutex_init(&sbi->flush_lock);
|
||||||
|
|
||||||
/* Load the checksum driver */
|
|
||||||
sbi->s_chksum_driver = crypto_alloc_shash("crc32", 0, 0);
|
|
||||||
if (IS_ERR(sbi->s_chksum_driver)) {
|
|
||||||
f2fs_err(sbi, "Cannot load crc32 driver.");
|
|
||||||
err = PTR_ERR(sbi->s_chksum_driver);
|
|
||||||
sbi->s_chksum_driver = NULL;
|
|
||||||
goto free_sbi;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set a block size */
|
/* set a block size */
|
||||||
if (unlikely(!sb_set_blocksize(sb, F2FS_BLKSIZE))) {
|
if (unlikely(!sb_set_blocksize(sb, F2FS_BLKSIZE))) {
|
||||||
f2fs_err(sbi, "unable to set blocksize");
|
f2fs_err(sbi, "unable to set blocksize");
|
||||||
|
|
@ -4919,8 +4908,6 @@ free_options:
|
||||||
free_sb_buf:
|
free_sb_buf:
|
||||||
kfree(raw_super);
|
kfree(raw_super);
|
||||||
free_sbi:
|
free_sbi:
|
||||||
if (sbi->s_chksum_driver)
|
|
||||||
crypto_free_shash(sbi->s_chksum_driver);
|
|
||||||
kfree(sbi);
|
kfree(sbi);
|
||||||
sb->s_fs_info = NULL;
|
sb->s_fs_info = NULL;
|
||||||
|
|
||||||
|
|
@ -5127,5 +5114,3 @@ module_exit(exit_f2fs_fs)
|
||||||
MODULE_AUTHOR("Samsung Electronics's Praesto Team");
|
MODULE_AUTHOR("Samsung Electronics's Praesto Team");
|
||||||
MODULE_DESCRIPTION("Flash Friendly File System");
|
MODULE_DESCRIPTION("Flash Friendly File System");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_SOFTDEP("pre: crc32");
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user