1 /* 2 * Functions related to setting various queue properties from drivers 3 */ 4 #include <linux/kernel.h> 5 #include <linux/module.h> 6 #include <linux/init.h> 7 #include <linux/bio.h> 8 #include <linux/blkdev.h> 9 #include <linux/bootmem.h> /* for max_pfn/max_low_pfn */ 10 #include <linux/gcd.h> 11 #include <linux/lcm.h> 12 #include <linux/jiffies.h> 13 #include <linux/gfp.h> 14 15 #include "blk.h" 16 #include "blk-wbt.h" 17 18 unsigned long blk_max_low_pfn; 19 EXPORT_SYMBOL(blk_max_low_pfn); 20 21 unsigned long blk_max_pfn; 22 23 /** 24 * blk_queue_prep_rq - set a prepare_request function for queue 25 * @q: queue 26 * @pfn: prepare_request function 27 * 28 * It's possible for a queue to register a prepare_request callback which 29 * is invoked before the request is handed to the request_fn. The goal of 30 * the function is to prepare a request for I/O, it can be used to build a 31 * cdb from the request data for instance. 32 * 33 */ 34 void blk_queue_prep_rq(struct request_queue *q, prep_rq_fn *pfn) 35 { 36 q->prep_rq_fn = pfn; 37 } 38 EXPORT_SYMBOL(blk_queue_prep_rq); 39 40 /** 41 * blk_queue_unprep_rq - set an unprepare_request function for queue 42 * @q: queue 43 * @ufn: unprepare_request function 44 * 45 * It's possible for a queue to register an unprepare_request callback 46 * which is invoked before the request is finally completed. The goal 47 * of the function is to deallocate any data that was allocated in the 48 * prepare_request callback. 49 * 50 */ 51 void blk_queue_unprep_rq(struct request_queue *q, unprep_rq_fn *ufn) 52 { 53 q->unprep_rq_fn = ufn; 54 } 55 EXPORT_SYMBOL(blk_queue_unprep_rq); 56 57 void blk_queue_softirq_done(struct request_queue *q, softirq_done_fn *fn) 58 { 59 q->softirq_done_fn = fn; 60 } 61 EXPORT_SYMBOL(blk_queue_softirq_done); 62 63 void blk_queue_rq_timeout(struct request_queue *q, unsigned int timeout) 64 { 65 q->rq_timeout = timeout; 66 } 67 EXPORT_SYMBOL_GPL(blk_queue_rq_timeout); 68 69 void blk_queue_rq_timed_out(struct request_queue *q, rq_timed_out_fn *fn) 70 { 71 q->rq_timed_out_fn = fn; 72 } 73 EXPORT_SYMBOL_GPL(blk_queue_rq_timed_out); 74 75 void blk_queue_lld_busy(struct request_queue *q, lld_busy_fn *fn) 76 { 77 q->lld_busy_fn = fn; 78 } 79 EXPORT_SYMBOL_GPL(blk_queue_lld_busy); 80 81 /** 82 * blk_set_default_limits - reset limits to default values 83 * @lim: the queue_limits structure to reset 84 * 85 * Description: 86 * Returns a queue_limit struct to its default state. 87 */ 88 void blk_set_default_limits(struct queue_limits *lim) 89 { 90 lim->max_segments = BLK_MAX_SEGMENTS; 91 lim->max_discard_segments = 1; 92 lim->max_integrity_segments = 0; 93 lim->seg_boundary_mask = BLK_SEG_BOUNDARY_MASK; 94 lim->virt_boundary_mask = 0; 95 lim->max_segment_size = BLK_MAX_SEGMENT_SIZE; 96 lim->max_sectors = lim->max_hw_sectors = BLK_SAFE_MAX_SECTORS; 97 lim->max_dev_sectors = 0; 98 lim->chunk_sectors = 0; 99 lim->max_write_same_sectors = 0; 100 lim->max_write_zeroes_sectors = 0; 101 lim->max_discard_sectors = 0; 102 lim->max_hw_discard_sectors = 0; 103 lim->discard_granularity = 0; 104 lim->discard_alignment = 0; 105 lim->discard_misaligned = 0; 106 lim->logical_block_size = lim->physical_block_size = lim->io_min = 512; 107 lim->bounce_pfn = (unsigned long)(BLK_BOUNCE_ANY >> PAGE_SHIFT); 108 lim->alignment_offset = 0; 109 lim->io_opt = 0; 110 lim->misaligned = 0; 111 lim->cluster = 1; 112 lim->zoned = BLK_ZONED_NONE; 113 } 114 EXPORT_SYMBOL(blk_set_default_limits); 115 116 /** 117 * blk_set_stacking_limits - set default limits for stacking devices 118 * @lim: the queue_limits structure to reset 119 * 120 * Description: 121 * Returns a queue_limit struct to its default state. Should be used 122 * by stacking drivers like DM that have no internal limits. 123 */ 124 void blk_set_stacking_limits(struct queue_limits *lim) 125 { 126 blk_set_default_limits(lim); 127 128 /* Inherit limits from component devices */ 129 lim->max_segments = USHRT_MAX; 130 lim->max_discard_segments = 1; 131 lim->max_hw_sectors = UINT_MAX; 132 lim->max_segment_size = UINT_MAX; 133 lim->max_sectors = UINT_MAX; 134 lim->max_dev_sectors = UINT_MAX; 135 lim->max_write_same_sectors = UINT_MAX; 136 lim->max_write_zeroes_sectors = UINT_MAX; 137 } 138 EXPORT_SYMBOL(blk_set_stacking_limits); 139 140 /** 141 * blk_queue_make_request - define an alternate make_request function for a device 142 * @q: the request queue for the device to be affected 143 * @mfn: the alternate make_request function 144 * 145 * Description: 146 * The normal way for &struct bios to be passed to a device 147 * driver is for them to be collected into requests on a request 148 * queue, and then to allow the device driver to select requests 149 * off that queue when it is ready. This works well for many block 150 * devices. However some block devices (typically virtual devices 151 * such as md or lvm) do not benefit from the processing on the 152 * request queue, and are served best by having the requests passed 153 * directly to them. This can be achieved by providing a function 154 * to blk_queue_make_request(). 155 * 156 * Caveat: 157 * The driver that does this *must* be able to deal appropriately 158 * with buffers in "highmemory". This can be accomplished by either calling 159 * __bio_kmap_atomic() to get a temporary kernel mapping, or by calling 160 * blk_queue_bounce() to create a buffer in normal memory. 161 **/ 162 void blk_queue_make_request(struct request_queue *q, make_request_fn *mfn) 163 { 164 /* 165 * set defaults 166 */ 167 q->nr_requests = BLKDEV_MAX_RQ; 168 169 q->make_request_fn = mfn; 170 blk_queue_dma_alignment(q, 511); 171 blk_queue_congestion_threshold(q); 172 q->nr_batching = BLK_BATCH_REQ; 173 174 blk_set_default_limits(&q->limits); 175 } 176 EXPORT_SYMBOL(blk_queue_make_request); 177 178 /** 179 * blk_queue_bounce_limit - set bounce buffer limit for queue 180 * @q: the request queue for the device 181 * @max_addr: the maximum address the device can handle 182 * 183 * Description: 184 * Different hardware can have different requirements as to what pages 185 * it can do I/O directly to. A low level driver can call 186 * blk_queue_bounce_limit to have lower memory pages allocated as bounce 187 * buffers for doing I/O to pages residing above @max_addr. 188 **/ 189 void blk_queue_bounce_limit(struct request_queue *q, u64 max_addr) 190 { 191 unsigned long b_pfn = max_addr >> PAGE_SHIFT; 192 int dma = 0; 193 194 q->bounce_gfp = GFP_NOIO; 195 #if BITS_PER_LONG == 64 196 /* 197 * Assume anything <= 4GB can be handled by IOMMU. Actually 198 * some IOMMUs can handle everything, but I don't know of a 199 * way to test this here. 200 */ 201 if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) 202 dma = 1; 203 q->limits.bounce_pfn = max(max_low_pfn, b_pfn); 204 #else 205 if (b_pfn < blk_max_low_pfn) 206 dma = 1; 207 q->limits.bounce_pfn = b_pfn; 208 #endif 209 if (dma) { 210 init_emergency_isa_pool(); 211 q->bounce_gfp = GFP_NOIO | GFP_DMA; 212 q->limits.bounce_pfn = b_pfn; 213 } 214 } 215 EXPORT_SYMBOL(blk_queue_bounce_limit); 216 217 /** 218 * blk_queue_max_hw_sectors - set max sectors for a request for this queue 219 * @q: the request queue for the device 220 * @max_hw_sectors: max hardware sectors in the usual 512b unit 221 * 222 * Description: 223 * Enables a low level driver to set a hard upper limit, 224 * max_hw_sectors, on the size of requests. max_hw_sectors is set by 225 * the device driver based upon the capabilities of the I/O 226 * controller. 227 * 228 * max_dev_sectors is a hard limit imposed by the storage device for 229 * READ/WRITE requests. It is set by the disk driver. 230 * 231 * max_sectors is a soft limit imposed by the block layer for 232 * filesystem type requests. This value can be overridden on a 233 * per-device basis in /sys/block/<device>/queue/max_sectors_kb. 234 * The soft limit can not exceed max_hw_sectors. 235 **/ 236 void blk_queue_max_hw_sectors(struct request_queue *q, unsigned int max_hw_sectors) 237 { 238 struct queue_limits *limits = &q->limits; 239 unsigned int max_sectors; 240 241 if ((max_hw_sectors << 9) < PAGE_SIZE) { 242 max_hw_sectors = 1 << (PAGE_SHIFT - 9); 243 printk(KERN_INFO "%s: set to minimum %d\n", 244 __func__, max_hw_sectors); 245 } 246 247 limits->max_hw_sectors = max_hw_sectors; 248 max_sectors = min_not_zero(max_hw_sectors, limits->max_dev_sectors); 249 max_sectors = min_t(unsigned int, max_sectors, BLK_DEF_MAX_SECTORS); 250 limits->max_sectors = max_sectors; 251 q->backing_dev_info->io_pages = max_sectors >> (PAGE_SHIFT - 9); 252 } 253 EXPORT_SYMBOL(blk_queue_max_hw_sectors); 254 255 /** 256 * blk_queue_chunk_sectors - set size of the chunk for this queue 257 * @q: the request queue for the device 258 * @chunk_sectors: chunk sectors in the usual 512b unit 259 * 260 * Description: 261 * If a driver doesn't want IOs to cross a given chunk size, it can set 262 * this limit and prevent merging across chunks. Note that the chunk size 263 * must currently be a power-of-2 in sectors. Also note that the block 264 * layer must accept a page worth of data at any offset. So if the 265 * crossing of chunks is a hard limitation in the driver, it must still be 266 * prepared to split single page bios. 267 **/ 268 void blk_queue_chunk_sectors(struct request_queue *q, unsigned int chunk_sectors) 269 { 270 BUG_ON(!is_power_of_2(chunk_sectors)); 271 q->limits.chunk_sectors = chunk_sectors; 272 } 273 EXPORT_SYMBOL(blk_queue_chunk_sectors); 274 275 /** 276 * blk_queue_max_discard_sectors - set max sectors for a single discard 277 * @q: the request queue for the device 278 * @max_discard_sectors: maximum number of sectors to discard 279 **/ 280 void blk_queue_max_discard_sectors(struct request_queue *q, 281 unsigned int max_discard_sectors) 282 { 283 q->limits.max_hw_discard_sectors = max_discard_sectors; 284 q->limits.max_discard_sectors = max_discard_sectors; 285 } 286 EXPORT_SYMBOL(blk_queue_max_discard_sectors); 287 288 /** 289 * blk_queue_max_write_same_sectors - set max sectors for a single write same 290 * @q: the request queue for the device 291 * @max_write_same_sectors: maximum number of sectors to write per command 292 **/ 293 void blk_queue_max_write_same_sectors(struct request_queue *q, 294 unsigned int max_write_same_sectors) 295 { 296 q->limits.max_write_same_sectors = max_write_same_sectors; 297 } 298 EXPORT_SYMBOL(blk_queue_max_write_same_sectors); 299 300 /** 301 * blk_queue_max_write_zeroes_sectors - set max sectors for a single 302 * write zeroes 303 * @q: the request queue for the device 304 * @max_write_zeroes_sectors: maximum number of sectors to write per command 305 **/ 306 void blk_queue_max_write_zeroes_sectors(struct request_queue *q, 307 unsigned int max_write_zeroes_sectors) 308 { 309 q->limits.max_write_zeroes_sectors = max_write_zeroes_sectors; 310 } 311 EXPORT_SYMBOL(blk_queue_max_write_zeroes_sectors); 312 313 /** 314 * blk_queue_max_segments - set max hw segments for a request for this queue 315 * @q: the request queue for the device 316 * @max_segments: max number of segments 317 * 318 * Description: 319 * Enables a low level driver to set an upper limit on the number of 320 * hw data segments in a request. 321 **/ 322 void blk_queue_max_segments(struct request_queue *q, unsigned short max_segments) 323 { 324 if (!max_segments) { 325 max_segments = 1; 326 printk(KERN_INFO "%s: set to minimum %d\n", 327 __func__, max_segments); 328 } 329 330 q->limits.max_segments = max_segments; 331 } 332 EXPORT_SYMBOL(blk_queue_max_segments); 333 334 /** 335 * blk_queue_max_discard_segments - set max segments for discard requests 336 * @q: the request queue for the device 337 * @max_segments: max number of segments 338 * 339 * Description: 340 * Enables a low level driver to set an upper limit on the number of 341 * segments in a discard request. 342 **/ 343 void blk_queue_max_discard_segments(struct request_queue *q, 344 unsigned short max_segments) 345 { 346 q->limits.max_discard_segments = max_segments; 347 } 348 EXPORT_SYMBOL_GPL(blk_queue_max_discard_segments); 349 350 /** 351 * blk_queue_max_segment_size - set max segment size for blk_rq_map_sg 352 * @q: the request queue for the device 353 * @max_size: max size of segment in bytes 354 * 355 * Description: 356 * Enables a low level driver to set an upper limit on the size of a 357 * coalesced segment 358 **/ 359 void blk_queue_max_segment_size(struct request_queue *q, unsigned int max_size) 360 { 361 if (max_size < PAGE_SIZE) { 362 max_size = PAGE_SIZE; 363 printk(KERN_INFO "%s: set to minimum %d\n", 364 __func__, max_size); 365 } 366 367 q->limits.max_segment_size = max_size; 368 } 369 EXPORT_SYMBOL(blk_queue_max_segment_size); 370 371 /** 372 * blk_queue_logical_block_size - set logical block size for the queue 373 * @q: the request queue for the device 374 * @size: the logical block size, in bytes 375 * 376 * Description: 377 * This should be set to the lowest possible block size that the 378 * storage device can address. The default of 512 covers most 379 * hardware. 380 **/ 381 void blk_queue_logical_block_size(struct request_queue *q, unsigned short size) 382 { 383 q->limits.logical_block_size = size; 384 385 if (q->limits.physical_block_size < size) 386 q->limits.physical_block_size = size; 387 388 if (q->limits.io_min < q->limits.physical_block_size) 389 q->limits.io_min = q->limits.physical_block_size; 390 } 391 EXPORT_SYMBOL(blk_queue_logical_block_size); 392 393 /** 394 * blk_queue_physical_block_size - set physical block size for the queue 395 * @q: the request queue for the device 396 * @size: the physical block size, in bytes 397 * 398 * Description: 399 * This should be set to the lowest possible sector size that the 400 * hardware can operate on without reverting to read-modify-write 401 * operations. 402 */ 403 void blk_queue_physical_block_size(struct request_queue *q, unsigned int size) 404 { 405 q->limits.physical_block_size = size; 406 407 if (q->limits.physical_block_size < q->limits.logical_block_size) 408 q->limits.physical_block_size = q->limits.logical_block_size; 409 410 if (q->limits.io_min < q->limits.physical_block_size) 411 q->limits.io_min = q->limits.physical_block_size; 412 } 413 EXPORT_SYMBOL(blk_queue_physical_block_size); 414 415 /** 416 * blk_queue_alignment_offset - set physical block alignment offset 417 * @q: the request queue for the device 418 * @offset: alignment offset in bytes 419 * 420 * Description: 421 * Some devices are naturally misaligned to compensate for things like 422 * the legacy DOS partition table 63-sector offset. Low-level drivers 423 * should call this function for devices whose first sector is not 424 * naturally aligned. 425 */ 426 void blk_queue_alignment_offset(struct request_queue *q, unsigned int offset) 427 { 428 q->limits.alignment_offset = 429 offset & (q->limits.physical_block_size - 1); 430 q->limits.misaligned = 0; 431 } 432 EXPORT_SYMBOL(blk_queue_alignment_offset); 433 434 /** 435 * blk_limits_io_min - set minimum request size for a device 436 * @limits: the queue limits 437 * @min: smallest I/O size in bytes 438 * 439 * Description: 440 * Some devices have an internal block size bigger than the reported 441 * hardware sector size. This function can be used to signal the 442 * smallest I/O the device can perform without incurring a performance 443 * penalty. 444 */ 445 void blk_limits_io_min(struct queue_limits *limits, unsigned int min) 446 { 447 limits->io_min = min; 448 449 if (limits->io_min < limits->logical_block_size) 450 limits->io_min = limits->logical_block_size; 451 452 if (limits->io_min < limits->physical_block_size) 453 limits->io_min = limits->physical_block_size; 454 } 455 EXPORT_SYMBOL(blk_limits_io_min); 456 457 /** 458 * blk_queue_io_min - set minimum request size for the queue 459 * @q: the request queue for the device 460 * @min: smallest I/O size in bytes 461 * 462 * Description: 463 * Storage devices may report a granularity or preferred minimum I/O 464 * size which is the smallest request the device can perform without 465 * incurring a performance penalty. For disk drives this is often the 466 * physical block size. For RAID arrays it is often the stripe chunk 467 * size. A properly aligned multiple of minimum_io_size is the 468 * preferred request size for workloads where a high number of I/O 469 * operations is desired. 470 */ 471 void blk_queue_io_min(struct request_queue *q, unsigned int min) 472 { 473 blk_limits_io_min(&q->limits, min); 474 } 475 EXPORT_SYMBOL(blk_queue_io_min); 476 477 /** 478 * blk_limits_io_opt - set optimal request size for a device 479 * @limits: the queue limits 480 * @opt: smallest I/O size in bytes 481 * 482 * Description: 483 * Storage devices may report an optimal I/O size, which is the 484 * device's preferred unit for sustained I/O. This is rarely reported 485 * for disk drives. For RAID arrays it is usually the stripe width or 486 * the internal track size. A properly aligned multiple of 487 * optimal_io_size is the preferred request size for workloads where 488 * sustained throughput is desired. 489 */ 490 void blk_limits_io_opt(struct queue_limits *limits, unsigned int opt) 491 { 492 limits->io_opt = opt; 493 } 494 EXPORT_SYMBOL(blk_limits_io_opt); 495 496 /** 497 * blk_queue_io_opt - set optimal request size for the queue 498 * @q: the request queue for the device 499 * @opt: optimal request size in bytes 500 * 501 * Description: 502 * Storage devices may report an optimal I/O size, which is the 503 * device's preferred unit for sustained I/O. This is rarely reported 504 * for disk drives. For RAID arrays it is usually the stripe width or 505 * the internal track size. A properly aligned multiple of 506 * optimal_io_size is the preferred request size for workloads where 507 * sustained throughput is desired. 508 */ 509 void blk_queue_io_opt(struct request_queue *q, unsigned int opt) 510 { 511 blk_limits_io_opt(&q->limits, opt); 512 } 513 EXPORT_SYMBOL(blk_queue_io_opt); 514 515 /** 516 * blk_queue_stack_limits - inherit underlying queue limits for stacked drivers 517 * @t: the stacking driver (top) 518 * @b: the underlying device (bottom) 519 **/ 520 void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b) 521 { 522 blk_stack_limits(&t->limits, &b->limits, 0); 523 } 524 EXPORT_SYMBOL(blk_queue_stack_limits); 525 526 /** 527 * blk_stack_limits - adjust queue_limits for stacked devices 528 * @t: the stacking driver limits (top device) 529 * @b: the underlying queue limits (bottom, component device) 530 * @start: first data sector within component device 531 * 532 * Description: 533 * This function is used by stacking drivers like MD and DM to ensure 534 * that all component devices have compatible block sizes and 535 * alignments. The stacking driver must provide a queue_limits 536 * struct (top) and then iteratively call the stacking function for 537 * all component (bottom) devices. The stacking function will 538 * attempt to combine the values and ensure proper alignment. 539 * 540 * Returns 0 if the top and bottom queue_limits are compatible. The 541 * top device's block sizes and alignment offsets may be adjusted to 542 * ensure alignment with the bottom device. If no compatible sizes 543 * and alignments exist, -1 is returned and the resulting top 544 * queue_limits will have the misaligned flag set to indicate that 545 * the alignment_offset is undefined. 546 */ 547 int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, 548 sector_t start) 549 { 550 unsigned int top, bottom, alignment, ret = 0; 551 552 t->max_sectors = min_not_zero(t->max_sectors, b->max_sectors); 553 t->max_hw_sectors = min_not_zero(t->max_hw_sectors, b->max_hw_sectors); 554 t->max_dev_sectors = min_not_zero(t->max_dev_sectors, b->max_dev_sectors); 555 t->max_write_same_sectors = min(t->max_write_same_sectors, 556 b->max_write_same_sectors); 557 t->max_write_zeroes_sectors = min(t->max_write_zeroes_sectors, 558 b->max_write_zeroes_sectors); 559 t->bounce_pfn = min_not_zero(t->bounce_pfn, b->bounce_pfn); 560 561 t->seg_boundary_mask = min_not_zero(t->seg_boundary_mask, 562 b->seg_boundary_mask); 563 t->virt_boundary_mask = min_not_zero(t->virt_boundary_mask, 564 b->virt_boundary_mask); 565 566 t->max_segments = min_not_zero(t->max_segments, b->max_segments); 567 t->max_discard_segments = min_not_zero(t->max_discard_segments, 568 b->max_discard_segments); 569 t->max_integrity_segments = min_not_zero(t->max_integrity_segments, 570 b->max_integrity_segments); 571 572 t->max_segment_size = min_not_zero(t->max_segment_size, 573 b->max_segment_size); 574 575 t->misaligned |= b->misaligned; 576 577 alignment = queue_limit_alignment_offset(b, start); 578 579 /* Bottom device has different alignment. Check that it is 580 * compatible with the current top alignment. 581 */ 582 if (t->alignment_offset != alignment) { 583 584 top = max(t->physical_block_size, t->io_min) 585 + t->alignment_offset; 586 bottom = max(b->physical_block_size, b->io_min) + alignment; 587 588 /* Verify that top and bottom intervals line up */ 589 if (max(top, bottom) % min(top, bottom)) { 590 t->misaligned = 1; 591 ret = -1; 592 } 593 } 594 595 t->logical_block_size = max(t->logical_block_size, 596 b->logical_block_size); 597 598 t->physical_block_size = max(t->physical_block_size, 599 b->physical_block_size); 600 601 t->io_min = max(t->io_min, b->io_min); 602 t->io_opt = lcm_not_zero(t->io_opt, b->io_opt); 603 604 t->cluster &= b->cluster; 605 606 /* Physical block size a multiple of the logical block size? */ 607 if (t->physical_block_size & (t->logical_block_size - 1)) { 608 t->physical_block_size = t->logical_block_size; 609 t->misaligned = 1; 610 ret = -1; 611 } 612 613 /* Minimum I/O a multiple of the physical block size? */ 614 if (t->io_min & (t->physical_block_size - 1)) { 615 t->io_min = t->physical_block_size; 616 t->misaligned = 1; 617 ret = -1; 618 } 619 620 /* Optimal I/O a multiple of the physical block size? */ 621 if (t->io_opt & (t->physical_block_size - 1)) { 622 t->io_opt = 0; 623 t->misaligned = 1; 624 ret = -1; 625 } 626 627 t->raid_partial_stripes_expensive = 628 max(t->raid_partial_stripes_expensive, 629 b->raid_partial_stripes_expensive); 630 631 /* Find lowest common alignment_offset */ 632 t->alignment_offset = lcm_not_zero(t->alignment_offset, alignment) 633 % max(t->physical_block_size, t->io_min); 634 635 /* Verify that new alignment_offset is on a logical block boundary */ 636 if (t->alignment_offset & (t->logical_block_size - 1)) { 637 t->misaligned = 1; 638 ret = -1; 639 } 640 641 /* Discard alignment and granularity */ 642 if (b->discard_granularity) { 643 alignment = queue_limit_discard_alignment(b, start); 644 645 if (t->discard_granularity != 0 && 646 t->discard_alignment != alignment) { 647 top = t->discard_granularity + t->discard_alignment; 648 bottom = b->discard_granularity + alignment; 649 650 /* Verify that top and bottom intervals line up */ 651 if ((max(top, bottom) % min(top, bottom)) != 0) 652 t->discard_misaligned = 1; 653 } 654 655 t->max_discard_sectors = min_not_zero(t->max_discard_sectors, 656 b->max_discard_sectors); 657 t->max_hw_discard_sectors = min_not_zero(t->max_hw_discard_sectors, 658 b->max_hw_discard_sectors); 659 t->discard_granularity = max(t->discard_granularity, 660 b->discard_granularity); 661 t->discard_alignment = lcm_not_zero(t->discard_alignment, alignment) % 662 t->discard_granularity; 663 } 664 665 if (b->chunk_sectors) 666 t->chunk_sectors = min_not_zero(t->chunk_sectors, 667 b->chunk_sectors); 668 669 return ret; 670 } 671 EXPORT_SYMBOL(blk_stack_limits); 672 673 /** 674 * bdev_stack_limits - adjust queue limits for stacked drivers 675 * @t: the stacking driver limits (top device) 676 * @bdev: the component block_device (bottom) 677 * @start: first data sector within component device 678 * 679 * Description: 680 * Merges queue limits for a top device and a block_device. Returns 681 * 0 if alignment didn't change. Returns -1 if adding the bottom 682 * device caused misalignment. 683 */ 684 int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev, 685 sector_t start) 686 { 687 struct request_queue *bq = bdev_get_queue(bdev); 688 689 start += get_start_sect(bdev); 690 691 return blk_stack_limits(t, &bq->limits, start); 692 } 693 EXPORT_SYMBOL(bdev_stack_limits); 694 695 /** 696 * disk_stack_limits - adjust queue limits for stacked drivers 697 * @disk: MD/DM gendisk (top) 698 * @bdev: the underlying block device (bottom) 699 * @offset: offset to beginning of data within component device 700 * 701 * Description: 702 * Merges the limits for a top level gendisk and a bottom level 703 * block_device. 704 */ 705 void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, 706 sector_t offset) 707 { 708 struct request_queue *t = disk->queue; 709 710 if (bdev_stack_limits(&t->limits, bdev, offset >> 9) < 0) { 711 char top[BDEVNAME_SIZE], bottom[BDEVNAME_SIZE]; 712 713 disk_name(disk, 0, top); 714 bdevname(bdev, bottom); 715 716 printk(KERN_NOTICE "%s: Warning: Device %s is misaligned\n", 717 top, bottom); 718 } 719 } 720 EXPORT_SYMBOL(disk_stack_limits); 721 722 /** 723 * blk_queue_dma_pad - set pad mask 724 * @q: the request queue for the device 725 * @mask: pad mask 726 * 727 * Set dma pad mask. 728 * 729 * Appending pad buffer to a request modifies the last entry of a 730 * scatter list such that it includes the pad buffer. 731 **/ 732 void blk_queue_dma_pad(struct request_queue *q, unsigned int mask) 733 { 734 q->dma_pad_mask = mask; 735 } 736 EXPORT_SYMBOL(blk_queue_dma_pad); 737 738 /** 739 * blk_queue_update_dma_pad - update pad mask 740 * @q: the request queue for the device 741 * @mask: pad mask 742 * 743 * Update dma pad mask. 744 * 745 * Appending pad buffer to a request modifies the last entry of a 746 * scatter list such that it includes the pad buffer. 747 **/ 748 void blk_queue_update_dma_pad(struct request_queue *q, unsigned int mask) 749 { 750 if (mask > q->dma_pad_mask) 751 q->dma_pad_mask = mask; 752 } 753 EXPORT_SYMBOL(blk_queue_update_dma_pad); 754 755 /** 756 * blk_queue_dma_drain - Set up a drain buffer for excess dma. 757 * @q: the request queue for the device 758 * @dma_drain_needed: fn which returns non-zero if drain is necessary 759 * @buf: physically contiguous buffer 760 * @size: size of the buffer in bytes 761 * 762 * Some devices have excess DMA problems and can't simply discard (or 763 * zero fill) the unwanted piece of the transfer. They have to have a 764 * real area of memory to transfer it into. The use case for this is 765 * ATAPI devices in DMA mode. If the packet command causes a transfer 766 * bigger than the transfer size some HBAs will lock up if there 767 * aren't DMA elements to contain the excess transfer. What this API 768 * does is adjust the queue so that the buf is always appended 769 * silently to the scatterlist. 770 * 771 * Note: This routine adjusts max_hw_segments to make room for appending 772 * the drain buffer. If you call blk_queue_max_segments() after calling 773 * this routine, you must set the limit to one fewer than your device 774 * can support otherwise there won't be room for the drain buffer. 775 */ 776 int blk_queue_dma_drain(struct request_queue *q, 777 dma_drain_needed_fn *dma_drain_needed, 778 void *buf, unsigned int size) 779 { 780 if (queue_max_segments(q) < 2) 781 return -EINVAL; 782 /* make room for appending the drain */ 783 blk_queue_max_segments(q, queue_max_segments(q) - 1); 784 q->dma_drain_needed = dma_drain_needed; 785 q->dma_drain_buffer = buf; 786 q->dma_drain_size = size; 787 788 return 0; 789 } 790 EXPORT_SYMBOL_GPL(blk_queue_dma_drain); 791 792 /** 793 * blk_queue_segment_boundary - set boundary rules for segment merging 794 * @q: the request queue for the device 795 * @mask: the memory boundary mask 796 **/ 797 void blk_queue_segment_boundary(struct request_queue *q, unsigned long mask) 798 { 799 if (mask < PAGE_SIZE - 1) { 800 mask = PAGE_SIZE - 1; 801 printk(KERN_INFO "%s: set to minimum %lx\n", 802 __func__, mask); 803 } 804 805 q->limits.seg_boundary_mask = mask; 806 } 807 EXPORT_SYMBOL(blk_queue_segment_boundary); 808 809 /** 810 * blk_queue_virt_boundary - set boundary rules for bio merging 811 * @q: the request queue for the device 812 * @mask: the memory boundary mask 813 **/ 814 void blk_queue_virt_boundary(struct request_queue *q, unsigned long mask) 815 { 816 q->limits.virt_boundary_mask = mask; 817 } 818 EXPORT_SYMBOL(blk_queue_virt_boundary); 819 820 /** 821 * blk_queue_dma_alignment - set dma length and memory alignment 822 * @q: the request queue for the device 823 * @mask: alignment mask 824 * 825 * description: 826 * set required memory and length alignment for direct dma transactions. 827 * this is used when building direct io requests for the queue. 828 * 829 **/ 830 void blk_queue_dma_alignment(struct request_queue *q, int mask) 831 { 832 q->dma_alignment = mask; 833 } 834 EXPORT_SYMBOL(blk_queue_dma_alignment); 835 836 /** 837 * blk_queue_update_dma_alignment - update dma length and memory alignment 838 * @q: the request queue for the device 839 * @mask: alignment mask 840 * 841 * description: 842 * update required memory and length alignment for direct dma transactions. 843 * If the requested alignment is larger than the current alignment, then 844 * the current queue alignment is updated to the new value, otherwise it 845 * is left alone. The design of this is to allow multiple objects 846 * (driver, device, transport etc) to set their respective 847 * alignments without having them interfere. 848 * 849 **/ 850 void blk_queue_update_dma_alignment(struct request_queue *q, int mask) 851 { 852 BUG_ON(mask > PAGE_SIZE); 853 854 if (mask > q->dma_alignment) 855 q->dma_alignment = mask; 856 } 857 EXPORT_SYMBOL(blk_queue_update_dma_alignment); 858 859 void blk_queue_flush_queueable(struct request_queue *q, bool queueable) 860 { 861 spin_lock_irq(q->queue_lock); 862 if (queueable) 863 clear_bit(QUEUE_FLAG_FLUSH_NQ, &q->queue_flags); 864 else 865 set_bit(QUEUE_FLAG_FLUSH_NQ, &q->queue_flags); 866 spin_unlock_irq(q->queue_lock); 867 } 868 EXPORT_SYMBOL_GPL(blk_queue_flush_queueable); 869 870 /** 871 * blk_set_queue_depth - tell the block layer about the device queue depth 872 * @q: the request queue for the device 873 * @depth: queue depth 874 * 875 */ 876 void blk_set_queue_depth(struct request_queue *q, unsigned int depth) 877 { 878 q->queue_depth = depth; 879 wbt_set_queue_depth(q->rq_wb, depth); 880 } 881 EXPORT_SYMBOL(blk_set_queue_depth); 882 883 /** 884 * blk_queue_write_cache - configure queue's write cache 885 * @q: the request queue for the device 886 * @wc: write back cache on or off 887 * @fua: device supports FUA writes, if true 888 * 889 * Tell the block layer about the write cache of @q. 890 */ 891 void blk_queue_write_cache(struct request_queue *q, bool wc, bool fua) 892 { 893 spin_lock_irq(q->queue_lock); 894 if (wc) 895 queue_flag_set(QUEUE_FLAG_WC, q); 896 else 897 queue_flag_clear(QUEUE_FLAG_WC, q); 898 if (fua) 899 queue_flag_set(QUEUE_FLAG_FUA, q); 900 else 901 queue_flag_clear(QUEUE_FLAG_FUA, q); 902 spin_unlock_irq(q->queue_lock); 903 904 wbt_set_write_cache(q->rq_wb, test_bit(QUEUE_FLAG_WC, &q->queue_flags)); 905 } 906 EXPORT_SYMBOL_GPL(blk_queue_write_cache); 907 908 static int __init blk_settings_init(void) 909 { 910 blk_max_low_pfn = max_low_pfn - 1; 911 blk_max_pfn = max_pfn - 1; 912 return 0; 913 } 914 subsys_initcall(blk_settings_init); 915