diff options
author | Keith Mok <ek9852@gmail.com> | 2016-03-02 15:04:24 -0500 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2016-03-18 00:19:43 -0400 |
commit | 43b6573bac95d7cc8a7fb51efe8468c994f5cf56 (patch) | |
tree | 646cd760526d55dcfe0dc471f069021332a2b862 /fs/f2fs/super.c | |
parent | 999270de31138f1ae41743a856911f8e5e114264 (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.c | 13 |
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: | |||
1568 | free_sb_buf: | 1579 | free_sb_buf: |
1569 | kfree(raw_super); | 1580 | kfree(raw_super); |
1570 | free_sbi: | 1581 | free_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 */ |