···172 disk_stack_limits(mddev->gendisk, rdev->bdev,173 rdev->data_offset << 9);174 /* as we don't honour merge_bvec_fn, we must never risk175- * violating it, so limit ->max_sector to one PAGE, as176- * a one page request is never in violation.177 */178- if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&179- queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))180- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);00181182 conf->array_sectors += rdev->sectors;183 cnt++;
···172 disk_stack_limits(mddev->gendisk, rdev->bdev,173 rdev->data_offset << 9);174 /* as we don't honour merge_bvec_fn, we must never risk175+ * violating it, so limit max_segments to 1 lying within176+ * a single page.177 */178+ if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {179+ blk_queue_max_segments(mddev->queue, 1);180+ blk_queue_segment_boundary(mddev->queue,181+ PAGE_CACHE_SIZE - 1);182+ }183184 conf->array_sectors += rdev->sectors;185 cnt++;
+12-8
drivers/md/multipath.c
···301 rdev->data_offset << 9);302303 /* as we don't honour merge_bvec_fn, we must never risk304- * violating it, so limit ->max_sector to one PAGE, as305- * a one page request is never in violation.306 * (Note: it is very unlikely that a device with307 * merge_bvec_fn will be involved in multipath.)308 */309- if (q->merge_bvec_fn &&310- queue_max_sectors(q) > (PAGE_SIZE>>9))311- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);00312313 conf->working_disks++;314 mddev->degraded--;···478 /* as we don't honour merge_bvec_fn, we must never risk479 * violating it, not that we ever expect a device with480 * a merge_bvec_fn to be involved in multipath */481- if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&482- queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))483- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);00484485 if (!test_bit(Faulty, &rdev->flags))486 conf->working_disks++;
···301 rdev->data_offset << 9);302303 /* as we don't honour merge_bvec_fn, we must never risk304+ * violating it, so limit ->max_segments to one, lying305+ * within a single page.306 * (Note: it is very unlikely that a device with307 * merge_bvec_fn will be involved in multipath.)308 */309+ if (q->merge_bvec_fn) {310+ blk_queue_max_segments(mddev->queue, 1);311+ blk_queue_segment_boundary(mddev->queue,312+ PAGE_CACHE_SIZE - 1);313+ }314315 conf->working_disks++;316 mddev->degraded--;···476 /* as we don't honour merge_bvec_fn, we must never risk477 * violating it, not that we ever expect a device with478 * a merge_bvec_fn to be involved in multipath */479+ if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {480+ blk_queue_max_segments(mddev->queue, 1);481+ blk_queue_segment_boundary(mddev->queue,482+ PAGE_CACHE_SIZE - 1);483+ }484485 if (!test_bit(Faulty, &rdev->flags))486 conf->working_disks++;
+7-6
drivers/md/raid0.c
···176 disk_stack_limits(mddev->gendisk, rdev1->bdev,177 rdev1->data_offset << 9);178 /* as we don't honour merge_bvec_fn, we must never risk179- * violating it, so limit ->max_sector to one PAGE, as180- * a one page request is never in violation.181 */182183- if (rdev1->bdev->bd_disk->queue->merge_bvec_fn &&184- queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))185- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);186-0187 if (!smallest || (rdev1->sectors < smallest->sectors))188 smallest = rdev1;189 cnt++;
···176 disk_stack_limits(mddev->gendisk, rdev1->bdev,177 rdev1->data_offset << 9);178 /* as we don't honour merge_bvec_fn, we must never risk179+ * violating it, so limit ->max_segments to 1, lying within180+ * a single page.181 */182183+ if (rdev1->bdev->bd_disk->queue->merge_bvec_fn) {184+ blk_queue_max_segments(mddev->queue, 1);185+ blk_queue_segment_boundary(mddev->queue,186+ PAGE_CACHE_SIZE - 1);187+ }188 if (!smallest || (rdev1->sectors < smallest->sectors))189 smallest = rdev1;190 cnt++;
+17-11
drivers/md/raid1.c
···11521153 disk_stack_limits(mddev->gendisk, rdev->bdev,1154 rdev->data_offset << 9);1155- /* as we don't honour merge_bvec_fn, we must never risk1156- * violating it, so limit ->max_sector to one PAGE, as1157- * a one page request is never in violation.001158 */1159- if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&1160- queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))1161- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);0011621163 p->head_position = 0;1164 rdev->raid_disk = mirror;···2102 disk_stack_limits(mddev->gendisk, rdev->bdev,2103 rdev->data_offset << 9);2104 /* as we don't honour merge_bvec_fn, we must never risk2105- * violating it, so limit ->max_sector to one PAGE, as2106- * a one page request is never in violation.2107 */2108- if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&2109- queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))2110- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);002111 }21122113 mddev->degraded = 0;
···11521153 disk_stack_limits(mddev->gendisk, rdev->bdev,1154 rdev->data_offset << 9);1155+ /* as we don't honour merge_bvec_fn, we must1156+ * never risk violating it, so limit1157+ * ->max_segments to one lying with a single1158+ * page, as a one page request is never in1159+ * violation.1160 */1161+ if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {1162+ blk_queue_max_segments(mddev->queue, 1);1163+ blk_queue_segment_boundary(mddev->queue,1164+ PAGE_CACHE_SIZE - 1);1165+ }11661167 p->head_position = 0;1168 rdev->raid_disk = mirror;···2098 disk_stack_limits(mddev->gendisk, rdev->bdev,2099 rdev->data_offset << 9);2100 /* as we don't honour merge_bvec_fn, we must never risk2101+ * violating it, so limit ->max_segments to 1 lying within2102+ * a single page, as a one page request is never in violation.2103 */2104+ if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {2105+ blk_queue_max_segments(mddev->queue, 1);2106+ blk_queue_segment_boundary(mddev->queue,2107+ PAGE_CACHE_SIZE - 1);2108+ }2109 }21102111 mddev->degraded = 0;
+17-11
drivers/md/raid10.c
···11551156 disk_stack_limits(mddev->gendisk, rdev->bdev,1157 rdev->data_offset << 9);1158- /* as we don't honour merge_bvec_fn, we must never risk1159- * violating it, so limit ->max_sector to one PAGE, as1160- * a one page request is never in violation.001161 */1162- if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&1163- queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))1164- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);0011651166 p->head_position = 0;1167 rdev->raid_disk = mirror;···2259 disk_stack_limits(mddev->gendisk, rdev->bdev,2260 rdev->data_offset << 9);2261 /* as we don't honour merge_bvec_fn, we must never risk2262- * violating it, so limit ->max_sector to one PAGE, as2263- * a one page request is never in violation.2264 */2265- if (rdev->bdev->bd_disk->queue->merge_bvec_fn &&2266- queue_max_sectors(mddev->queue) > (PAGE_SIZE>>9))2267- blk_queue_max_hw_sectors(mddev->queue, PAGE_SIZE>>9);0022682269 disk->head_position = 0;2270 }
···11551156 disk_stack_limits(mddev->gendisk, rdev->bdev,1157 rdev->data_offset << 9);1158+ /* as we don't honour merge_bvec_fn, we must1159+ * never risk violating it, so limit1160+ * ->max_segments to one lying with a single1161+ * page, as a one page request is never in1162+ * violation.1163 */1164+ if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {1165+ blk_queue_max_segments(mddev->queue, 1);1166+ blk_queue_segment_boundary(mddev->queue,1167+ PAGE_CACHE_SIZE - 1);1168+ }11691170 p->head_position = 0;1171 rdev->raid_disk = mirror;···2255 disk_stack_limits(mddev->gendisk, rdev->bdev,2256 rdev->data_offset << 9);2257 /* as we don't honour merge_bvec_fn, we must never risk2258+ * violating it, so limit max_segments to 1 lying2259+ * within a single page.2260 */2261+ if (rdev->bdev->bd_disk->queue->merge_bvec_fn) {2262+ blk_queue_max_segments(mddev->queue, 1);2263+ blk_queue_segment_boundary(mddev->queue,2264+ PAGE_CACHE_SIZE - 1);2265+ }22662267 disk->head_position = 0;2268 }