From: Eric Biggers via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: linux-kernel@vger.kernel.org
Cc: linux-arch@vger.kernel.org, linux-s390@vger.kernel.org,
linux-scsi@vger.kernel.org, x86@kernel.org,
linux-mips@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
linux-crypto@vger.kernel.org, loongarch@lists.linux.dev,
sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
linux-ext4@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
Ard Biesheuvel <ardb@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: [f2fs-dev] [PATCH v4 18/19] f2fs: switch to using the crc32 library
Date: Sun, 1 Dec 2024 17:08:43 -0800 [thread overview]
Message-ID: <20241202010844.144356-19-ebiggers@kernel.org> (raw)
In-Reply-To: <20241202010844.144356-1-ebiggers@kernel.org>
From: Eric Biggers <ebiggers@google.com>
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>
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
fs/f2fs/Kconfig | 3 +--
fs/f2fs/f2fs.h | 20 +-------------------
fs/f2fs/super.c | 15 ---------------
3 files changed, 2 insertions(+), 36 deletions(-)
diff --git a/fs/f2fs/Kconfig b/fs/f2fs/Kconfig
index 68a1e23e1557..5916a02fb46d 100644
--- a/fs/f2fs/Kconfig
+++ b/fs/f2fs/Kconfig
@@ -2,12 +2,11 @@
config F2FS_FS
tristate "F2FS filesystem support"
depends on BLOCK
select BUFFER_HEAD
select NLS
- select CRYPTO
- select CRYPTO_CRC32
+ select CRC32
select F2FS_FS_XATTR if FS_ENCRYPTION
select FS_ENCRYPTION_ALGS if FS_ENCRYPTION
select FS_IOMAP
select LZ4_COMPRESS if F2FS_FS_LZ4
select LZ4_DECOMPRESS if F2FS_FS_LZ4
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 6f2cbf4c5740..fd7e9cb6f893 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -22,11 +22,10 @@
#include <linux/bio.h>
#include <linux/blkdev.h>
#include <linux/quotaops.h>
#include <linux/part_stat.h>
#include <linux/rw_hint.h>
-#include <crypto/hash.h>
#include <linux/fscrypt.h>
#include <linux/fsverity.h>
struct pagevec;
@@ -1766,13 +1765,10 @@ struct f2fs_sb_info {
/* For write statistics */
u64 sectors_written_start;
u64 kbytes_written;
- /* Reference to checksum algorithm driver via cryptoapi */
- struct crypto_shash *s_chksum_driver;
-
/* Precomputed FS UUID checksum for seeding other checksums */
__u32 s_chksum_seed;
struct workqueue_struct *post_read_wq; /* post read workqueue */
@@ -1946,25 +1942,11 @@ static inline unsigned int f2fs_time_to_wait(struct f2fs_sb_info *sbi,
* Inline functions
*/
static inline u32 __f2fs_crc32(struct f2fs_sb_info *sbi, u32 crc,
const void *address, unsigned int length)
{
- struct {
- 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;
+ return crc32(crc, address, length);
}
static inline u32 f2fs_crc32(struct f2fs_sb_info *sbi, const void *address,
unsigned int length)
{
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index fc7d463dee15..19b67828ae32 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1692,12 +1692,10 @@ static void f2fs_put_super(struct super_block *sb)
f2fs_destroy_post_read_wq(sbi);
kvfree(sbi->ckpt);
- if (sbi->s_chksum_driver)
- crypto_free_shash(sbi->s_chksum_driver);
kfree(sbi->raw_super);
f2fs_destroy_page_array_cache(sbi);
f2fs_destroy_xattr_caches(sbi);
#ifdef CONFIG_QUOTA
@@ -4464,19 +4462,10 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
INIT_LIST_HEAD(&sbi->inode_list[i]);
spin_lock_init(&sbi->inode_lock[i]);
}
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 */
if (unlikely(!sb_set_blocksize(sb, F2FS_BLKSIZE))) {
f2fs_err(sbi, "unable to set blocksize");
goto free_sbi;
}
@@ -4917,12 +4906,10 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
fscrypt_free_dummy_policy(&F2FS_OPTION(sbi).dummy_enc_policy);
kvfree(options);
free_sb_buf:
kfree(raw_super);
free_sbi:
- if (sbi->s_chksum_driver)
- crypto_free_shash(sbi->s_chksum_driver);
kfree(sbi);
sb->s_fs_info = NULL;
/* give only one another chance */
if (retry_cnt > 0 && skip_recovery) {
@@ -5125,7 +5112,5 @@ module_init(init_f2fs_fs)
module_exit(exit_f2fs_fs)
MODULE_AUTHOR("Samsung Electronics's Praesto Team");
MODULE_DESCRIPTION("Flash Friendly File System");
MODULE_LICENSE("GPL");
-MODULE_SOFTDEP("pre: crc32");
-
--
2.47.1
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2024-12-02 1:10 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-02 1:08 [f2fs-dev] [PATCH v4 00/19] Wire up CRC32 library functions to arch-optimized code Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 01/19] lib/crc32: drop leading underscores from __crc32c_le_base Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 02/19] lib/crc32: improve support for arch-specific overrides Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 03/19] lib/crc32: expose whether the lib is really optimized at runtime Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 04/19] crypto: crc32 - don't unnecessarily register arch algorithms Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 05/19] arm/crc32: expose CRC32 functions through lib Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 06/19] loongarch/crc32: " Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 07/19] mips/crc32: " Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 08/19] powerpc/crc32: " Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 09/19] s390/crc32: " Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 10/19] sparc/crc32: " Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 11/19] x86/crc32: update prototype for crc_pcl() Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 12/19] x86/crc32: update prototype for crc32_pclmul_le_16() Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 13/19] x86/crc32: expose CRC32 functions through lib Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 14/19] bcachefs: Explicitly select CRYPTO from BCACHEFS_FS Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 15/19] lib/crc32: make crc32c() go directly to lib Eric Biggers via Linux-f2fs-devel
2025-10-19 6:08 ` Askar Safin
2025-10-19 8:10 ` Askar Safin
2025-10-19 16:23 ` Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 16/19] ext4: switch to using the crc32c library Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 17/19] jbd2: " Eric Biggers via Linux-f2fs-devel
2024-12-02 1:08 ` Eric Biggers via Linux-f2fs-devel [this message]
2024-12-02 1:08 ` [f2fs-dev] [PATCH v4 19/19] scsi: target: iscsi: " Eric Biggers via Linux-f2fs-devel
2024-12-12 21:37 ` [f2fs-dev] [PATCH v4 00/19] Wire up CRC32 library functions to arch-optimized code Eric Biggers via Linux-f2fs-devel
2025-01-29 0:56 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241202010844.144356-19-ebiggers@kernel.org \
--to=linux-f2fs-devel@lists.sourceforge.net \
--cc=ardb@kernel.org \
--cc=ebiggers@kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=sparclinux@vger.kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).