In drivers/md/raid1.c, raid1_sync_request contains the following: block_nr = sector_nr; bsize = 512; while (!(block_nr & 1) && bsize < PAGE_SIZE && (block_nr+2)*(bsize>>9) < (mddev->sb->size *2)) { block_nr >>= 1; bsize <<= 1; } Suppose that a mirror is 4K in size. The code above produces reads (and writes) of the following offsets and sizes: 0K[2K], 2K[1K], 3K[0.5K], 3.5K[0.5K] The above is correct, but it makes the RAID1 completely unuseable on s390, because I/O with sizes less than 4K is not supported. I would like the attached patch applied to correct the issue. -- Pete --- linux-2.4.23/drivers/md/raid1.c 2003-06-13 07:51:34.000000000 -0700 +++ linux-2.4.23-nip/drivers/md/raid1.c 2003-12-19 23:57:57.000000000 -0800 @@ -1436,7 +1436,7 @@ block_nr = sector_nr; bsize = 512; while (!(block_nr & 1) && bsize < PAGE_SIZE - && (block_nr+2)*(bsize>>9) < (mddev->sb->size *2)) { + && (block_nr+2)*(bsize>>9) <= (mddev->sb->size *2)) { block_nr >>= 1; bsize <<= 1; } - To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html