diff options
Diffstat (limited to 'fs/btrfs/disk-io.c')
| -rw-r--r-- | fs/btrfs/disk-io.c | 14 | 
1 files changed, 14 insertions, 0 deletions
| diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index b53f0e30ce2b..9e1596bb208d 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -2250,6 +2250,20 @@ static int btrfs_init_csum_hash(struct btrfs_fs_info *fs_info, u16 csum_type)  	fs_info->csum_shash = csum_shash; +	/* +	 * Check if the checksum implementation is a fast accelerated one. +	 * As-is this is a bit of a hack and should be replaced once the csum +	 * implementations provide that information themselves. +	 */ +	switch (csum_type) { +	case BTRFS_CSUM_TYPE_CRC32: +		if (!strstr(crypto_shash_driver_name(csum_shash), "generic")) +			set_bit(BTRFS_FS_CSUM_IMPL_FAST, &fs_info->flags); +		break; +	default: +		break; +	} +  	btrfs_info(fs_info, "using %s (%s) checksum algorithm",  			btrfs_super_csum_name(csum_type),  			crypto_shash_driver_name(csum_shash)); |