aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/super.c
diff options
context:
space:
mode:
authorKeith Mok <ek9852@gmail.com>2016-03-02 15:04:24 -0500
committerJaegeuk Kim <jaegeuk@kernel.org>2016-03-18 00:19:43 -0400
commit43b6573bac95d7cc8a7fb51efe8468c994f5cf56 (patch)
tree646cd760526d55dcfe0dc471f069021332a2b862 /fs/f2fs/super.c
parent999270de31138f1ae41743a856911f8e5e114264 (diff)
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>
Diffstat (limited to 'fs/f2fs/super.c')
-rw-r--r--fs/f2fs/super.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 7b62016e66cd..15bb81f8dac2 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -590,6 +590,8 @@ static void f2fs_put_super(struct super_block *sb)
590 wait_for_completion(&sbi->s_kobj_unregister); 590 wait_for_completion(&sbi->s_kobj_unregister);
591 591
592 sb->s_fs_info = NULL; 592 sb->s_fs_info = NULL;
593 if (sbi->s_chksum_driver)
594 crypto_free_shash(sbi->s_chksum_driver);
593 kfree(sbi->raw_super); 595 kfree(sbi->raw_super);
594 kfree(sbi); 596 kfree(sbi);
595} 597}
@@ -1310,6 +1312,15 @@ try_onemore:
1310 if (!sbi) 1312 if (!sbi)
1311 return -ENOMEM; 1313 return -ENOMEM;
1312 1314
1315 /* Load the checksum driver */
1316 sbi->s_chksum_driver = crypto_alloc_shash("crc32", 0, 0);
1317 if (IS_ERR(sbi->s_chksum_driver)) {
1318 f2fs_msg(sb, KERN_ERR, "Cannot load crc32 driver.");
1319 err = PTR_ERR(sbi->s_chksum_driver);
1320 sbi->s_chksum_driver = NULL;
1321 goto free_sbi;
1322 }
1323
1313 /* set a block size */ 1324 /* set a block size */
1314 if (unlikely(!sb_set_blocksize(sb, F2FS_BLKSIZE))) { 1325 if (unlikely(!sb_set_blocksize(sb, F2FS_BLKSIZE))) {
1315 f2fs_msg(sb, KERN_ERR, "unable to set blocksize"); 1326 f2fs_msg(sb, KERN_ERR, "unable to set blocksize");
@@ -1568,6 +1579,8 @@ free_options:
1568free_sb_buf: 1579free_sb_buf:
1569 kfree(raw_super); 1580 kfree(raw_super);
1570free_sbi: 1581free_sbi:
1582 if (sbi->s_chksum_driver)
1583 crypto_free_shash(sbi->s_chksum_driver);
1571 kfree(sbi); 1584 kfree(sbi);
1572 1585
1573 /* give only one another chance */ 1586 /* give only one another chance */