f2fs: use cryptoapi crc32 functions
The crc function is done bit by bit. Optimize this by use cryptoapi crc32 function which is backed by h/w acceleration. Signed-off-by: Keith Mok <ek9852@gmail.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
@@ -590,6 +590,8 @@ static void f2fs_put_super(struct super_block *sb)
|
||||
wait_for_completion(&sbi->s_kobj_unregister);
|
||||
|
||||
sb->s_fs_info = NULL;
|
||||
if (sbi->s_chksum_driver)
|
||||
crypto_free_shash(sbi->s_chksum_driver);
|
||||
kfree(sbi->raw_super);
|
||||
kfree(sbi);
|
||||
}
|
||||
@@ -1310,6 +1312,15 @@ try_onemore:
|
||||
if (!sbi)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Load the checksum driver */
|
||||
sbi->s_chksum_driver = crypto_alloc_shash("crc32", 0, 0);
|
||||
if (IS_ERR(sbi->s_chksum_driver)) {
|
||||
f2fs_msg(sb, KERN_ERR, "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_msg(sb, KERN_ERR, "unable to set blocksize");
|
||||
@@ -1568,6 +1579,8 @@ free_options:
|
||||
free_sb_buf:
|
||||
kfree(raw_super);
|
||||
free_sbi:
|
||||
if (sbi->s_chksum_driver)
|
||||
crypto_free_shash(sbi->s_chksum_driver);
|
||||
kfree(sbi);
|
||||
|
||||
/* give only one another chance */
|
||||
|
Reference in New Issue
Block a user