Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm cache: set minimum_io_size to cache's data block size

Before, if the block layer's limit stacking didn't establish an
optimal_io_size that was compatible with the cache's data block size
we'd set optimal_io_size to the data block size and minimum_io_size to 0
(which the block layer adjusts to be physical_block_size).

Update cache_io_hints() to set both minimum_io_size and optimal_io_size
to the cache's data block size. This fixes an issue where mkfs.xfs
would create more XFS Allocation Groups on cache volumes than on a
normal linear LV of comparable size.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>

+1 -1
+1 -1
drivers/md/dm-cache-target.c
··· 3094 3094 */ 3095 3095 if (io_opt_sectors < cache->sectors_per_block || 3096 3096 do_div(io_opt_sectors, cache->sectors_per_block)) { 3097 - blk_limits_io_min(limits, 0); 3097 + blk_limits_io_min(limits, cache->sectors_per_block << SECTOR_SHIFT); 3098 3098 blk_limits_io_opt(limits, cache->sectors_per_block << SECTOR_SHIFT); 3099 3099 } 3100 3100 set_discard_limits(cache, limits);