From: OGAWA Hirofumi We need to set the hardsect_size of the loop device to that of the real device. 25-akpm/drivers/block/loop.c | 1 + 1 files changed, 1 insertion(+) diff -puN drivers/block/loop.c~loop-fix-hardsect drivers/block/loop.c --- 25/drivers/block/loop.c~loop-fix-hardsect Mon Dec 22 14:08:16 2003 +++ 25-akpm/drivers/block/loop.c Mon Dec 22 14:08:16 2003 @@ -753,6 +753,7 @@ static int loop_set_fd(struct loop_devic blk_queue_max_sectors(lo->lo_queue, q->max_sectors); blk_queue_max_phys_segments(lo->lo_queue,q->max_phys_segments); blk_queue_max_hw_segments(lo->lo_queue, q->max_hw_segments); + blk_queue_hardsect_size(lo->lo_queue, queue_hardsect_size(q)); blk_queue_max_segment_size(lo->lo_queue, q->max_segment_size); blk_queue_segment_boundary(lo->lo_queue, q->seg_boundary_mask); blk_queue_merge_bvec(lo->lo_queue, q->merge_bvec_fn); _