|
@@ -506,14 +506,13 @@ void dm_set_device_limits(struct dm_target *ti, struct block_device *bdev)
|
|
|
rs->max_sectors =
|
|
|
min_not_zero(rs->max_sectors, q->max_sectors);
|
|
|
|
|
|
- /* FIXME: Device-Mapper on top of RAID-0 breaks because DM
|
|
|
- * currently doesn't honor MD's merge_bvec_fn routine.
|
|
|
- * In this case, we'll force DM to use PAGE_SIZE or
|
|
|
- * smaller I/O, just to be safe. A better fix is in the
|
|
|
- * works, but add this for the time being so it will at
|
|
|
- * least operate correctly.
|
|
|
+ /*
|
|
|
+ * Check if merge fn is supported.
|
|
|
+ * If not we'll force DM to use PAGE_SIZE or
|
|
|
+ * smaller I/O, just to be safe.
|
|
|
*/
|
|
|
- if (q->merge_bvec_fn)
|
|
|
+
|
|
|
+ if (q->merge_bvec_fn && !ti->type->merge)
|
|
|
rs->max_sectors =
|
|
|
min_not_zero(rs->max_sectors,
|
|
|
(unsigned int) (PAGE_SIZE >> 9));
|