/* If we have specified it via mount option, then use the mount option value. If the value specified at mount time is greater than the blocks per group use the super block value. If the super block value is greater than blocks per group return 0. Allocator needs it be less than blocks per group.  */
static unsigned long ext4_get_stripe_size(struct ext4_sb_info *sbi)
/* If we have specified it via mount option, then use the mount option value. If the value specified at mount time is greater than the blocks per group use the super block value. If the super block value is greater than blocks per group return 0. Allocator needs it be less than blocks per group.  */
static unsigned long ext4_get_stripe_size(struct ext4_sb_info *sbi)
{
	unsigned long stride = le16_to_cpu(sbi->s_es->s_raid_stride);
	unsigned long stripe_width =
			le32_to_cpu(sbi->s_es->s_raid_stripe_width);
	if (sbi->s_stripe && sbi->s_stripe <= sbi->s_blocks_per_group)
		return sbi->s_stripe;
	if (stripe_width <= sbi->s_blocks_per_group)
		return stripe_width;
	if (stride <= sbi->s_blocks_per_group)
		return stride;
	return 0;
}