]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/md/dm-table.c
Merge branch 'release-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/ak...
[linux-2.6-omap-h63xx.git] / drivers / md / dm-table.c
index 73326e7c54bfccbf7ba6122b4252ae003bf75e28..798e468103b879f7986842028709be8852aa3dca 100644 (file)
@@ -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));
@@ -873,13 +872,11 @@ void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q)
        q->max_hw_sectors = t->limits.max_hw_sectors;
        q->seg_boundary_mask = t->limits.seg_boundary_mask;
        q->bounce_pfn = t->limits.bounce_pfn;
-       /* XXX: the below will probably go bug. must ensure there can be no
-        * concurrency on queue_flags, and use the unlocked versions...
-        */
+
        if (t->limits.no_cluster)
-               queue_flag_clear(QUEUE_FLAG_CLUSTER, q);
+               queue_flag_clear_unlocked(QUEUE_FLAG_CLUSTER, q);
        else
-               queue_flag_set(QUEUE_FLAG_CLUSTER, q);
+               queue_flag_set_unlocked(QUEUE_FLAG_CLUSTER, q);
 
 }