tc->block_shift is the shift to get from a sector to the block_size, and it doesn't make any sense to apply that to the block size. Without this I get overflows of the optimal I/O size queue limit when using large block sizes in dm-thinp. Signed-off-by: Christoph Hellwig <hch@xxxxxx> Index: linux-2.6/drivers/md/dm-thin-prov.c =================================================================== --- linux-2.6.orig/drivers/md/dm-thin-prov.c 2011-04-27 15:30:22.798345522 +0200 +++ linux-2.6/drivers/md/dm-thin-prov.c 2011-04-27 15:30:49.084869781 +0200 @@ -641,7 +641,7 @@ thinp_io_hints(struct dm_target *ti, str struct thinp_c *tc = ti->private; blk_limits_io_min(limits, 0); - blk_limits_io_opt(limits, tc->block_size << tc->block_shift); + blk_limits_io_opt(limits, tc->block_size); } static int thinp_iterate_devices(struct dm_target *ti, -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel