1 /* 2 * Copyright (C) 2001, 2002 Sistina Software (UK) Limited. 3 * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. 4 * 5 * This file is released under the GPL. 6 */ 7 8 #include "dm.h" 9 #include "dm-uevent.h" 10 11 #include <linux/init.h> 12 #include <linux/module.h> 13 #include <linux/mutex.h> 14 #include <linux/moduleparam.h> 15 #include <linux/blkpg.h> 16 #include <linux/bio.h> 17 #include <linux/mempool.h> 18 #include <linux/slab.h> 19 #include <linux/idr.h> 20 #include <linux/hdreg.h> 21 #include <linux/delay.h> 22 #include <linux/wait.h> 23 #include <linux/kthread.h> 24 #include <linux/ktime.h> 25 #include <linux/elevator.h> /* for rq_end_sector() */ 26 #include <linux/blk-mq.h> 27 #include <linux/pr.h> 28 29 #include <trace/events/block.h> 30 31 #define DM_MSG_PREFIX "core" 32 33 #ifdef CONFIG_PRINTK 34 /* 35 * ratelimit state to be used in DMXXX_LIMIT(). 36 */ 37 DEFINE_RATELIMIT_STATE(dm_ratelimit_state, 38 DEFAULT_RATELIMIT_INTERVAL, 39 DEFAULT_RATELIMIT_BURST); 40 EXPORT_SYMBOL(dm_ratelimit_state); 41 #endif 42 43 /* 44 * Cookies are numeric values sent with CHANGE and REMOVE 45 * uevents while resuming, removing or renaming the device. 46 */ 47 #define DM_COOKIE_ENV_VAR_NAME "DM_COOKIE" 48 #define DM_COOKIE_LENGTH 24 49 50 static const char *_name = DM_NAME; 51 52 static unsigned int major = 0; 53 static unsigned int _major = 0; 54 55 static DEFINE_IDR(_minor_idr); 56 57 static DEFINE_SPINLOCK(_minor_lock); 58 59 static void do_deferred_remove(struct work_struct *w); 60 61 static DECLARE_WORK(deferred_remove_work, do_deferred_remove); 62 63 static struct workqueue_struct *deferred_remove_workqueue; 64 65 /* 66 * For bio-based dm. 67 * One of these is allocated per bio. 68 */ 69 struct dm_io { 70 struct mapped_device *md; 71 int error; 72 atomic_t io_count; 73 struct bio *bio; 74 unsigned long start_time; 75 spinlock_t endio_lock; 76 struct dm_stats_aux stats_aux; 77 }; 78 79 /* 80 * For request-based dm. 81 * One of these is allocated per request. 82 */ 83 struct dm_rq_target_io { 84 struct mapped_device *md; 85 struct dm_target *ti; 86 struct request *orig, *clone; 87 struct kthread_work work; 88 int error; 89 union map_info info; 90 struct dm_stats_aux stats_aux; 91 unsigned long duration_jiffies; 92 unsigned n_sectors; 93 }; 94 95 /* 96 * For request-based dm - the bio clones we allocate are embedded in these 97 * structs. 98 * 99 * We allocate these with bio_alloc_bioset, using the front_pad parameter when 100 * the bioset is created - this means the bio has to come at the end of the 101 * struct. 102 */ 103 struct dm_rq_clone_bio_info { 104 struct bio *orig; 105 struct dm_rq_target_io *tio; 106 struct bio clone; 107 }; 108 109 union map_info *dm_get_rq_mapinfo(struct request *rq) 110 { 111 if (rq && rq->end_io_data) 112 return &((struct dm_rq_target_io *)rq->end_io_data)->info; 113 return NULL; 114 } 115 EXPORT_SYMBOL_GPL(dm_get_rq_mapinfo); 116 117 #define MINOR_ALLOCED ((void *)-1) 118 119 /* 120 * Bits for the md->flags field. 121 */ 122 #define DMF_BLOCK_IO_FOR_SUSPEND 0 123 #define DMF_SUSPENDED 1 124 #define DMF_FROZEN 2 125 #define DMF_FREEING 3 126 #define DMF_DELETING 4 127 #define DMF_NOFLUSH_SUSPENDING 5 128 #define DMF_DEFERRED_REMOVE 6 129 #define DMF_SUSPENDED_INTERNALLY 7 130 131 /* 132 * A dummy definition to make RCU happy. 133 * struct dm_table should never be dereferenced in this file. 134 */ 135 struct dm_table { 136 int undefined__; 137 }; 138 139 /* 140 * Work processed by per-device workqueue. 141 */ 142 struct mapped_device { 143 struct srcu_struct io_barrier; 144 struct mutex suspend_lock; 145 atomic_t holders; 146 atomic_t open_count; 147 148 /* 149 * The current mapping. 150 * Use dm_get_live_table{_fast} or take suspend_lock for 151 * dereference. 152 */ 153 struct dm_table __rcu *map; 154 155 struct list_head table_devices; 156 struct mutex table_devices_lock; 157 158 unsigned long flags; 159 160 struct request_queue *queue; 161 unsigned type; 162 /* Protect queue and type against concurrent access. */ 163 struct mutex type_lock; 164 165 struct target_type *immutable_target_type; 166 167 struct gendisk *disk; 168 char name[16]; 169 170 void *interface_ptr; 171 172 /* 173 * A list of ios that arrived while we were suspended. 174 */ 175 atomic_t pending[2]; 176 wait_queue_head_t wait; 177 struct work_struct work; 178 struct bio_list deferred; 179 spinlock_t deferred_lock; 180 181 /* 182 * Processing queue (flush) 183 */ 184 struct workqueue_struct *wq; 185 186 /* 187 * io objects are allocated from here. 188 */ 189 mempool_t *io_pool; 190 mempool_t *rq_pool; 191 192 struct bio_set *bs; 193 194 /* 195 * Event handling. 196 */ 197 atomic_t event_nr; 198 wait_queue_head_t eventq; 199 atomic_t uevent_seq; 200 struct list_head uevent_list; 201 spinlock_t uevent_lock; /* Protect access to uevent_list */ 202 203 /* 204 * freeze/thaw support require holding onto a super block 205 */ 206 struct super_block *frozen_sb; 207 struct block_device *bdev; 208 209 /* forced geometry settings */ 210 struct hd_geometry geometry; 211 212 /* kobject and completion */ 213 struct dm_kobject_holder kobj_holder; 214 215 /* zero-length flush that will be cloned and submitted to targets */ 216 struct bio flush_bio; 217 218 /* the number of internal suspends */ 219 unsigned internal_suspend_count; 220 221 struct dm_stats stats; 222 223 struct kthread_worker kworker; 224 struct task_struct *kworker_task; 225 226 /* for request-based merge heuristic in dm_request_fn() */ 227 unsigned seq_rq_merge_deadline_usecs; 228 int last_rq_rw; 229 sector_t last_rq_pos; 230 ktime_t last_rq_start_time; 231 232 /* for blk-mq request-based DM support */ 233 struct blk_mq_tag_set tag_set; 234 bool use_blk_mq; 235 }; 236 237 #ifdef CONFIG_DM_MQ_DEFAULT 238 static bool use_blk_mq = true; 239 #else 240 static bool use_blk_mq = false; 241 #endif 242 243 bool dm_use_blk_mq(struct mapped_device *md) 244 { 245 return md->use_blk_mq; 246 } 247 248 /* 249 * For mempools pre-allocation at the table loading time. 250 */ 251 struct dm_md_mempools { 252 mempool_t *io_pool; 253 mempool_t *rq_pool; 254 struct bio_set *bs; 255 }; 256 257 struct table_device { 258 struct list_head list; 259 atomic_t count; 260 struct dm_dev dm_dev; 261 }; 262 263 #define RESERVED_BIO_BASED_IOS 16 264 #define RESERVED_REQUEST_BASED_IOS 256 265 #define RESERVED_MAX_IOS 1024 266 static struct kmem_cache *_io_cache; 267 static struct kmem_cache *_rq_tio_cache; 268 static struct kmem_cache *_rq_cache; 269 270 /* 271 * Bio-based DM's mempools' reserved IOs set by the user. 272 */ 273 static unsigned reserved_bio_based_ios = RESERVED_BIO_BASED_IOS; 274 275 /* 276 * Request-based DM's mempools' reserved IOs set by the user. 277 */ 278 static unsigned reserved_rq_based_ios = RESERVED_REQUEST_BASED_IOS; 279 280 static unsigned __dm_get_module_param(unsigned *module_param, 281 unsigned def, unsigned max) 282 { 283 unsigned param = ACCESS_ONCE(*module_param); 284 unsigned modified_param = 0; 285 286 if (!param) 287 modified_param = def; 288 else if (param > max) 289 modified_param = max; 290 291 if (modified_param) { 292 (void)cmpxchg(module_param, param, modified_param); 293 param = modified_param; 294 } 295 296 return param; 297 } 298 299 unsigned dm_get_reserved_bio_based_ios(void) 300 { 301 return __dm_get_module_param(&reserved_bio_based_ios, 302 RESERVED_BIO_BASED_IOS, RESERVED_MAX_IOS); 303 } 304 EXPORT_SYMBOL_GPL(dm_get_reserved_bio_based_ios); 305 306 unsigned dm_get_reserved_rq_based_ios(void) 307 { 308 return __dm_get_module_param(&reserved_rq_based_ios, 309 RESERVED_REQUEST_BASED_IOS, RESERVED_MAX_IOS); 310 } 311 EXPORT_SYMBOL_GPL(dm_get_reserved_rq_based_ios); 312 313 static int __init local_init(void) 314 { 315 int r = -ENOMEM; 316 317 /* allocate a slab for the dm_ios */ 318 _io_cache = KMEM_CACHE(dm_io, 0); 319 if (!_io_cache) 320 return r; 321 322 _rq_tio_cache = KMEM_CACHE(dm_rq_target_io, 0); 323 if (!_rq_tio_cache) 324 goto out_free_io_cache; 325 326 _rq_cache = kmem_cache_create("dm_clone_request", sizeof(struct request), 327 __alignof__(struct request), 0, NULL); 328 if (!_rq_cache) 329 goto out_free_rq_tio_cache; 330 331 r = dm_uevent_init(); 332 if (r) 333 goto out_free_rq_cache; 334 335 deferred_remove_workqueue = alloc_workqueue("kdmremove", WQ_UNBOUND, 1); 336 if (!deferred_remove_workqueue) { 337 r = -ENOMEM; 338 goto out_uevent_exit; 339 } 340 341 _major = major; 342 r = register_blkdev(_major, _name); 343 if (r < 0) 344 goto out_free_workqueue; 345 346 if (!_major) 347 _major = r; 348 349 return 0; 350 351 out_free_workqueue: 352 destroy_workqueue(deferred_remove_workqueue); 353 out_uevent_exit: 354 dm_uevent_exit(); 355 out_free_rq_cache: 356 kmem_cache_destroy(_rq_cache); 357 out_free_rq_tio_cache: 358 kmem_cache_destroy(_rq_tio_cache); 359 out_free_io_cache: 360 kmem_cache_destroy(_io_cache); 361 362 return r; 363 } 364 365 static void local_exit(void) 366 { 367 flush_scheduled_work(); 368 destroy_workqueue(deferred_remove_workqueue); 369 370 kmem_cache_destroy(_rq_cache); 371 kmem_cache_destroy(_rq_tio_cache); 372 kmem_cache_destroy(_io_cache); 373 unregister_blkdev(_major, _name); 374 dm_uevent_exit(); 375 376 _major = 0; 377 378 DMINFO("cleaned up"); 379 } 380 381 static int (*_inits[])(void) __initdata = { 382 local_init, 383 dm_target_init, 384 dm_linear_init, 385 dm_stripe_init, 386 dm_io_init, 387 dm_kcopyd_init, 388 dm_interface_init, 389 dm_statistics_init, 390 }; 391 392 static void (*_exits[])(void) = { 393 local_exit, 394 dm_target_exit, 395 dm_linear_exit, 396 dm_stripe_exit, 397 dm_io_exit, 398 dm_kcopyd_exit, 399 dm_interface_exit, 400 dm_statistics_exit, 401 }; 402 403 static int __init dm_init(void) 404 { 405 const int count = ARRAY_SIZE(_inits); 406 407 int r, i; 408 409 for (i = 0; i < count; i++) { 410 r = _inits[i](); 411 if (r) 412 goto bad; 413 } 414 415 return 0; 416 417 bad: 418 while (i--) 419 _exits[i](); 420 421 return r; 422 } 423 424 static void __exit dm_exit(void) 425 { 426 int i = ARRAY_SIZE(_exits); 427 428 while (i--) 429 _exits[i](); 430 431 /* 432 * Should be empty by this point. 433 */ 434 idr_destroy(&_minor_idr); 435 } 436 437 /* 438 * Block device functions 439 */ 440 int dm_deleting_md(struct mapped_device *md) 441 { 442 return test_bit(DMF_DELETING, &md->flags); 443 } 444 445 static int dm_blk_open(struct block_device *bdev, fmode_t mode) 446 { 447 struct mapped_device *md; 448 449 spin_lock(&_minor_lock); 450 451 md = bdev->bd_disk->private_data; 452 if (!md) 453 goto out; 454 455 if (test_bit(DMF_FREEING, &md->flags) || 456 dm_deleting_md(md)) { 457 md = NULL; 458 goto out; 459 } 460 461 dm_get(md); 462 atomic_inc(&md->open_count); 463 out: 464 spin_unlock(&_minor_lock); 465 466 return md ? 0 : -ENXIO; 467 } 468 469 static void dm_blk_close(struct gendisk *disk, fmode_t mode) 470 { 471 struct mapped_device *md; 472 473 spin_lock(&_minor_lock); 474 475 md = disk->private_data; 476 if (WARN_ON(!md)) 477 goto out; 478 479 if (atomic_dec_and_test(&md->open_count) && 480 (test_bit(DMF_DEFERRED_REMOVE, &md->flags))) 481 queue_work(deferred_remove_workqueue, &deferred_remove_work); 482 483 dm_put(md); 484 out: 485 spin_unlock(&_minor_lock); 486 } 487 488 int dm_open_count(struct mapped_device *md) 489 { 490 return atomic_read(&md->open_count); 491 } 492 493 /* 494 * Guarantees nothing is using the device before it's deleted. 495 */ 496 int dm_lock_for_deletion(struct mapped_device *md, bool mark_deferred, bool only_deferred) 497 { 498 int r = 0; 499 500 spin_lock(&_minor_lock); 501 502 if (dm_open_count(md)) { 503 r = -EBUSY; 504 if (mark_deferred) 505 set_bit(DMF_DEFERRED_REMOVE, &md->flags); 506 } else if (only_deferred && !test_bit(DMF_DEFERRED_REMOVE, &md->flags)) 507 r = -EEXIST; 508 else 509 set_bit(DMF_DELETING, &md->flags); 510 511 spin_unlock(&_minor_lock); 512 513 return r; 514 } 515 516 int dm_cancel_deferred_remove(struct mapped_device *md) 517 { 518 int r = 0; 519 520 spin_lock(&_minor_lock); 521 522 if (test_bit(DMF_DELETING, &md->flags)) 523 r = -EBUSY; 524 else 525 clear_bit(DMF_DEFERRED_REMOVE, &md->flags); 526 527 spin_unlock(&_minor_lock); 528 529 return r; 530 } 531 532 static void do_deferred_remove(struct work_struct *w) 533 { 534 dm_deferred_remove(); 535 } 536 537 sector_t dm_get_size(struct mapped_device *md) 538 { 539 return get_capacity(md->disk); 540 } 541 542 struct request_queue *dm_get_md_queue(struct mapped_device *md) 543 { 544 return md->queue; 545 } 546 547 struct dm_stats *dm_get_stats(struct mapped_device *md) 548 { 549 return &md->stats; 550 } 551 552 static int dm_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo) 553 { 554 struct mapped_device *md = bdev->bd_disk->private_data; 555 556 return dm_get_geometry(md, geo); 557 } 558 559 static int dm_get_live_table_for_ioctl(struct mapped_device *md, 560 struct dm_target **tgt, struct block_device **bdev, 561 fmode_t *mode, int *srcu_idx) 562 { 563 struct dm_table *map; 564 int r; 565 566 retry: 567 r = -ENOTTY; 568 map = dm_get_live_table(md, srcu_idx); 569 if (!map || !dm_table_get_size(map)) 570 goto out; 571 572 /* We only support devices that have a single target */ 573 if (dm_table_get_num_targets(map) != 1) 574 goto out; 575 576 *tgt = dm_table_get_target(map, 0); 577 578 if (!(*tgt)->type->prepare_ioctl) 579 goto out; 580 581 if (dm_suspended_md(md)) { 582 r = -EAGAIN; 583 goto out; 584 } 585 586 r = (*tgt)->type->prepare_ioctl(*tgt, bdev, mode); 587 if (r < 0) 588 goto out; 589 590 return r; 591 592 out: 593 dm_put_live_table(md, *srcu_idx); 594 if (r == -ENOTCONN && !fatal_signal_pending(current)) { 595 msleep(10); 596 goto retry; 597 } 598 return r; 599 } 600 601 static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode, 602 unsigned int cmd, unsigned long arg) 603 { 604 struct mapped_device *md = bdev->bd_disk->private_data; 605 struct dm_target *tgt; 606 struct block_device *tgt_bdev = NULL; 607 int srcu_idx, r; 608 609 r = dm_get_live_table_for_ioctl(md, &tgt, &tgt_bdev, &mode, &srcu_idx); 610 if (r < 0) 611 return r; 612 613 if (r > 0) { 614 /* 615 * Target determined this ioctl is being issued against 616 * a logical partition of the parent bdev; so extra 617 * validation is needed. 618 */ 619 r = scsi_verify_blk_ioctl(NULL, cmd); 620 if (r) 621 goto out; 622 } 623 624 r = __blkdev_driver_ioctl(tgt_bdev, mode, cmd, arg); 625 out: 626 dm_put_live_table(md, srcu_idx); 627 return r; 628 } 629 630 static struct dm_io *alloc_io(struct mapped_device *md) 631 { 632 return mempool_alloc(md->io_pool, GFP_NOIO); 633 } 634 635 static void free_io(struct mapped_device *md, struct dm_io *io) 636 { 637 mempool_free(io, md->io_pool); 638 } 639 640 static void free_tio(struct mapped_device *md, struct dm_target_io *tio) 641 { 642 bio_put(&tio->clone); 643 } 644 645 static struct dm_rq_target_io *alloc_rq_tio(struct mapped_device *md, 646 gfp_t gfp_mask) 647 { 648 return mempool_alloc(md->io_pool, gfp_mask); 649 } 650 651 static void free_rq_tio(struct dm_rq_target_io *tio) 652 { 653 mempool_free(tio, tio->md->io_pool); 654 } 655 656 static struct request *alloc_clone_request(struct mapped_device *md, 657 gfp_t gfp_mask) 658 { 659 return mempool_alloc(md->rq_pool, gfp_mask); 660 } 661 662 static void free_clone_request(struct mapped_device *md, struct request *rq) 663 { 664 mempool_free(rq, md->rq_pool); 665 } 666 667 static int md_in_flight(struct mapped_device *md) 668 { 669 return atomic_read(&md->pending[READ]) + 670 atomic_read(&md->pending[WRITE]); 671 } 672 673 static void start_io_acct(struct dm_io *io) 674 { 675 struct mapped_device *md = io->md; 676 struct bio *bio = io->bio; 677 int cpu; 678 int rw = bio_data_dir(bio); 679 680 io->start_time = jiffies; 681 682 cpu = part_stat_lock(); 683 part_round_stats(cpu, &dm_disk(md)->part0); 684 part_stat_unlock(); 685 atomic_set(&dm_disk(md)->part0.in_flight[rw], 686 atomic_inc_return(&md->pending[rw])); 687 688 if (unlikely(dm_stats_used(&md->stats))) 689 dm_stats_account_io(&md->stats, bio->bi_rw, bio->bi_iter.bi_sector, 690 bio_sectors(bio), false, 0, &io->stats_aux); 691 } 692 693 static void end_io_acct(struct dm_io *io) 694 { 695 struct mapped_device *md = io->md; 696 struct bio *bio = io->bio; 697 unsigned long duration = jiffies - io->start_time; 698 int pending; 699 int rw = bio_data_dir(bio); 700 701 generic_end_io_acct(rw, &dm_disk(md)->part0, io->start_time); 702 703 if (unlikely(dm_stats_used(&md->stats))) 704 dm_stats_account_io(&md->stats, bio->bi_rw, bio->bi_iter.bi_sector, 705 bio_sectors(bio), true, duration, &io->stats_aux); 706 707 /* 708 * After this is decremented the bio must not be touched if it is 709 * a flush. 710 */ 711 pending = atomic_dec_return(&md->pending[rw]); 712 atomic_set(&dm_disk(md)->part0.in_flight[rw], pending); 713 pending += atomic_read(&md->pending[rw^0x1]); 714 715 /* nudge anyone waiting on suspend queue */ 716 if (!pending) 717 wake_up(&md->wait); 718 } 719 720 /* 721 * Add the bio to the list of deferred io. 722 */ 723 static void queue_io(struct mapped_device *md, struct bio *bio) 724 { 725 unsigned long flags; 726 727 spin_lock_irqsave(&md->deferred_lock, flags); 728 bio_list_add(&md->deferred, bio); 729 spin_unlock_irqrestore(&md->deferred_lock, flags); 730 queue_work(md->wq, &md->work); 731 } 732 733 /* 734 * Everyone (including functions in this file), should use this 735 * function to access the md->map field, and make sure they call 736 * dm_put_live_table() when finished. 737 */ 738 struct dm_table *dm_get_live_table(struct mapped_device *md, int *srcu_idx) __acquires(md->io_barrier) 739 { 740 *srcu_idx = srcu_read_lock(&md->io_barrier); 741 742 return srcu_dereference(md->map, &md->io_barrier); 743 } 744 745 void dm_put_live_table(struct mapped_device *md, int srcu_idx) __releases(md->io_barrier) 746 { 747 srcu_read_unlock(&md->io_barrier, srcu_idx); 748 } 749 750 void dm_sync_table(struct mapped_device *md) 751 { 752 synchronize_srcu(&md->io_barrier); 753 synchronize_rcu_expedited(); 754 } 755 756 /* 757 * A fast alternative to dm_get_live_table/dm_put_live_table. 758 * The caller must not block between these two functions. 759 */ 760 static struct dm_table *dm_get_live_table_fast(struct mapped_device *md) __acquires(RCU) 761 { 762 rcu_read_lock(); 763 return rcu_dereference(md->map); 764 } 765 766 static void dm_put_live_table_fast(struct mapped_device *md) __releases(RCU) 767 { 768 rcu_read_unlock(); 769 } 770 771 /* 772 * Open a table device so we can use it as a map destination. 773 */ 774 static int open_table_device(struct table_device *td, dev_t dev, 775 struct mapped_device *md) 776 { 777 static char *_claim_ptr = "I belong to device-mapper"; 778 struct block_device *bdev; 779 780 int r; 781 782 BUG_ON(td->dm_dev.bdev); 783 784 bdev = blkdev_get_by_dev(dev, td->dm_dev.mode | FMODE_EXCL, _claim_ptr); 785 if (IS_ERR(bdev)) 786 return PTR_ERR(bdev); 787 788 r = bd_link_disk_holder(bdev, dm_disk(md)); 789 if (r) { 790 blkdev_put(bdev, td->dm_dev.mode | FMODE_EXCL); 791 return r; 792 } 793 794 td->dm_dev.bdev = bdev; 795 return 0; 796 } 797 798 /* 799 * Close a table device that we've been using. 800 */ 801 static void close_table_device(struct table_device *td, struct mapped_device *md) 802 { 803 if (!td->dm_dev.bdev) 804 return; 805 806 bd_unlink_disk_holder(td->dm_dev.bdev, dm_disk(md)); 807 blkdev_put(td->dm_dev.bdev, td->dm_dev.mode | FMODE_EXCL); 808 td->dm_dev.bdev = NULL; 809 } 810 811 static struct table_device *find_table_device(struct list_head *l, dev_t dev, 812 fmode_t mode) { 813 struct table_device *td; 814 815 list_for_each_entry(td, l, list) 816 if (td->dm_dev.bdev->bd_dev == dev && td->dm_dev.mode == mode) 817 return td; 818 819 return NULL; 820 } 821 822 int dm_get_table_device(struct mapped_device *md, dev_t dev, fmode_t mode, 823 struct dm_dev **result) { 824 int r; 825 struct table_device *td; 826 827 mutex_lock(&md->table_devices_lock); 828 td = find_table_device(&md->table_devices, dev, mode); 829 if (!td) { 830 td = kmalloc(sizeof(*td), GFP_KERNEL); 831 if (!td) { 832 mutex_unlock(&md->table_devices_lock); 833 return -ENOMEM; 834 } 835 836 td->dm_dev.mode = mode; 837 td->dm_dev.bdev = NULL; 838 839 if ((r = open_table_device(td, dev, md))) { 840 mutex_unlock(&md->table_devices_lock); 841 kfree(td); 842 return r; 843 } 844 845 format_dev_t(td->dm_dev.name, dev); 846 847 atomic_set(&td->count, 0); 848 list_add(&td->list, &md->table_devices); 849 } 850 atomic_inc(&td->count); 851 mutex_unlock(&md->table_devices_lock); 852 853 *result = &td->dm_dev; 854 return 0; 855 } 856 EXPORT_SYMBOL_GPL(dm_get_table_device); 857 858 void dm_put_table_device(struct mapped_device *md, struct dm_dev *d) 859 { 860 struct table_device *td = container_of(d, struct table_device, dm_dev); 861 862 mutex_lock(&md->table_devices_lock); 863 if (atomic_dec_and_test(&td->count)) { 864 close_table_device(td, md); 865 list_del(&td->list); 866 kfree(td); 867 } 868 mutex_unlock(&md->table_devices_lock); 869 } 870 EXPORT_SYMBOL(dm_put_table_device); 871 872 static void free_table_devices(struct list_head *devices) 873 { 874 struct list_head *tmp, *next; 875 876 list_for_each_safe(tmp, next, devices) { 877 struct table_device *td = list_entry(tmp, struct table_device, list); 878 879 DMWARN("dm_destroy: %s still exists with %d references", 880 td->dm_dev.name, atomic_read(&td->count)); 881 kfree(td); 882 } 883 } 884 885 /* 886 * Get the geometry associated with a dm device 887 */ 888 int dm_get_geometry(struct mapped_device *md, struct hd_geometry *geo) 889 { 890 *geo = md->geometry; 891 892 return 0; 893 } 894 895 /* 896 * Set the geometry of a device. 897 */ 898 int dm_set_geometry(struct mapped_device *md, struct hd_geometry *geo) 899 { 900 sector_t sz = (sector_t)geo->cylinders * geo->heads * geo->sectors; 901 902 if (geo->start > sz) { 903 DMWARN("Start sector is beyond the geometry limits."); 904 return -EINVAL; 905 } 906 907 md->geometry = *geo; 908 909 return 0; 910 } 911 912 /*----------------------------------------------------------------- 913 * CRUD START: 914 * A more elegant soln is in the works that uses the queue 915 * merge fn, unfortunately there are a couple of changes to 916 * the block layer that I want to make for this. So in the 917 * interests of getting something for people to use I give 918 * you this clearly demarcated crap. 919 *---------------------------------------------------------------*/ 920 921 static int __noflush_suspending(struct mapped_device *md) 922 { 923 return test_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); 924 } 925 926 /* 927 * Decrements the number of outstanding ios that a bio has been 928 * cloned into, completing the original io if necc. 929 */ 930 static void dec_pending(struct dm_io *io, int error) 931 { 932 unsigned long flags; 933 int io_error; 934 struct bio *bio; 935 struct mapped_device *md = io->md; 936 937 /* Push-back supersedes any I/O errors */ 938 if (unlikely(error)) { 939 spin_lock_irqsave(&io->endio_lock, flags); 940 if (!(io->error > 0 && __noflush_suspending(md))) 941 io->error = error; 942 spin_unlock_irqrestore(&io->endio_lock, flags); 943 } 944 945 if (atomic_dec_and_test(&io->io_count)) { 946 if (io->error == DM_ENDIO_REQUEUE) { 947 /* 948 * Target requested pushing back the I/O. 949 */ 950 spin_lock_irqsave(&md->deferred_lock, flags); 951 if (__noflush_suspending(md)) 952 bio_list_add_head(&md->deferred, io->bio); 953 else 954 /* noflush suspend was interrupted. */ 955 io->error = -EIO; 956 spin_unlock_irqrestore(&md->deferred_lock, flags); 957 } 958 959 io_error = io->error; 960 bio = io->bio; 961 end_io_acct(io); 962 free_io(md, io); 963 964 if (io_error == DM_ENDIO_REQUEUE) 965 return; 966 967 if ((bio->bi_rw & REQ_FLUSH) && bio->bi_iter.bi_size) { 968 /* 969 * Preflush done for flush with data, reissue 970 * without REQ_FLUSH. 971 */ 972 bio->bi_rw &= ~REQ_FLUSH; 973 queue_io(md, bio); 974 } else { 975 /* done with normal IO or empty flush */ 976 trace_block_bio_complete(md->queue, bio, io_error); 977 bio->bi_error = io_error; 978 bio_endio(bio); 979 } 980 } 981 } 982 983 static void disable_write_same(struct mapped_device *md) 984 { 985 struct queue_limits *limits = dm_get_queue_limits(md); 986 987 /* device doesn't really support WRITE SAME, disable it */ 988 limits->max_write_same_sectors = 0; 989 } 990 991 static void clone_endio(struct bio *bio) 992 { 993 int error = bio->bi_error; 994 int r = error; 995 struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone); 996 struct dm_io *io = tio->io; 997 struct mapped_device *md = tio->io->md; 998 dm_endio_fn endio = tio->ti->type->end_io; 999 1000 if (endio) { 1001 r = endio(tio->ti, bio, error); 1002 if (r < 0 || r == DM_ENDIO_REQUEUE) 1003 /* 1004 * error and requeue request are handled 1005 * in dec_pending(). 1006 */ 1007 error = r; 1008 else if (r == DM_ENDIO_INCOMPLETE) 1009 /* The target will handle the io */ 1010 return; 1011 else if (r) { 1012 DMWARN("unimplemented target endio return value: %d", r); 1013 BUG(); 1014 } 1015 } 1016 1017 if (unlikely(r == -EREMOTEIO && (bio->bi_rw & REQ_WRITE_SAME) && 1018 !bdev_get_queue(bio->bi_bdev)->limits.max_write_same_sectors)) 1019 disable_write_same(md); 1020 1021 free_tio(md, tio); 1022 dec_pending(io, error); 1023 } 1024 1025 /* 1026 * Partial completion handling for request-based dm 1027 */ 1028 static void end_clone_bio(struct bio *clone) 1029 { 1030 struct dm_rq_clone_bio_info *info = 1031 container_of(clone, struct dm_rq_clone_bio_info, clone); 1032 struct dm_rq_target_io *tio = info->tio; 1033 struct bio *bio = info->orig; 1034 unsigned int nr_bytes = info->orig->bi_iter.bi_size; 1035 int error = clone->bi_error; 1036 1037 bio_put(clone); 1038 1039 if (tio->error) 1040 /* 1041 * An error has already been detected on the request. 1042 * Once error occurred, just let clone->end_io() handle 1043 * the remainder. 1044 */ 1045 return; 1046 else if (error) { 1047 /* 1048 * Don't notice the error to the upper layer yet. 1049 * The error handling decision is made by the target driver, 1050 * when the request is completed. 1051 */ 1052 tio->error = error; 1053 return; 1054 } 1055 1056 /* 1057 * I/O for the bio successfully completed. 1058 * Notice the data completion to the upper layer. 1059 */ 1060 1061 /* 1062 * bios are processed from the head of the list. 1063 * So the completing bio should always be rq->bio. 1064 * If it's not, something wrong is happening. 1065 */ 1066 if (tio->orig->bio != bio) 1067 DMERR("bio completion is going in the middle of the request"); 1068 1069 /* 1070 * Update the original request. 1071 * Do not use blk_end_request() here, because it may complete 1072 * the original request before the clone, and break the ordering. 1073 */ 1074 blk_update_request(tio->orig, 0, nr_bytes); 1075 } 1076 1077 static struct dm_rq_target_io *tio_from_request(struct request *rq) 1078 { 1079 return (rq->q->mq_ops ? blk_mq_rq_to_pdu(rq) : rq->special); 1080 } 1081 1082 static void rq_end_stats(struct mapped_device *md, struct request *orig) 1083 { 1084 if (unlikely(dm_stats_used(&md->stats))) { 1085 struct dm_rq_target_io *tio = tio_from_request(orig); 1086 tio->duration_jiffies = jiffies - tio->duration_jiffies; 1087 dm_stats_account_io(&md->stats, orig->cmd_flags, blk_rq_pos(orig), 1088 tio->n_sectors, true, tio->duration_jiffies, 1089 &tio->stats_aux); 1090 } 1091 } 1092 1093 /* 1094 * Don't touch any member of the md after calling this function because 1095 * the md may be freed in dm_put() at the end of this function. 1096 * Or do dm_get() before calling this function and dm_put() later. 1097 */ 1098 static void rq_completed(struct mapped_device *md, int rw, bool run_queue) 1099 { 1100 atomic_dec(&md->pending[rw]); 1101 1102 /* nudge anyone waiting on suspend queue */ 1103 if (!md_in_flight(md)) 1104 wake_up(&md->wait); 1105 1106 /* 1107 * Run this off this callpath, as drivers could invoke end_io while 1108 * inside their request_fn (and holding the queue lock). Calling 1109 * back into ->request_fn() could deadlock attempting to grab the 1110 * queue lock again. 1111 */ 1112 if (run_queue) { 1113 if (md->queue->mq_ops) 1114 blk_mq_run_hw_queues(md->queue, true); 1115 else 1116 blk_run_queue_async(md->queue); 1117 } 1118 1119 /* 1120 * dm_put() must be at the end of this function. See the comment above 1121 */ 1122 dm_put(md); 1123 } 1124 1125 static void free_rq_clone(struct request *clone) 1126 { 1127 struct dm_rq_target_io *tio = clone->end_io_data; 1128 struct mapped_device *md = tio->md; 1129 1130 blk_rq_unprep_clone(clone); 1131 1132 if (md->type == DM_TYPE_MQ_REQUEST_BASED) 1133 /* stacked on blk-mq queue(s) */ 1134 tio->ti->type->release_clone_rq(clone); 1135 else if (!md->queue->mq_ops) 1136 /* request_fn queue stacked on request_fn queue(s) */ 1137 free_clone_request(md, clone); 1138 /* 1139 * NOTE: for the blk-mq queue stacked on request_fn queue(s) case: 1140 * no need to call free_clone_request() because we leverage blk-mq by 1141 * allocating the clone at the end of the blk-mq pdu (see: clone_rq) 1142 */ 1143 1144 if (!md->queue->mq_ops) 1145 free_rq_tio(tio); 1146 } 1147 1148 /* 1149 * Complete the clone and the original request. 1150 * Must be called without clone's queue lock held, 1151 * see end_clone_request() for more details. 1152 */ 1153 static void dm_end_request(struct request *clone, int error) 1154 { 1155 int rw = rq_data_dir(clone); 1156 struct dm_rq_target_io *tio = clone->end_io_data; 1157 struct mapped_device *md = tio->md; 1158 struct request *rq = tio->orig; 1159 1160 if (rq->cmd_type == REQ_TYPE_BLOCK_PC) { 1161 rq->errors = clone->errors; 1162 rq->resid_len = clone->resid_len; 1163 1164 if (rq->sense) 1165 /* 1166 * We are using the sense buffer of the original 1167 * request. 1168 * So setting the length of the sense data is enough. 1169 */ 1170 rq->sense_len = clone->sense_len; 1171 } 1172 1173 free_rq_clone(clone); 1174 rq_end_stats(md, rq); 1175 if (!rq->q->mq_ops) 1176 blk_end_request_all(rq, error); 1177 else 1178 blk_mq_end_request(rq, error); 1179 rq_completed(md, rw, true); 1180 } 1181 1182 static void dm_unprep_request(struct request *rq) 1183 { 1184 struct dm_rq_target_io *tio = tio_from_request(rq); 1185 struct request *clone = tio->clone; 1186 1187 if (!rq->q->mq_ops) { 1188 rq->special = NULL; 1189 rq->cmd_flags &= ~REQ_DONTPREP; 1190 } 1191 1192 if (clone) 1193 free_rq_clone(clone); 1194 } 1195 1196 /* 1197 * Requeue the original request of a clone. 1198 */ 1199 static void old_requeue_request(struct request *rq) 1200 { 1201 struct request_queue *q = rq->q; 1202 unsigned long flags; 1203 1204 spin_lock_irqsave(q->queue_lock, flags); 1205 blk_requeue_request(q, rq); 1206 blk_run_queue_async(q); 1207 spin_unlock_irqrestore(q->queue_lock, flags); 1208 } 1209 1210 static void dm_requeue_original_request(struct mapped_device *md, 1211 struct request *rq) 1212 { 1213 int rw = rq_data_dir(rq); 1214 1215 dm_unprep_request(rq); 1216 1217 rq_end_stats(md, rq); 1218 if (!rq->q->mq_ops) 1219 old_requeue_request(rq); 1220 else { 1221 blk_mq_requeue_request(rq); 1222 blk_mq_kick_requeue_list(rq->q); 1223 } 1224 1225 rq_completed(md, rw, false); 1226 } 1227 1228 static void old_stop_queue(struct request_queue *q) 1229 { 1230 unsigned long flags; 1231 1232 if (blk_queue_stopped(q)) 1233 return; 1234 1235 spin_lock_irqsave(q->queue_lock, flags); 1236 blk_stop_queue(q); 1237 spin_unlock_irqrestore(q->queue_lock, flags); 1238 } 1239 1240 static void stop_queue(struct request_queue *q) 1241 { 1242 if (!q->mq_ops) 1243 old_stop_queue(q); 1244 else 1245 blk_mq_stop_hw_queues(q); 1246 } 1247 1248 static void old_start_queue(struct request_queue *q) 1249 { 1250 unsigned long flags; 1251 1252 spin_lock_irqsave(q->queue_lock, flags); 1253 if (blk_queue_stopped(q)) 1254 blk_start_queue(q); 1255 spin_unlock_irqrestore(q->queue_lock, flags); 1256 } 1257 1258 static void start_queue(struct request_queue *q) 1259 { 1260 if (!q->mq_ops) 1261 old_start_queue(q); 1262 else 1263 blk_mq_start_stopped_hw_queues(q, true); 1264 } 1265 1266 static void dm_done(struct request *clone, int error, bool mapped) 1267 { 1268 int r = error; 1269 struct dm_rq_target_io *tio = clone->end_io_data; 1270 dm_request_endio_fn rq_end_io = NULL; 1271 1272 if (tio->ti) { 1273 rq_end_io = tio->ti->type->rq_end_io; 1274 1275 if (mapped && rq_end_io) 1276 r = rq_end_io(tio->ti, clone, error, &tio->info); 1277 } 1278 1279 if (unlikely(r == -EREMOTEIO && (clone->cmd_flags & REQ_WRITE_SAME) && 1280 !clone->q->limits.max_write_same_sectors)) 1281 disable_write_same(tio->md); 1282 1283 if (r <= 0) 1284 /* The target wants to complete the I/O */ 1285 dm_end_request(clone, r); 1286 else if (r == DM_ENDIO_INCOMPLETE) 1287 /* The target will handle the I/O */ 1288 return; 1289 else if (r == DM_ENDIO_REQUEUE) 1290 /* The target wants to requeue the I/O */ 1291 dm_requeue_original_request(tio->md, tio->orig); 1292 else { 1293 DMWARN("unimplemented target endio return value: %d", r); 1294 BUG(); 1295 } 1296 } 1297 1298 /* 1299 * Request completion handler for request-based dm 1300 */ 1301 static void dm_softirq_done(struct request *rq) 1302 { 1303 bool mapped = true; 1304 struct dm_rq_target_io *tio = tio_from_request(rq); 1305 struct request *clone = tio->clone; 1306 int rw; 1307 1308 if (!clone) { 1309 rq_end_stats(tio->md, rq); 1310 rw = rq_data_dir(rq); 1311 if (!rq->q->mq_ops) { 1312 blk_end_request_all(rq, tio->error); 1313 rq_completed(tio->md, rw, false); 1314 free_rq_tio(tio); 1315 } else { 1316 blk_mq_end_request(rq, tio->error); 1317 rq_completed(tio->md, rw, false); 1318 } 1319 return; 1320 } 1321 1322 if (rq->cmd_flags & REQ_FAILED) 1323 mapped = false; 1324 1325 dm_done(clone, tio->error, mapped); 1326 } 1327 1328 /* 1329 * Complete the clone and the original request with the error status 1330 * through softirq context. 1331 */ 1332 static void dm_complete_request(struct request *rq, int error) 1333 { 1334 struct dm_rq_target_io *tio = tio_from_request(rq); 1335 1336 tio->error = error; 1337 blk_complete_request(rq); 1338 } 1339 1340 /* 1341 * Complete the not-mapped clone and the original request with the error status 1342 * through softirq context. 1343 * Target's rq_end_io() function isn't called. 1344 * This may be used when the target's map_rq() or clone_and_map_rq() functions fail. 1345 */ 1346 static void dm_kill_unmapped_request(struct request *rq, int error) 1347 { 1348 rq->cmd_flags |= REQ_FAILED; 1349 dm_complete_request(rq, error); 1350 } 1351 1352 /* 1353 * Called with the clone's queue lock held (for non-blk-mq) 1354 */ 1355 static void end_clone_request(struct request *clone, int error) 1356 { 1357 struct dm_rq_target_io *tio = clone->end_io_data; 1358 1359 if (!clone->q->mq_ops) { 1360 /* 1361 * For just cleaning up the information of the queue in which 1362 * the clone was dispatched. 1363 * The clone is *NOT* freed actually here because it is alloced 1364 * from dm own mempool (REQ_ALLOCED isn't set). 1365 */ 1366 __blk_put_request(clone->q, clone); 1367 } 1368 1369 /* 1370 * Actual request completion is done in a softirq context which doesn't 1371 * hold the clone's queue lock. Otherwise, deadlock could occur because: 1372 * - another request may be submitted by the upper level driver 1373 * of the stacking during the completion 1374 * - the submission which requires queue lock may be done 1375 * against this clone's queue 1376 */ 1377 dm_complete_request(tio->orig, error); 1378 } 1379 1380 /* 1381 * Return maximum size of I/O possible at the supplied sector up to the current 1382 * target boundary. 1383 */ 1384 static sector_t max_io_len_target_boundary(sector_t sector, struct dm_target *ti) 1385 { 1386 sector_t target_offset = dm_target_offset(ti, sector); 1387 1388 return ti->len - target_offset; 1389 } 1390 1391 static sector_t max_io_len(sector_t sector, struct dm_target *ti) 1392 { 1393 sector_t len = max_io_len_target_boundary(sector, ti); 1394 sector_t offset, max_len; 1395 1396 /* 1397 * Does the target need to split even further? 1398 */ 1399 if (ti->max_io_len) { 1400 offset = dm_target_offset(ti, sector); 1401 if (unlikely(ti->max_io_len & (ti->max_io_len - 1))) 1402 max_len = sector_div(offset, ti->max_io_len); 1403 else 1404 max_len = offset & (ti->max_io_len - 1); 1405 max_len = ti->max_io_len - max_len; 1406 1407 if (len > max_len) 1408 len = max_len; 1409 } 1410 1411 return len; 1412 } 1413 1414 int dm_set_target_max_io_len(struct dm_target *ti, sector_t len) 1415 { 1416 if (len > UINT_MAX) { 1417 DMERR("Specified maximum size of target IO (%llu) exceeds limit (%u)", 1418 (unsigned long long)len, UINT_MAX); 1419 ti->error = "Maximum size of target IO is too large"; 1420 return -EINVAL; 1421 } 1422 1423 ti->max_io_len = (uint32_t) len; 1424 1425 return 0; 1426 } 1427 EXPORT_SYMBOL_GPL(dm_set_target_max_io_len); 1428 1429 /* 1430 * A target may call dm_accept_partial_bio only from the map routine. It is 1431 * allowed for all bio types except REQ_FLUSH. 1432 * 1433 * dm_accept_partial_bio informs the dm that the target only wants to process 1434 * additional n_sectors sectors of the bio and the rest of the data should be 1435 * sent in a next bio. 1436 * 1437 * A diagram that explains the arithmetics: 1438 * +--------------------+---------------+-------+ 1439 * | 1 | 2 | 3 | 1440 * +--------------------+---------------+-------+ 1441 * 1442 * <-------------- *tio->len_ptr ---------------> 1443 * <------- bi_size -------> 1444 * <-- n_sectors --> 1445 * 1446 * Region 1 was already iterated over with bio_advance or similar function. 1447 * (it may be empty if the target doesn't use bio_advance) 1448 * Region 2 is the remaining bio size that the target wants to process. 1449 * (it may be empty if region 1 is non-empty, although there is no reason 1450 * to make it empty) 1451 * The target requires that region 3 is to be sent in the next bio. 1452 * 1453 * If the target wants to receive multiple copies of the bio (via num_*bios, etc), 1454 * the partially processed part (the sum of regions 1+2) must be the same for all 1455 * copies of the bio. 1456 */ 1457 void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors) 1458 { 1459 struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone); 1460 unsigned bi_size = bio->bi_iter.bi_size >> SECTOR_SHIFT; 1461 BUG_ON(bio->bi_rw & REQ_FLUSH); 1462 BUG_ON(bi_size > *tio->len_ptr); 1463 BUG_ON(n_sectors > bi_size); 1464 *tio->len_ptr -= bi_size - n_sectors; 1465 bio->bi_iter.bi_size = n_sectors << SECTOR_SHIFT; 1466 } 1467 EXPORT_SYMBOL_GPL(dm_accept_partial_bio); 1468 1469 static void __map_bio(struct dm_target_io *tio) 1470 { 1471 int r; 1472 sector_t sector; 1473 struct mapped_device *md; 1474 struct bio *clone = &tio->clone; 1475 struct dm_target *ti = tio->ti; 1476 1477 clone->bi_end_io = clone_endio; 1478 1479 /* 1480 * Map the clone. If r == 0 we don't need to do 1481 * anything, the target has assumed ownership of 1482 * this io. 1483 */ 1484 atomic_inc(&tio->io->io_count); 1485 sector = clone->bi_iter.bi_sector; 1486 r = ti->type->map(ti, clone); 1487 if (r == DM_MAPIO_REMAPPED) { 1488 /* the bio has been remapped so dispatch it */ 1489 1490 trace_block_bio_remap(bdev_get_queue(clone->bi_bdev), clone, 1491 tio->io->bio->bi_bdev->bd_dev, sector); 1492 1493 generic_make_request(clone); 1494 } else if (r < 0 || r == DM_MAPIO_REQUEUE) { 1495 /* error the io and bail out, or requeue it if needed */ 1496 md = tio->io->md; 1497 dec_pending(tio->io, r); 1498 free_tio(md, tio); 1499 } else if (r != DM_MAPIO_SUBMITTED) { 1500 DMWARN("unimplemented target map return value: %d", r); 1501 BUG(); 1502 } 1503 } 1504 1505 struct clone_info { 1506 struct mapped_device *md; 1507 struct dm_table *map; 1508 struct bio *bio; 1509 struct dm_io *io; 1510 sector_t sector; 1511 unsigned sector_count; 1512 }; 1513 1514 static void bio_setup_sector(struct bio *bio, sector_t sector, unsigned len) 1515 { 1516 bio->bi_iter.bi_sector = sector; 1517 bio->bi_iter.bi_size = to_bytes(len); 1518 } 1519 1520 /* 1521 * Creates a bio that consists of range of complete bvecs. 1522 */ 1523 static void clone_bio(struct dm_target_io *tio, struct bio *bio, 1524 sector_t sector, unsigned len) 1525 { 1526 struct bio *clone = &tio->clone; 1527 1528 __bio_clone_fast(clone, bio); 1529 1530 if (bio_integrity(bio)) 1531 bio_integrity_clone(clone, bio, GFP_NOIO); 1532 1533 bio_advance(clone, to_bytes(sector - clone->bi_iter.bi_sector)); 1534 clone->bi_iter.bi_size = to_bytes(len); 1535 1536 if (bio_integrity(bio)) 1537 bio_integrity_trim(clone, 0, len); 1538 } 1539 1540 static struct dm_target_io *alloc_tio(struct clone_info *ci, 1541 struct dm_target *ti, 1542 unsigned target_bio_nr) 1543 { 1544 struct dm_target_io *tio; 1545 struct bio *clone; 1546 1547 clone = bio_alloc_bioset(GFP_NOIO, 0, ci->md->bs); 1548 tio = container_of(clone, struct dm_target_io, clone); 1549 1550 tio->io = ci->io; 1551 tio->ti = ti; 1552 tio->target_bio_nr = target_bio_nr; 1553 1554 return tio; 1555 } 1556 1557 static void __clone_and_map_simple_bio(struct clone_info *ci, 1558 struct dm_target *ti, 1559 unsigned target_bio_nr, unsigned *len) 1560 { 1561 struct dm_target_io *tio = alloc_tio(ci, ti, target_bio_nr); 1562 struct bio *clone = &tio->clone; 1563 1564 tio->len_ptr = len; 1565 1566 __bio_clone_fast(clone, ci->bio); 1567 if (len) 1568 bio_setup_sector(clone, ci->sector, *len); 1569 1570 __map_bio(tio); 1571 } 1572 1573 static void __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti, 1574 unsigned num_bios, unsigned *len) 1575 { 1576 unsigned target_bio_nr; 1577 1578 for (target_bio_nr = 0; target_bio_nr < num_bios; target_bio_nr++) 1579 __clone_and_map_simple_bio(ci, ti, target_bio_nr, len); 1580 } 1581 1582 static int __send_empty_flush(struct clone_info *ci) 1583 { 1584 unsigned target_nr = 0; 1585 struct dm_target *ti; 1586 1587 BUG_ON(bio_has_data(ci->bio)); 1588 while ((ti = dm_table_get_target(ci->map, target_nr++))) 1589 __send_duplicate_bios(ci, ti, ti->num_flush_bios, NULL); 1590 1591 return 0; 1592 } 1593 1594 static void __clone_and_map_data_bio(struct clone_info *ci, struct dm_target *ti, 1595 sector_t sector, unsigned *len) 1596 { 1597 struct bio *bio = ci->bio; 1598 struct dm_target_io *tio; 1599 unsigned target_bio_nr; 1600 unsigned num_target_bios = 1; 1601 1602 /* 1603 * Does the target want to receive duplicate copies of the bio? 1604 */ 1605 if (bio_data_dir(bio) == WRITE && ti->num_write_bios) 1606 num_target_bios = ti->num_write_bios(ti, bio); 1607 1608 for (target_bio_nr = 0; target_bio_nr < num_target_bios; target_bio_nr++) { 1609 tio = alloc_tio(ci, ti, target_bio_nr); 1610 tio->len_ptr = len; 1611 clone_bio(tio, bio, sector, *len); 1612 __map_bio(tio); 1613 } 1614 } 1615 1616 typedef unsigned (*get_num_bios_fn)(struct dm_target *ti); 1617 1618 static unsigned get_num_discard_bios(struct dm_target *ti) 1619 { 1620 return ti->num_discard_bios; 1621 } 1622 1623 static unsigned get_num_write_same_bios(struct dm_target *ti) 1624 { 1625 return ti->num_write_same_bios; 1626 } 1627 1628 typedef bool (*is_split_required_fn)(struct dm_target *ti); 1629 1630 static bool is_split_required_for_discard(struct dm_target *ti) 1631 { 1632 return ti->split_discard_bios; 1633 } 1634 1635 static int __send_changing_extent_only(struct clone_info *ci, 1636 get_num_bios_fn get_num_bios, 1637 is_split_required_fn is_split_required) 1638 { 1639 struct dm_target *ti; 1640 unsigned len; 1641 unsigned num_bios; 1642 1643 do { 1644 ti = dm_table_find_target(ci->map, ci->sector); 1645 if (!dm_target_is_valid(ti)) 1646 return -EIO; 1647 1648 /* 1649 * Even though the device advertised support for this type of 1650 * request, that does not mean every target supports it, and 1651 * reconfiguration might also have changed that since the 1652 * check was performed. 1653 */ 1654 num_bios = get_num_bios ? get_num_bios(ti) : 0; 1655 if (!num_bios) 1656 return -EOPNOTSUPP; 1657 1658 if (is_split_required && !is_split_required(ti)) 1659 len = min((sector_t)ci->sector_count, max_io_len_target_boundary(ci->sector, ti)); 1660 else 1661 len = min((sector_t)ci->sector_count, max_io_len(ci->sector, ti)); 1662 1663 __send_duplicate_bios(ci, ti, num_bios, &len); 1664 1665 ci->sector += len; 1666 } while (ci->sector_count -= len); 1667 1668 return 0; 1669 } 1670 1671 static int __send_discard(struct clone_info *ci) 1672 { 1673 return __send_changing_extent_only(ci, get_num_discard_bios, 1674 is_split_required_for_discard); 1675 } 1676 1677 static int __send_write_same(struct clone_info *ci) 1678 { 1679 return __send_changing_extent_only(ci, get_num_write_same_bios, NULL); 1680 } 1681 1682 /* 1683 * Select the correct strategy for processing a non-flush bio. 1684 */ 1685 static int __split_and_process_non_flush(struct clone_info *ci) 1686 { 1687 struct bio *bio = ci->bio; 1688 struct dm_target *ti; 1689 unsigned len; 1690 1691 if (unlikely(bio->bi_rw & REQ_DISCARD)) 1692 return __send_discard(ci); 1693 else if (unlikely(bio->bi_rw & REQ_WRITE_SAME)) 1694 return __send_write_same(ci); 1695 1696 ti = dm_table_find_target(ci->map, ci->sector); 1697 if (!dm_target_is_valid(ti)) 1698 return -EIO; 1699 1700 len = min_t(sector_t, max_io_len(ci->sector, ti), ci->sector_count); 1701 1702 __clone_and_map_data_bio(ci, ti, ci->sector, &len); 1703 1704 ci->sector += len; 1705 ci->sector_count -= len; 1706 1707 return 0; 1708 } 1709 1710 /* 1711 * Entry point to split a bio into clones and submit them to the targets. 1712 */ 1713 static void __split_and_process_bio(struct mapped_device *md, 1714 struct dm_table *map, struct bio *bio) 1715 { 1716 struct clone_info ci; 1717 int error = 0; 1718 1719 if (unlikely(!map)) { 1720 bio_io_error(bio); 1721 return; 1722 } 1723 1724 ci.map = map; 1725 ci.md = md; 1726 ci.io = alloc_io(md); 1727 ci.io->error = 0; 1728 atomic_set(&ci.io->io_count, 1); 1729 ci.io->bio = bio; 1730 ci.io->md = md; 1731 spin_lock_init(&ci.io->endio_lock); 1732 ci.sector = bio->bi_iter.bi_sector; 1733 1734 start_io_acct(ci.io); 1735 1736 if (bio->bi_rw & REQ_FLUSH) { 1737 ci.bio = &ci.md->flush_bio; 1738 ci.sector_count = 0; 1739 error = __send_empty_flush(&ci); 1740 /* dec_pending submits any data associated with flush */ 1741 } else { 1742 ci.bio = bio; 1743 ci.sector_count = bio_sectors(bio); 1744 while (ci.sector_count && !error) 1745 error = __split_and_process_non_flush(&ci); 1746 } 1747 1748 /* drop the extra reference count */ 1749 dec_pending(ci.io, error); 1750 } 1751 /*----------------------------------------------------------------- 1752 * CRUD END 1753 *---------------------------------------------------------------*/ 1754 1755 /* 1756 * The request function that just remaps the bio built up by 1757 * dm_merge_bvec. 1758 */ 1759 static blk_qc_t dm_make_request(struct request_queue *q, struct bio *bio) 1760 { 1761 int rw = bio_data_dir(bio); 1762 struct mapped_device *md = q->queuedata; 1763 int srcu_idx; 1764 struct dm_table *map; 1765 1766 map = dm_get_live_table(md, &srcu_idx); 1767 1768 generic_start_io_acct(rw, bio_sectors(bio), &dm_disk(md)->part0); 1769 1770 /* if we're suspended, we have to queue this io for later */ 1771 if (unlikely(test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags))) { 1772 dm_put_live_table(md, srcu_idx); 1773 1774 if (bio_rw(bio) != READA) 1775 queue_io(md, bio); 1776 else 1777 bio_io_error(bio); 1778 return BLK_QC_T_NONE; 1779 } 1780 1781 __split_and_process_bio(md, map, bio); 1782 dm_put_live_table(md, srcu_idx); 1783 return BLK_QC_T_NONE; 1784 } 1785 1786 int dm_request_based(struct mapped_device *md) 1787 { 1788 return blk_queue_stackable(md->queue); 1789 } 1790 1791 static void dm_dispatch_clone_request(struct request *clone, struct request *rq) 1792 { 1793 int r; 1794 1795 if (blk_queue_io_stat(clone->q)) 1796 clone->cmd_flags |= REQ_IO_STAT; 1797 1798 clone->start_time = jiffies; 1799 r = blk_insert_cloned_request(clone->q, clone); 1800 if (r) 1801 /* must complete clone in terms of original request */ 1802 dm_complete_request(rq, r); 1803 } 1804 1805 static int dm_rq_bio_constructor(struct bio *bio, struct bio *bio_orig, 1806 void *data) 1807 { 1808 struct dm_rq_target_io *tio = data; 1809 struct dm_rq_clone_bio_info *info = 1810 container_of(bio, struct dm_rq_clone_bio_info, clone); 1811 1812 info->orig = bio_orig; 1813 info->tio = tio; 1814 bio->bi_end_io = end_clone_bio; 1815 1816 return 0; 1817 } 1818 1819 static int setup_clone(struct request *clone, struct request *rq, 1820 struct dm_rq_target_io *tio, gfp_t gfp_mask) 1821 { 1822 int r; 1823 1824 r = blk_rq_prep_clone(clone, rq, tio->md->bs, gfp_mask, 1825 dm_rq_bio_constructor, tio); 1826 if (r) 1827 return r; 1828 1829 clone->cmd = rq->cmd; 1830 clone->cmd_len = rq->cmd_len; 1831 clone->sense = rq->sense; 1832 clone->end_io = end_clone_request; 1833 clone->end_io_data = tio; 1834 1835 tio->clone = clone; 1836 1837 return 0; 1838 } 1839 1840 static struct request *clone_rq(struct request *rq, struct mapped_device *md, 1841 struct dm_rq_target_io *tio, gfp_t gfp_mask) 1842 { 1843 /* 1844 * Do not allocate a clone if tio->clone was already set 1845 * (see: dm_mq_queue_rq). 1846 */ 1847 bool alloc_clone = !tio->clone; 1848 struct request *clone; 1849 1850 if (alloc_clone) { 1851 clone = alloc_clone_request(md, gfp_mask); 1852 if (!clone) 1853 return NULL; 1854 } else 1855 clone = tio->clone; 1856 1857 blk_rq_init(NULL, clone); 1858 if (setup_clone(clone, rq, tio, gfp_mask)) { 1859 /* -ENOMEM */ 1860 if (alloc_clone) 1861 free_clone_request(md, clone); 1862 return NULL; 1863 } 1864 1865 return clone; 1866 } 1867 1868 static void map_tio_request(struct kthread_work *work); 1869 1870 static void init_tio(struct dm_rq_target_io *tio, struct request *rq, 1871 struct mapped_device *md) 1872 { 1873 tio->md = md; 1874 tio->ti = NULL; 1875 tio->clone = NULL; 1876 tio->orig = rq; 1877 tio->error = 0; 1878 memset(&tio->info, 0, sizeof(tio->info)); 1879 if (md->kworker_task) 1880 init_kthread_work(&tio->work, map_tio_request); 1881 } 1882 1883 static struct dm_rq_target_io *prep_tio(struct request *rq, 1884 struct mapped_device *md, gfp_t gfp_mask) 1885 { 1886 struct dm_rq_target_io *tio; 1887 int srcu_idx; 1888 struct dm_table *table; 1889 1890 tio = alloc_rq_tio(md, gfp_mask); 1891 if (!tio) 1892 return NULL; 1893 1894 init_tio(tio, rq, md); 1895 1896 table = dm_get_live_table(md, &srcu_idx); 1897 if (!dm_table_mq_request_based(table)) { 1898 if (!clone_rq(rq, md, tio, gfp_mask)) { 1899 dm_put_live_table(md, srcu_idx); 1900 free_rq_tio(tio); 1901 return NULL; 1902 } 1903 } 1904 dm_put_live_table(md, srcu_idx); 1905 1906 return tio; 1907 } 1908 1909 /* 1910 * Called with the queue lock held. 1911 */ 1912 static int dm_prep_fn(struct request_queue *q, struct request *rq) 1913 { 1914 struct mapped_device *md = q->queuedata; 1915 struct dm_rq_target_io *tio; 1916 1917 if (unlikely(rq->special)) { 1918 DMWARN("Already has something in rq->special."); 1919 return BLKPREP_KILL; 1920 } 1921 1922 tio = prep_tio(rq, md, GFP_ATOMIC); 1923 if (!tio) 1924 return BLKPREP_DEFER; 1925 1926 rq->special = tio; 1927 rq->cmd_flags |= REQ_DONTPREP; 1928 1929 return BLKPREP_OK; 1930 } 1931 1932 /* 1933 * Returns: 1934 * 0 : the request has been processed 1935 * DM_MAPIO_REQUEUE : the original request needs to be requeued 1936 * < 0 : the request was completed due to failure 1937 */ 1938 static int map_request(struct dm_rq_target_io *tio, struct request *rq, 1939 struct mapped_device *md) 1940 { 1941 int r; 1942 struct dm_target *ti = tio->ti; 1943 struct request *clone = NULL; 1944 1945 if (tio->clone) { 1946 clone = tio->clone; 1947 r = ti->type->map_rq(ti, clone, &tio->info); 1948 } else { 1949 r = ti->type->clone_and_map_rq(ti, rq, &tio->info, &clone); 1950 if (r < 0) { 1951 /* The target wants to complete the I/O */ 1952 dm_kill_unmapped_request(rq, r); 1953 return r; 1954 } 1955 if (r != DM_MAPIO_REMAPPED) 1956 return r; 1957 if (setup_clone(clone, rq, tio, GFP_ATOMIC)) { 1958 /* -ENOMEM */ 1959 ti->type->release_clone_rq(clone); 1960 return DM_MAPIO_REQUEUE; 1961 } 1962 } 1963 1964 switch (r) { 1965 case DM_MAPIO_SUBMITTED: 1966 /* The target has taken the I/O to submit by itself later */ 1967 break; 1968 case DM_MAPIO_REMAPPED: 1969 /* The target has remapped the I/O so dispatch it */ 1970 trace_block_rq_remap(clone->q, clone, disk_devt(dm_disk(md)), 1971 blk_rq_pos(rq)); 1972 dm_dispatch_clone_request(clone, rq); 1973 break; 1974 case DM_MAPIO_REQUEUE: 1975 /* The target wants to requeue the I/O */ 1976 dm_requeue_original_request(md, tio->orig); 1977 break; 1978 default: 1979 if (r > 0) { 1980 DMWARN("unimplemented target map return value: %d", r); 1981 BUG(); 1982 } 1983 1984 /* The target wants to complete the I/O */ 1985 dm_kill_unmapped_request(rq, r); 1986 return r; 1987 } 1988 1989 return 0; 1990 } 1991 1992 static void map_tio_request(struct kthread_work *work) 1993 { 1994 struct dm_rq_target_io *tio = container_of(work, struct dm_rq_target_io, work); 1995 struct request *rq = tio->orig; 1996 struct mapped_device *md = tio->md; 1997 1998 if (map_request(tio, rq, md) == DM_MAPIO_REQUEUE) 1999 dm_requeue_original_request(md, rq); 2000 } 2001 2002 static void dm_start_request(struct mapped_device *md, struct request *orig) 2003 { 2004 if (!orig->q->mq_ops) 2005 blk_start_request(orig); 2006 else 2007 blk_mq_start_request(orig); 2008 atomic_inc(&md->pending[rq_data_dir(orig)]); 2009 2010 if (md->seq_rq_merge_deadline_usecs) { 2011 md->last_rq_pos = rq_end_sector(orig); 2012 md->last_rq_rw = rq_data_dir(orig); 2013 md->last_rq_start_time = ktime_get(); 2014 } 2015 2016 if (unlikely(dm_stats_used(&md->stats))) { 2017 struct dm_rq_target_io *tio = tio_from_request(orig); 2018 tio->duration_jiffies = jiffies; 2019 tio->n_sectors = blk_rq_sectors(orig); 2020 dm_stats_account_io(&md->stats, orig->cmd_flags, blk_rq_pos(orig), 2021 tio->n_sectors, false, 0, &tio->stats_aux); 2022 } 2023 2024 /* 2025 * Hold the md reference here for the in-flight I/O. 2026 * We can't rely on the reference count by device opener, 2027 * because the device may be closed during the request completion 2028 * when all bios are completed. 2029 * See the comment in rq_completed() too. 2030 */ 2031 dm_get(md); 2032 } 2033 2034 #define MAX_SEQ_RQ_MERGE_DEADLINE_USECS 100000 2035 2036 ssize_t dm_attr_rq_based_seq_io_merge_deadline_show(struct mapped_device *md, char *buf) 2037 { 2038 return sprintf(buf, "%u\n", md->seq_rq_merge_deadline_usecs); 2039 } 2040 2041 ssize_t dm_attr_rq_based_seq_io_merge_deadline_store(struct mapped_device *md, 2042 const char *buf, size_t count) 2043 { 2044 unsigned deadline; 2045 2046 if (!dm_request_based(md) || md->use_blk_mq) 2047 return count; 2048 2049 if (kstrtouint(buf, 10, &deadline)) 2050 return -EINVAL; 2051 2052 if (deadline > MAX_SEQ_RQ_MERGE_DEADLINE_USECS) 2053 deadline = MAX_SEQ_RQ_MERGE_DEADLINE_USECS; 2054 2055 md->seq_rq_merge_deadline_usecs = deadline; 2056 2057 return count; 2058 } 2059 2060 static bool dm_request_peeked_before_merge_deadline(struct mapped_device *md) 2061 { 2062 ktime_t kt_deadline; 2063 2064 if (!md->seq_rq_merge_deadline_usecs) 2065 return false; 2066 2067 kt_deadline = ns_to_ktime((u64)md->seq_rq_merge_deadline_usecs * NSEC_PER_USEC); 2068 kt_deadline = ktime_add_safe(md->last_rq_start_time, kt_deadline); 2069 2070 return !ktime_after(ktime_get(), kt_deadline); 2071 } 2072 2073 /* 2074 * q->request_fn for request-based dm. 2075 * Called with the queue lock held. 2076 */ 2077 static void dm_request_fn(struct request_queue *q) 2078 { 2079 struct mapped_device *md = q->queuedata; 2080 int srcu_idx; 2081 struct dm_table *map = dm_get_live_table(md, &srcu_idx); 2082 struct dm_target *ti; 2083 struct request *rq; 2084 struct dm_rq_target_io *tio; 2085 sector_t pos; 2086 2087 /* 2088 * For suspend, check blk_queue_stopped() and increment 2089 * ->pending within a single queue_lock not to increment the 2090 * number of in-flight I/Os after the queue is stopped in 2091 * dm_suspend(). 2092 */ 2093 while (!blk_queue_stopped(q)) { 2094 rq = blk_peek_request(q); 2095 if (!rq) 2096 goto out; 2097 2098 /* always use block 0 to find the target for flushes for now */ 2099 pos = 0; 2100 if (!(rq->cmd_flags & REQ_FLUSH)) 2101 pos = blk_rq_pos(rq); 2102 2103 ti = dm_table_find_target(map, pos); 2104 if (!dm_target_is_valid(ti)) { 2105 /* 2106 * Must perform setup, that rq_completed() requires, 2107 * before calling dm_kill_unmapped_request 2108 */ 2109 DMERR_LIMIT("request attempted access beyond the end of device"); 2110 dm_start_request(md, rq); 2111 dm_kill_unmapped_request(rq, -EIO); 2112 continue; 2113 } 2114 2115 if (dm_request_peeked_before_merge_deadline(md) && 2116 md_in_flight(md) && rq->bio && rq->bio->bi_vcnt == 1 && 2117 md->last_rq_pos == pos && md->last_rq_rw == rq_data_dir(rq)) 2118 goto delay_and_out; 2119 2120 if (ti->type->busy && ti->type->busy(ti)) 2121 goto delay_and_out; 2122 2123 dm_start_request(md, rq); 2124 2125 tio = tio_from_request(rq); 2126 /* Establish tio->ti before queuing work (map_tio_request) */ 2127 tio->ti = ti; 2128 queue_kthread_work(&md->kworker, &tio->work); 2129 BUG_ON(!irqs_disabled()); 2130 } 2131 2132 goto out; 2133 2134 delay_and_out: 2135 blk_delay_queue(q, HZ / 100); 2136 out: 2137 dm_put_live_table(md, srcu_idx); 2138 } 2139 2140 static int dm_any_congested(void *congested_data, int bdi_bits) 2141 { 2142 int r = bdi_bits; 2143 struct mapped_device *md = congested_data; 2144 struct dm_table *map; 2145 2146 if (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) { 2147 map = dm_get_live_table_fast(md); 2148 if (map) { 2149 /* 2150 * Request-based dm cares about only own queue for 2151 * the query about congestion status of request_queue 2152 */ 2153 if (dm_request_based(md)) 2154 r = md->queue->backing_dev_info.wb.state & 2155 bdi_bits; 2156 else 2157 r = dm_table_any_congested(map, bdi_bits); 2158 } 2159 dm_put_live_table_fast(md); 2160 } 2161 2162 return r; 2163 } 2164 2165 /*----------------------------------------------------------------- 2166 * An IDR is used to keep track of allocated minor numbers. 2167 *---------------------------------------------------------------*/ 2168 static void free_minor(int minor) 2169 { 2170 spin_lock(&_minor_lock); 2171 idr_remove(&_minor_idr, minor); 2172 spin_unlock(&_minor_lock); 2173 } 2174 2175 /* 2176 * See if the device with a specific minor # is free. 2177 */ 2178 static int specific_minor(int minor) 2179 { 2180 int r; 2181 2182 if (minor >= (1 << MINORBITS)) 2183 return -EINVAL; 2184 2185 idr_preload(GFP_KERNEL); 2186 spin_lock(&_minor_lock); 2187 2188 r = idr_alloc(&_minor_idr, MINOR_ALLOCED, minor, minor + 1, GFP_NOWAIT); 2189 2190 spin_unlock(&_minor_lock); 2191 idr_preload_end(); 2192 if (r < 0) 2193 return r == -ENOSPC ? -EBUSY : r; 2194 return 0; 2195 } 2196 2197 static int next_free_minor(int *minor) 2198 { 2199 int r; 2200 2201 idr_preload(GFP_KERNEL); 2202 spin_lock(&_minor_lock); 2203 2204 r = idr_alloc(&_minor_idr, MINOR_ALLOCED, 0, 1 << MINORBITS, GFP_NOWAIT); 2205 2206 spin_unlock(&_minor_lock); 2207 idr_preload_end(); 2208 if (r < 0) 2209 return r; 2210 *minor = r; 2211 return 0; 2212 } 2213 2214 static const struct block_device_operations dm_blk_dops; 2215 2216 static void dm_wq_work(struct work_struct *work); 2217 2218 static void dm_init_md_queue(struct mapped_device *md) 2219 { 2220 /* 2221 * Request-based dm devices cannot be stacked on top of bio-based dm 2222 * devices. The type of this dm device may not have been decided yet. 2223 * The type is decided at the first table loading time. 2224 * To prevent problematic device stacking, clear the queue flag 2225 * for request stacking support until then. 2226 * 2227 * This queue is new, so no concurrency on the queue_flags. 2228 */ 2229 queue_flag_clear_unlocked(QUEUE_FLAG_STACKABLE, md->queue); 2230 2231 /* 2232 * Initialize data that will only be used by a non-blk-mq DM queue 2233 * - must do so here (in alloc_dev callchain) before queue is used 2234 */ 2235 md->queue->queuedata = md; 2236 md->queue->backing_dev_info.congested_data = md; 2237 } 2238 2239 static void dm_init_old_md_queue(struct mapped_device *md) 2240 { 2241 md->use_blk_mq = false; 2242 dm_init_md_queue(md); 2243 2244 /* 2245 * Initialize aspects of queue that aren't relevant for blk-mq 2246 */ 2247 md->queue->backing_dev_info.congested_fn = dm_any_congested; 2248 blk_queue_bounce_limit(md->queue, BLK_BOUNCE_ANY); 2249 } 2250 2251 static void cleanup_mapped_device(struct mapped_device *md) 2252 { 2253 if (md->wq) 2254 destroy_workqueue(md->wq); 2255 if (md->kworker_task) 2256 kthread_stop(md->kworker_task); 2257 mempool_destroy(md->io_pool); 2258 mempool_destroy(md->rq_pool); 2259 if (md->bs) 2260 bioset_free(md->bs); 2261 2262 cleanup_srcu_struct(&md->io_barrier); 2263 2264 if (md->disk) { 2265 spin_lock(&_minor_lock); 2266 md->disk->private_data = NULL; 2267 spin_unlock(&_minor_lock); 2268 del_gendisk(md->disk); 2269 put_disk(md->disk); 2270 } 2271 2272 if (md->queue) 2273 blk_cleanup_queue(md->queue); 2274 2275 if (md->bdev) { 2276 bdput(md->bdev); 2277 md->bdev = NULL; 2278 } 2279 } 2280 2281 /* 2282 * Allocate and initialise a blank device with a given minor. 2283 */ 2284 static struct mapped_device *alloc_dev(int minor) 2285 { 2286 int r; 2287 struct mapped_device *md = kzalloc(sizeof(*md), GFP_KERNEL); 2288 void *old_md; 2289 2290 if (!md) { 2291 DMWARN("unable to allocate device, out of memory."); 2292 return NULL; 2293 } 2294 2295 if (!try_module_get(THIS_MODULE)) 2296 goto bad_module_get; 2297 2298 /* get a minor number for the dev */ 2299 if (minor == DM_ANY_MINOR) 2300 r = next_free_minor(&minor); 2301 else 2302 r = specific_minor(minor); 2303 if (r < 0) 2304 goto bad_minor; 2305 2306 r = init_srcu_struct(&md->io_barrier); 2307 if (r < 0) 2308 goto bad_io_barrier; 2309 2310 md->use_blk_mq = use_blk_mq; 2311 md->type = DM_TYPE_NONE; 2312 mutex_init(&md->suspend_lock); 2313 mutex_init(&md->type_lock); 2314 mutex_init(&md->table_devices_lock); 2315 spin_lock_init(&md->deferred_lock); 2316 atomic_set(&md->holders, 1); 2317 atomic_set(&md->open_count, 0); 2318 atomic_set(&md->event_nr, 0); 2319 atomic_set(&md->uevent_seq, 0); 2320 INIT_LIST_HEAD(&md->uevent_list); 2321 INIT_LIST_HEAD(&md->table_devices); 2322 spin_lock_init(&md->uevent_lock); 2323 2324 md->queue = blk_alloc_queue(GFP_KERNEL); 2325 if (!md->queue) 2326 goto bad; 2327 2328 dm_init_md_queue(md); 2329 2330 md->disk = alloc_disk(1); 2331 if (!md->disk) 2332 goto bad; 2333 2334 atomic_set(&md->pending[0], 0); 2335 atomic_set(&md->pending[1], 0); 2336 init_waitqueue_head(&md->wait); 2337 INIT_WORK(&md->work, dm_wq_work); 2338 init_waitqueue_head(&md->eventq); 2339 init_completion(&md->kobj_holder.completion); 2340 md->kworker_task = NULL; 2341 2342 md->disk->major = _major; 2343 md->disk->first_minor = minor; 2344 md->disk->fops = &dm_blk_dops; 2345 md->disk->queue = md->queue; 2346 md->disk->private_data = md; 2347 sprintf(md->disk->disk_name, "dm-%d", minor); 2348 add_disk(md->disk); 2349 format_dev_t(md->name, MKDEV(_major, minor)); 2350 2351 md->wq = alloc_workqueue("kdmflush", WQ_MEM_RECLAIM, 0); 2352 if (!md->wq) 2353 goto bad; 2354 2355 md->bdev = bdget_disk(md->disk, 0); 2356 if (!md->bdev) 2357 goto bad; 2358 2359 bio_init(&md->flush_bio); 2360 md->flush_bio.bi_bdev = md->bdev; 2361 md->flush_bio.bi_rw = WRITE_FLUSH; 2362 2363 dm_stats_init(&md->stats); 2364 2365 /* Populate the mapping, nobody knows we exist yet */ 2366 spin_lock(&_minor_lock); 2367 old_md = idr_replace(&_minor_idr, md, minor); 2368 spin_unlock(&_minor_lock); 2369 2370 BUG_ON(old_md != MINOR_ALLOCED); 2371 2372 return md; 2373 2374 bad: 2375 cleanup_mapped_device(md); 2376 bad_io_barrier: 2377 free_minor(minor); 2378 bad_minor: 2379 module_put(THIS_MODULE); 2380 bad_module_get: 2381 kfree(md); 2382 return NULL; 2383 } 2384 2385 static void unlock_fs(struct mapped_device *md); 2386 2387 static void free_dev(struct mapped_device *md) 2388 { 2389 int minor = MINOR(disk_devt(md->disk)); 2390 2391 unlock_fs(md); 2392 2393 cleanup_mapped_device(md); 2394 if (md->use_blk_mq) 2395 blk_mq_free_tag_set(&md->tag_set); 2396 2397 free_table_devices(&md->table_devices); 2398 dm_stats_cleanup(&md->stats); 2399 free_minor(minor); 2400 2401 module_put(THIS_MODULE); 2402 kfree(md); 2403 } 2404 2405 static void __bind_mempools(struct mapped_device *md, struct dm_table *t) 2406 { 2407 struct dm_md_mempools *p = dm_table_get_md_mempools(t); 2408 2409 if (md->bs) { 2410 /* The md already has necessary mempools. */ 2411 if (dm_table_get_type(t) == DM_TYPE_BIO_BASED) { 2412 /* 2413 * Reload bioset because front_pad may have changed 2414 * because a different table was loaded. 2415 */ 2416 bioset_free(md->bs); 2417 md->bs = p->bs; 2418 p->bs = NULL; 2419 } 2420 /* 2421 * There's no need to reload with request-based dm 2422 * because the size of front_pad doesn't change. 2423 * Note for future: If you are to reload bioset, 2424 * prep-ed requests in the queue may refer 2425 * to bio from the old bioset, so you must walk 2426 * through the queue to unprep. 2427 */ 2428 goto out; 2429 } 2430 2431 BUG_ON(!p || md->io_pool || md->rq_pool || md->bs); 2432 2433 md->io_pool = p->io_pool; 2434 p->io_pool = NULL; 2435 md->rq_pool = p->rq_pool; 2436 p->rq_pool = NULL; 2437 md->bs = p->bs; 2438 p->bs = NULL; 2439 2440 out: 2441 /* mempool bind completed, no longer need any mempools in the table */ 2442 dm_table_free_md_mempools(t); 2443 } 2444 2445 /* 2446 * Bind a table to the device. 2447 */ 2448 static void event_callback(void *context) 2449 { 2450 unsigned long flags; 2451 LIST_HEAD(uevents); 2452 struct mapped_device *md = (struct mapped_device *) context; 2453 2454 spin_lock_irqsave(&md->uevent_lock, flags); 2455 list_splice_init(&md->uevent_list, &uevents); 2456 spin_unlock_irqrestore(&md->uevent_lock, flags); 2457 2458 dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj); 2459 2460 atomic_inc(&md->event_nr); 2461 wake_up(&md->eventq); 2462 } 2463 2464 /* 2465 * Protected by md->suspend_lock obtained by dm_swap_table(). 2466 */ 2467 static void __set_size(struct mapped_device *md, sector_t size) 2468 { 2469 set_capacity(md->disk, size); 2470 2471 i_size_write(md->bdev->bd_inode, (loff_t)size << SECTOR_SHIFT); 2472 } 2473 2474 /* 2475 * Returns old map, which caller must destroy. 2476 */ 2477 static struct dm_table *__bind(struct mapped_device *md, struct dm_table *t, 2478 struct queue_limits *limits) 2479 { 2480 struct dm_table *old_map; 2481 struct request_queue *q = md->queue; 2482 sector_t size; 2483 2484 size = dm_table_get_size(t); 2485 2486 /* 2487 * Wipe any geometry if the size of the table changed. 2488 */ 2489 if (size != dm_get_size(md)) 2490 memset(&md->geometry, 0, sizeof(md->geometry)); 2491 2492 __set_size(md, size); 2493 2494 dm_table_event_callback(t, event_callback, md); 2495 2496 /* 2497 * The queue hasn't been stopped yet, if the old table type wasn't 2498 * for request-based during suspension. So stop it to prevent 2499 * I/O mapping before resume. 2500 * This must be done before setting the queue restrictions, 2501 * because request-based dm may be run just after the setting. 2502 */ 2503 if (dm_table_request_based(t)) 2504 stop_queue(q); 2505 2506 __bind_mempools(md, t); 2507 2508 old_map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock)); 2509 rcu_assign_pointer(md->map, t); 2510 md->immutable_target_type = dm_table_get_immutable_target_type(t); 2511 2512 dm_table_set_restrictions(t, q, limits); 2513 if (old_map) 2514 dm_sync_table(md); 2515 2516 return old_map; 2517 } 2518 2519 /* 2520 * Returns unbound table for the caller to free. 2521 */ 2522 static struct dm_table *__unbind(struct mapped_device *md) 2523 { 2524 struct dm_table *map = rcu_dereference_protected(md->map, 1); 2525 2526 if (!map) 2527 return NULL; 2528 2529 dm_table_event_callback(map, NULL, NULL); 2530 RCU_INIT_POINTER(md->map, NULL); 2531 dm_sync_table(md); 2532 2533 return map; 2534 } 2535 2536 /* 2537 * Constructor for a new device. 2538 */ 2539 int dm_create(int minor, struct mapped_device **result) 2540 { 2541 struct mapped_device *md; 2542 2543 md = alloc_dev(minor); 2544 if (!md) 2545 return -ENXIO; 2546 2547 dm_sysfs_init(md); 2548 2549 *result = md; 2550 return 0; 2551 } 2552 2553 /* 2554 * Functions to manage md->type. 2555 * All are required to hold md->type_lock. 2556 */ 2557 void dm_lock_md_type(struct mapped_device *md) 2558 { 2559 mutex_lock(&md->type_lock); 2560 } 2561 2562 void dm_unlock_md_type(struct mapped_device *md) 2563 { 2564 mutex_unlock(&md->type_lock); 2565 } 2566 2567 void dm_set_md_type(struct mapped_device *md, unsigned type) 2568 { 2569 BUG_ON(!mutex_is_locked(&md->type_lock)); 2570 md->type = type; 2571 } 2572 2573 unsigned dm_get_md_type(struct mapped_device *md) 2574 { 2575 BUG_ON(!mutex_is_locked(&md->type_lock)); 2576 return md->type; 2577 } 2578 2579 struct target_type *dm_get_immutable_target_type(struct mapped_device *md) 2580 { 2581 return md->immutable_target_type; 2582 } 2583 2584 /* 2585 * The queue_limits are only valid as long as you have a reference 2586 * count on 'md'. 2587 */ 2588 struct queue_limits *dm_get_queue_limits(struct mapped_device *md) 2589 { 2590 BUG_ON(!atomic_read(&md->holders)); 2591 return &md->queue->limits; 2592 } 2593 EXPORT_SYMBOL_GPL(dm_get_queue_limits); 2594 2595 static void init_rq_based_worker_thread(struct mapped_device *md) 2596 { 2597 /* Initialize the request-based DM worker thread */ 2598 init_kthread_worker(&md->kworker); 2599 md->kworker_task = kthread_run(kthread_worker_fn, &md->kworker, 2600 "kdmwork-%s", dm_device_name(md)); 2601 } 2602 2603 /* 2604 * Fully initialize a request-based queue (->elevator, ->request_fn, etc). 2605 */ 2606 static int dm_init_request_based_queue(struct mapped_device *md) 2607 { 2608 struct request_queue *q = NULL; 2609 2610 /* Fully initialize the queue */ 2611 q = blk_init_allocated_queue(md->queue, dm_request_fn, NULL); 2612 if (!q) 2613 return -EINVAL; 2614 2615 /* disable dm_request_fn's merge heuristic by default */ 2616 md->seq_rq_merge_deadline_usecs = 0; 2617 2618 md->queue = q; 2619 dm_init_old_md_queue(md); 2620 blk_queue_softirq_done(md->queue, dm_softirq_done); 2621 blk_queue_prep_rq(md->queue, dm_prep_fn); 2622 2623 init_rq_based_worker_thread(md); 2624 2625 elv_register_queue(md->queue); 2626 2627 return 0; 2628 } 2629 2630 static int dm_mq_init_request(void *data, struct request *rq, 2631 unsigned int hctx_idx, unsigned int request_idx, 2632 unsigned int numa_node) 2633 { 2634 struct mapped_device *md = data; 2635 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq); 2636 2637 /* 2638 * Must initialize md member of tio, otherwise it won't 2639 * be available in dm_mq_queue_rq. 2640 */ 2641 tio->md = md; 2642 2643 return 0; 2644 } 2645 2646 static int dm_mq_queue_rq(struct blk_mq_hw_ctx *hctx, 2647 const struct blk_mq_queue_data *bd) 2648 { 2649 struct request *rq = bd->rq; 2650 struct dm_rq_target_io *tio = blk_mq_rq_to_pdu(rq); 2651 struct mapped_device *md = tio->md; 2652 int srcu_idx; 2653 struct dm_table *map = dm_get_live_table(md, &srcu_idx); 2654 struct dm_target *ti; 2655 sector_t pos; 2656 2657 /* always use block 0 to find the target for flushes for now */ 2658 pos = 0; 2659 if (!(rq->cmd_flags & REQ_FLUSH)) 2660 pos = blk_rq_pos(rq); 2661 2662 ti = dm_table_find_target(map, pos); 2663 if (!dm_target_is_valid(ti)) { 2664 dm_put_live_table(md, srcu_idx); 2665 DMERR_LIMIT("request attempted access beyond the end of device"); 2666 /* 2667 * Must perform setup, that rq_completed() requires, 2668 * before returning BLK_MQ_RQ_QUEUE_ERROR 2669 */ 2670 dm_start_request(md, rq); 2671 return BLK_MQ_RQ_QUEUE_ERROR; 2672 } 2673 dm_put_live_table(md, srcu_idx); 2674 2675 if (ti->type->busy && ti->type->busy(ti)) 2676 return BLK_MQ_RQ_QUEUE_BUSY; 2677 2678 dm_start_request(md, rq); 2679 2680 /* Init tio using md established in .init_request */ 2681 init_tio(tio, rq, md); 2682 2683 /* 2684 * Establish tio->ti before queuing work (map_tio_request) 2685 * or making direct call to map_request(). 2686 */ 2687 tio->ti = ti; 2688 2689 /* Clone the request if underlying devices aren't blk-mq */ 2690 if (dm_table_get_type(map) == DM_TYPE_REQUEST_BASED) { 2691 /* clone request is allocated at the end of the pdu */ 2692 tio->clone = (void *)blk_mq_rq_to_pdu(rq) + sizeof(struct dm_rq_target_io); 2693 (void) clone_rq(rq, md, tio, GFP_ATOMIC); 2694 queue_kthread_work(&md->kworker, &tio->work); 2695 } else { 2696 /* Direct call is fine since .queue_rq allows allocations */ 2697 if (map_request(tio, rq, md) == DM_MAPIO_REQUEUE) { 2698 /* Undo dm_start_request() before requeuing */ 2699 rq_end_stats(md, rq); 2700 rq_completed(md, rq_data_dir(rq), false); 2701 return BLK_MQ_RQ_QUEUE_BUSY; 2702 } 2703 } 2704 2705 return BLK_MQ_RQ_QUEUE_OK; 2706 } 2707 2708 static struct blk_mq_ops dm_mq_ops = { 2709 .queue_rq = dm_mq_queue_rq, 2710 .map_queue = blk_mq_map_queue, 2711 .complete = dm_softirq_done, 2712 .init_request = dm_mq_init_request, 2713 }; 2714 2715 static int dm_init_request_based_blk_mq_queue(struct mapped_device *md) 2716 { 2717 unsigned md_type = dm_get_md_type(md); 2718 struct request_queue *q; 2719 int err; 2720 2721 memset(&md->tag_set, 0, sizeof(md->tag_set)); 2722 md->tag_set.ops = &dm_mq_ops; 2723 md->tag_set.queue_depth = BLKDEV_MAX_RQ; 2724 md->tag_set.numa_node = NUMA_NO_NODE; 2725 md->tag_set.flags = BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_SG_MERGE; 2726 md->tag_set.nr_hw_queues = 1; 2727 if (md_type == DM_TYPE_REQUEST_BASED) { 2728 /* make the memory for non-blk-mq clone part of the pdu */ 2729 md->tag_set.cmd_size = sizeof(struct dm_rq_target_io) + sizeof(struct request); 2730 } else 2731 md->tag_set.cmd_size = sizeof(struct dm_rq_target_io); 2732 md->tag_set.driver_data = md; 2733 2734 err = blk_mq_alloc_tag_set(&md->tag_set); 2735 if (err) 2736 return err; 2737 2738 q = blk_mq_init_allocated_queue(&md->tag_set, md->queue); 2739 if (IS_ERR(q)) { 2740 err = PTR_ERR(q); 2741 goto out_tag_set; 2742 } 2743 md->queue = q; 2744 dm_init_md_queue(md); 2745 2746 /* backfill 'mq' sysfs registration normally done in blk_register_queue */ 2747 blk_mq_register_disk(md->disk); 2748 2749 if (md_type == DM_TYPE_REQUEST_BASED) 2750 init_rq_based_worker_thread(md); 2751 2752 return 0; 2753 2754 out_tag_set: 2755 blk_mq_free_tag_set(&md->tag_set); 2756 return err; 2757 } 2758 2759 static unsigned filter_md_type(unsigned type, struct mapped_device *md) 2760 { 2761 if (type == DM_TYPE_BIO_BASED) 2762 return type; 2763 2764 return !md->use_blk_mq ? DM_TYPE_REQUEST_BASED : DM_TYPE_MQ_REQUEST_BASED; 2765 } 2766 2767 /* 2768 * Setup the DM device's queue based on md's type 2769 */ 2770 int dm_setup_md_queue(struct mapped_device *md) 2771 { 2772 int r; 2773 unsigned md_type = filter_md_type(dm_get_md_type(md), md); 2774 2775 switch (md_type) { 2776 case DM_TYPE_REQUEST_BASED: 2777 r = dm_init_request_based_queue(md); 2778 if (r) { 2779 DMWARN("Cannot initialize queue for request-based mapped device"); 2780 return r; 2781 } 2782 break; 2783 case DM_TYPE_MQ_REQUEST_BASED: 2784 r = dm_init_request_based_blk_mq_queue(md); 2785 if (r) { 2786 DMWARN("Cannot initialize queue for request-based blk-mq mapped device"); 2787 return r; 2788 } 2789 break; 2790 case DM_TYPE_BIO_BASED: 2791 dm_init_old_md_queue(md); 2792 blk_queue_make_request(md->queue, dm_make_request); 2793 /* 2794 * DM handles splitting bios as needed. Free the bio_split bioset 2795 * since it won't be used (saves 1 process per bio-based DM device). 2796 */ 2797 bioset_free(md->queue->bio_split); 2798 md->queue->bio_split = NULL; 2799 break; 2800 } 2801 2802 return 0; 2803 } 2804 2805 struct mapped_device *dm_get_md(dev_t dev) 2806 { 2807 struct mapped_device *md; 2808 unsigned minor = MINOR(dev); 2809 2810 if (MAJOR(dev) != _major || minor >= (1 << MINORBITS)) 2811 return NULL; 2812 2813 spin_lock(&_minor_lock); 2814 2815 md = idr_find(&_minor_idr, minor); 2816 if (md) { 2817 if ((md == MINOR_ALLOCED || 2818 (MINOR(disk_devt(dm_disk(md))) != minor) || 2819 dm_deleting_md(md) || 2820 test_bit(DMF_FREEING, &md->flags))) { 2821 md = NULL; 2822 goto out; 2823 } 2824 dm_get(md); 2825 } 2826 2827 out: 2828 spin_unlock(&_minor_lock); 2829 2830 return md; 2831 } 2832 EXPORT_SYMBOL_GPL(dm_get_md); 2833 2834 void *dm_get_mdptr(struct mapped_device *md) 2835 { 2836 return md->interface_ptr; 2837 } 2838 2839 void dm_set_mdptr(struct mapped_device *md, void *ptr) 2840 { 2841 md->interface_ptr = ptr; 2842 } 2843 2844 void dm_get(struct mapped_device *md) 2845 { 2846 atomic_inc(&md->holders); 2847 BUG_ON(test_bit(DMF_FREEING, &md->flags)); 2848 } 2849 2850 int dm_hold(struct mapped_device *md) 2851 { 2852 spin_lock(&_minor_lock); 2853 if (test_bit(DMF_FREEING, &md->flags)) { 2854 spin_unlock(&_minor_lock); 2855 return -EBUSY; 2856 } 2857 dm_get(md); 2858 spin_unlock(&_minor_lock); 2859 return 0; 2860 } 2861 EXPORT_SYMBOL_GPL(dm_hold); 2862 2863 const char *dm_device_name(struct mapped_device *md) 2864 { 2865 return md->name; 2866 } 2867 EXPORT_SYMBOL_GPL(dm_device_name); 2868 2869 static void __dm_destroy(struct mapped_device *md, bool wait) 2870 { 2871 struct dm_table *map; 2872 int srcu_idx; 2873 2874 might_sleep(); 2875 2876 spin_lock(&_minor_lock); 2877 idr_replace(&_minor_idr, MINOR_ALLOCED, MINOR(disk_devt(dm_disk(md)))); 2878 set_bit(DMF_FREEING, &md->flags); 2879 spin_unlock(&_minor_lock); 2880 2881 if (dm_request_based(md) && md->kworker_task) 2882 flush_kthread_worker(&md->kworker); 2883 2884 /* 2885 * Take suspend_lock so that presuspend and postsuspend methods 2886 * do not race with internal suspend. 2887 */ 2888 mutex_lock(&md->suspend_lock); 2889 map = dm_get_live_table(md, &srcu_idx); 2890 if (!dm_suspended_md(md)) { 2891 dm_table_presuspend_targets(map); 2892 dm_table_postsuspend_targets(map); 2893 } 2894 /* dm_put_live_table must be before msleep, otherwise deadlock is possible */ 2895 dm_put_live_table(md, srcu_idx); 2896 mutex_unlock(&md->suspend_lock); 2897 2898 /* 2899 * Rare, but there may be I/O requests still going to complete, 2900 * for example. Wait for all references to disappear. 2901 * No one should increment the reference count of the mapped_device, 2902 * after the mapped_device state becomes DMF_FREEING. 2903 */ 2904 if (wait) 2905 while (atomic_read(&md->holders)) 2906 msleep(1); 2907 else if (atomic_read(&md->holders)) 2908 DMWARN("%s: Forcibly removing mapped_device still in use! (%d users)", 2909 dm_device_name(md), atomic_read(&md->holders)); 2910 2911 dm_sysfs_exit(md); 2912 dm_table_destroy(__unbind(md)); 2913 free_dev(md); 2914 } 2915 2916 void dm_destroy(struct mapped_device *md) 2917 { 2918 __dm_destroy(md, true); 2919 } 2920 2921 void dm_destroy_immediate(struct mapped_device *md) 2922 { 2923 __dm_destroy(md, false); 2924 } 2925 2926 void dm_put(struct mapped_device *md) 2927 { 2928 atomic_dec(&md->holders); 2929 } 2930 EXPORT_SYMBOL_GPL(dm_put); 2931 2932 static int dm_wait_for_completion(struct mapped_device *md, int interruptible) 2933 { 2934 int r = 0; 2935 DECLARE_WAITQUEUE(wait, current); 2936 2937 add_wait_queue(&md->wait, &wait); 2938 2939 while (1) { 2940 set_current_state(interruptible); 2941 2942 if (!md_in_flight(md)) 2943 break; 2944 2945 if (interruptible == TASK_INTERRUPTIBLE && 2946 signal_pending(current)) { 2947 r = -EINTR; 2948 break; 2949 } 2950 2951 io_schedule(); 2952 } 2953 set_current_state(TASK_RUNNING); 2954 2955 remove_wait_queue(&md->wait, &wait); 2956 2957 return r; 2958 } 2959 2960 /* 2961 * Process the deferred bios 2962 */ 2963 static void dm_wq_work(struct work_struct *work) 2964 { 2965 struct mapped_device *md = container_of(work, struct mapped_device, 2966 work); 2967 struct bio *c; 2968 int srcu_idx; 2969 struct dm_table *map; 2970 2971 map = dm_get_live_table(md, &srcu_idx); 2972 2973 while (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) { 2974 spin_lock_irq(&md->deferred_lock); 2975 c = bio_list_pop(&md->deferred); 2976 spin_unlock_irq(&md->deferred_lock); 2977 2978 if (!c) 2979 break; 2980 2981 if (dm_request_based(md)) 2982 generic_make_request(c); 2983 else 2984 __split_and_process_bio(md, map, c); 2985 } 2986 2987 dm_put_live_table(md, srcu_idx); 2988 } 2989 2990 static void dm_queue_flush(struct mapped_device *md) 2991 { 2992 clear_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags); 2993 smp_mb__after_atomic(); 2994 queue_work(md->wq, &md->work); 2995 } 2996 2997 /* 2998 * Swap in a new table, returning the old one for the caller to destroy. 2999 */ 3000 struct dm_table *dm_swap_table(struct mapped_device *md, struct dm_table *table) 3001 { 3002 struct dm_table *live_map = NULL, *map = ERR_PTR(-EINVAL); 3003 struct queue_limits limits; 3004 int r; 3005 3006 mutex_lock(&md->suspend_lock); 3007 3008 /* device must be suspended */ 3009 if (!dm_suspended_md(md)) 3010 goto out; 3011 3012 /* 3013 * If the new table has no data devices, retain the existing limits. 3014 * This helps multipath with queue_if_no_path if all paths disappear, 3015 * then new I/O is queued based on these limits, and then some paths 3016 * reappear. 3017 */ 3018 if (dm_table_has_no_data_devices(table)) { 3019 live_map = dm_get_live_table_fast(md); 3020 if (live_map) 3021 limits = md->queue->limits; 3022 dm_put_live_table_fast(md); 3023 } 3024 3025 if (!live_map) { 3026 r = dm_calculate_queue_limits(table, &limits); 3027 if (r) { 3028 map = ERR_PTR(r); 3029 goto out; 3030 } 3031 } 3032 3033 map = __bind(md, table, &limits); 3034 3035 out: 3036 mutex_unlock(&md->suspend_lock); 3037 return map; 3038 } 3039 3040 /* 3041 * Functions to lock and unlock any filesystem running on the 3042 * device. 3043 */ 3044 static int lock_fs(struct mapped_device *md) 3045 { 3046 int r; 3047 3048 WARN_ON(md->frozen_sb); 3049 3050 md->frozen_sb = freeze_bdev(md->bdev); 3051 if (IS_ERR(md->frozen_sb)) { 3052 r = PTR_ERR(md->frozen_sb); 3053 md->frozen_sb = NULL; 3054 return r; 3055 } 3056 3057 set_bit(DMF_FROZEN, &md->flags); 3058 3059 return 0; 3060 } 3061 3062 static void unlock_fs(struct mapped_device *md) 3063 { 3064 if (!test_bit(DMF_FROZEN, &md->flags)) 3065 return; 3066 3067 thaw_bdev(md->bdev, md->frozen_sb); 3068 md->frozen_sb = NULL; 3069 clear_bit(DMF_FROZEN, &md->flags); 3070 } 3071 3072 /* 3073 * If __dm_suspend returns 0, the device is completely quiescent 3074 * now. There is no request-processing activity. All new requests 3075 * are being added to md->deferred list. 3076 * 3077 * Caller must hold md->suspend_lock 3078 */ 3079 static int __dm_suspend(struct mapped_device *md, struct dm_table *map, 3080 unsigned suspend_flags, int interruptible) 3081 { 3082 bool do_lockfs = suspend_flags & DM_SUSPEND_LOCKFS_FLAG; 3083 bool noflush = suspend_flags & DM_SUSPEND_NOFLUSH_FLAG; 3084 int r; 3085 3086 /* 3087 * DMF_NOFLUSH_SUSPENDING must be set before presuspend. 3088 * This flag is cleared before dm_suspend returns. 3089 */ 3090 if (noflush) 3091 set_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); 3092 3093 /* 3094 * This gets reverted if there's an error later and the targets 3095 * provide the .presuspend_undo hook. 3096 */ 3097 dm_table_presuspend_targets(map); 3098 3099 /* 3100 * Flush I/O to the device. 3101 * Any I/O submitted after lock_fs() may not be flushed. 3102 * noflush takes precedence over do_lockfs. 3103 * (lock_fs() flushes I/Os and waits for them to complete.) 3104 */ 3105 if (!noflush && do_lockfs) { 3106 r = lock_fs(md); 3107 if (r) { 3108 dm_table_presuspend_undo_targets(map); 3109 return r; 3110 } 3111 } 3112 3113 /* 3114 * Here we must make sure that no processes are submitting requests 3115 * to target drivers i.e. no one may be executing 3116 * __split_and_process_bio. This is called from dm_request and 3117 * dm_wq_work. 3118 * 3119 * To get all processes out of __split_and_process_bio in dm_request, 3120 * we take the write lock. To prevent any process from reentering 3121 * __split_and_process_bio from dm_request and quiesce the thread 3122 * (dm_wq_work), we set BMF_BLOCK_IO_FOR_SUSPEND and call 3123 * flush_workqueue(md->wq). 3124 */ 3125 set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags); 3126 if (map) 3127 synchronize_srcu(&md->io_barrier); 3128 3129 /* 3130 * Stop md->queue before flushing md->wq in case request-based 3131 * dm defers requests to md->wq from md->queue. 3132 */ 3133 if (dm_request_based(md)) { 3134 stop_queue(md->queue); 3135 if (md->kworker_task) 3136 flush_kthread_worker(&md->kworker); 3137 } 3138 3139 flush_workqueue(md->wq); 3140 3141 /* 3142 * At this point no more requests are entering target request routines. 3143 * We call dm_wait_for_completion to wait for all existing requests 3144 * to finish. 3145 */ 3146 r = dm_wait_for_completion(md, interruptible); 3147 3148 if (noflush) 3149 clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags); 3150 if (map) 3151 synchronize_srcu(&md->io_barrier); 3152 3153 /* were we interrupted ? */ 3154 if (r < 0) { 3155 dm_queue_flush(md); 3156 3157 if (dm_request_based(md)) 3158 start_queue(md->queue); 3159 3160 unlock_fs(md); 3161 dm_table_presuspend_undo_targets(map); 3162 /* pushback list is already flushed, so skip flush */ 3163 } 3164 3165 return r; 3166 } 3167 3168 /* 3169 * We need to be able to change a mapping table under a mounted 3170 * filesystem. For example we might want to move some data in 3171 * the background. Before the table can be swapped with 3172 * dm_bind_table, dm_suspend must be called to flush any in 3173 * flight bios and ensure that any further io gets deferred. 3174 */ 3175 /* 3176 * Suspend mechanism in request-based dm. 3177 * 3178 * 1. Flush all I/Os by lock_fs() if needed. 3179 * 2. Stop dispatching any I/O by stopping the request_queue. 3180 * 3. Wait for all in-flight I/Os to be completed or requeued. 3181 * 3182 * To abort suspend, start the request_queue. 3183 */ 3184 int dm_suspend(struct mapped_device *md, unsigned suspend_flags) 3185 { 3186 struct dm_table *map = NULL; 3187 int r = 0; 3188 3189 retry: 3190 mutex_lock_nested(&md->suspend_lock, SINGLE_DEPTH_NESTING); 3191 3192 if (dm_suspended_md(md)) { 3193 r = -EINVAL; 3194 goto out_unlock; 3195 } 3196 3197 if (dm_suspended_internally_md(md)) { 3198 /* already internally suspended, wait for internal resume */ 3199 mutex_unlock(&md->suspend_lock); 3200 r = wait_on_bit(&md->flags, DMF_SUSPENDED_INTERNALLY, TASK_INTERRUPTIBLE); 3201 if (r) 3202 return r; 3203 goto retry; 3204 } 3205 3206 map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock)); 3207 3208 r = __dm_suspend(md, map, suspend_flags, TASK_INTERRUPTIBLE); 3209 if (r) 3210 goto out_unlock; 3211 3212 set_bit(DMF_SUSPENDED, &md->flags); 3213 3214 dm_table_postsuspend_targets(map); 3215 3216 out_unlock: 3217 mutex_unlock(&md->suspend_lock); 3218 return r; 3219 } 3220 3221 static int __dm_resume(struct mapped_device *md, struct dm_table *map) 3222 { 3223 if (map) { 3224 int r = dm_table_resume_targets(map); 3225 if (r) 3226 return r; 3227 } 3228 3229 dm_queue_flush(md); 3230 3231 /* 3232 * Flushing deferred I/Os must be done after targets are resumed 3233 * so that mapping of targets can work correctly. 3234 * Request-based dm is queueing the deferred I/Os in its request_queue. 3235 */ 3236 if (dm_request_based(md)) 3237 start_queue(md->queue); 3238 3239 unlock_fs(md); 3240 3241 return 0; 3242 } 3243 3244 int dm_resume(struct mapped_device *md) 3245 { 3246 int r = -EINVAL; 3247 struct dm_table *map = NULL; 3248 3249 retry: 3250 mutex_lock_nested(&md->suspend_lock, SINGLE_DEPTH_NESTING); 3251 3252 if (!dm_suspended_md(md)) 3253 goto out; 3254 3255 if (dm_suspended_internally_md(md)) { 3256 /* already internally suspended, wait for internal resume */ 3257 mutex_unlock(&md->suspend_lock); 3258 r = wait_on_bit(&md->flags, DMF_SUSPENDED_INTERNALLY, TASK_INTERRUPTIBLE); 3259 if (r) 3260 return r; 3261 goto retry; 3262 } 3263 3264 map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock)); 3265 if (!map || !dm_table_get_size(map)) 3266 goto out; 3267 3268 r = __dm_resume(md, map); 3269 if (r) 3270 goto out; 3271 3272 clear_bit(DMF_SUSPENDED, &md->flags); 3273 3274 r = 0; 3275 out: 3276 mutex_unlock(&md->suspend_lock); 3277 3278 return r; 3279 } 3280 3281 /* 3282 * Internal suspend/resume works like userspace-driven suspend. It waits 3283 * until all bios finish and prevents issuing new bios to the target drivers. 3284 * It may be used only from the kernel. 3285 */ 3286 3287 static void __dm_internal_suspend(struct mapped_device *md, unsigned suspend_flags) 3288 { 3289 struct dm_table *map = NULL; 3290 3291 if (md->internal_suspend_count++) 3292 return; /* nested internal suspend */ 3293 3294 if (dm_suspended_md(md)) { 3295 set_bit(DMF_SUSPENDED_INTERNALLY, &md->flags); 3296 return; /* nest suspend */ 3297 } 3298 3299 map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock)); 3300 3301 /* 3302 * Using TASK_UNINTERRUPTIBLE because only NOFLUSH internal suspend is 3303 * supported. Properly supporting a TASK_INTERRUPTIBLE internal suspend 3304 * would require changing .presuspend to return an error -- avoid this 3305 * until there is a need for more elaborate variants of internal suspend. 3306 */ 3307 (void) __dm_suspend(md, map, suspend_flags, TASK_UNINTERRUPTIBLE); 3308 3309 set_bit(DMF_SUSPENDED_INTERNALLY, &md->flags); 3310 3311 dm_table_postsuspend_targets(map); 3312 } 3313 3314 static void __dm_internal_resume(struct mapped_device *md) 3315 { 3316 BUG_ON(!md->internal_suspend_count); 3317 3318 if (--md->internal_suspend_count) 3319 return; /* resume from nested internal suspend */ 3320 3321 if (dm_suspended_md(md)) 3322 goto done; /* resume from nested suspend */ 3323 3324 /* 3325 * NOTE: existing callers don't need to call dm_table_resume_targets 3326 * (which may fail -- so best to avoid it for now by passing NULL map) 3327 */ 3328 (void) __dm_resume(md, NULL); 3329 3330 done: 3331 clear_bit(DMF_SUSPENDED_INTERNALLY, &md->flags); 3332 smp_mb__after_atomic(); 3333 wake_up_bit(&md->flags, DMF_SUSPENDED_INTERNALLY); 3334 } 3335 3336 void dm_internal_suspend_noflush(struct mapped_device *md) 3337 { 3338 mutex_lock(&md->suspend_lock); 3339 __dm_internal_suspend(md, DM_SUSPEND_NOFLUSH_FLAG); 3340 mutex_unlock(&md->suspend_lock); 3341 } 3342 EXPORT_SYMBOL_GPL(dm_internal_suspend_noflush); 3343 3344 void dm_internal_resume(struct mapped_device *md) 3345 { 3346 mutex_lock(&md->suspend_lock); 3347 __dm_internal_resume(md); 3348 mutex_unlock(&md->suspend_lock); 3349 } 3350 EXPORT_SYMBOL_GPL(dm_internal_resume); 3351 3352 /* 3353 * Fast variants of internal suspend/resume hold md->suspend_lock, 3354 * which prevents interaction with userspace-driven suspend. 3355 */ 3356 3357 void dm_internal_suspend_fast(struct mapped_device *md) 3358 { 3359 mutex_lock(&md->suspend_lock); 3360 if (dm_suspended_md(md) || dm_suspended_internally_md(md)) 3361 return; 3362 3363 set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags); 3364 synchronize_srcu(&md->io_barrier); 3365 flush_workqueue(md->wq); 3366 dm_wait_for_completion(md, TASK_UNINTERRUPTIBLE); 3367 } 3368 EXPORT_SYMBOL_GPL(dm_internal_suspend_fast); 3369 3370 void dm_internal_resume_fast(struct mapped_device *md) 3371 { 3372 if (dm_suspended_md(md) || dm_suspended_internally_md(md)) 3373 goto done; 3374 3375 dm_queue_flush(md); 3376 3377 done: 3378 mutex_unlock(&md->suspend_lock); 3379 } 3380 EXPORT_SYMBOL_GPL(dm_internal_resume_fast); 3381 3382 /*----------------------------------------------------------------- 3383 * Event notification. 3384 *---------------------------------------------------------------*/ 3385 int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action, 3386 unsigned cookie) 3387 { 3388 char udev_cookie[DM_COOKIE_LENGTH]; 3389 char *envp[] = { udev_cookie, NULL }; 3390 3391 if (!cookie) 3392 return kobject_uevent(&disk_to_dev(md->disk)->kobj, action); 3393 else { 3394 snprintf(udev_cookie, DM_COOKIE_LENGTH, "%s=%u", 3395 DM_COOKIE_ENV_VAR_NAME, cookie); 3396 return kobject_uevent_env(&disk_to_dev(md->disk)->kobj, 3397 action, envp); 3398 } 3399 } 3400 3401 uint32_t dm_next_uevent_seq(struct mapped_device *md) 3402 { 3403 return atomic_add_return(1, &md->uevent_seq); 3404 } 3405 3406 uint32_t dm_get_event_nr(struct mapped_device *md) 3407 { 3408 return atomic_read(&md->event_nr); 3409 } 3410 3411 int dm_wait_event(struct mapped_device *md, int event_nr) 3412 { 3413 return wait_event_interruptible(md->eventq, 3414 (event_nr != atomic_read(&md->event_nr))); 3415 } 3416 3417 void dm_uevent_add(struct mapped_device *md, struct list_head *elist) 3418 { 3419 unsigned long flags; 3420 3421 spin_lock_irqsave(&md->uevent_lock, flags); 3422 list_add(elist, &md->uevent_list); 3423 spin_unlock_irqrestore(&md->uevent_lock, flags); 3424 } 3425 3426 /* 3427 * The gendisk is only valid as long as you have a reference 3428 * count on 'md'. 3429 */ 3430 struct gendisk *dm_disk(struct mapped_device *md) 3431 { 3432 return md->disk; 3433 } 3434 EXPORT_SYMBOL_GPL(dm_disk); 3435 3436 struct kobject *dm_kobject(struct mapped_device *md) 3437 { 3438 return &md->kobj_holder.kobj; 3439 } 3440 3441 struct mapped_device *dm_get_from_kobject(struct kobject *kobj) 3442 { 3443 struct mapped_device *md; 3444 3445 md = container_of(kobj, struct mapped_device, kobj_holder.kobj); 3446 3447 if (test_bit(DMF_FREEING, &md->flags) || 3448 dm_deleting_md(md)) 3449 return NULL; 3450 3451 dm_get(md); 3452 return md; 3453 } 3454 3455 int dm_suspended_md(struct mapped_device *md) 3456 { 3457 return test_bit(DMF_SUSPENDED, &md->flags); 3458 } 3459 3460 int dm_suspended_internally_md(struct mapped_device *md) 3461 { 3462 return test_bit(DMF_SUSPENDED_INTERNALLY, &md->flags); 3463 } 3464 3465 int dm_test_deferred_remove_flag(struct mapped_device *md) 3466 { 3467 return test_bit(DMF_DEFERRED_REMOVE, &md->flags); 3468 } 3469 3470 int dm_suspended(struct dm_target *ti) 3471 { 3472 return dm_suspended_md(dm_table_get_md(ti->table)); 3473 } 3474 EXPORT_SYMBOL_GPL(dm_suspended); 3475 3476 int dm_noflush_suspending(struct dm_target *ti) 3477 { 3478 return __noflush_suspending(dm_table_get_md(ti->table)); 3479 } 3480 EXPORT_SYMBOL_GPL(dm_noflush_suspending); 3481 3482 struct dm_md_mempools *dm_alloc_md_mempools(struct mapped_device *md, unsigned type, 3483 unsigned integrity, unsigned per_bio_data_size) 3484 { 3485 struct dm_md_mempools *pools = kzalloc(sizeof(*pools), GFP_KERNEL); 3486 struct kmem_cache *cachep = NULL; 3487 unsigned int pool_size = 0; 3488 unsigned int front_pad; 3489 3490 if (!pools) 3491 return NULL; 3492 3493 type = filter_md_type(type, md); 3494 3495 switch (type) { 3496 case DM_TYPE_BIO_BASED: 3497 cachep = _io_cache; 3498 pool_size = dm_get_reserved_bio_based_ios(); 3499 front_pad = roundup(per_bio_data_size, __alignof__(struct dm_target_io)) + offsetof(struct dm_target_io, clone); 3500 break; 3501 case DM_TYPE_REQUEST_BASED: 3502 cachep = _rq_tio_cache; 3503 pool_size = dm_get_reserved_rq_based_ios(); 3504 pools->rq_pool = mempool_create_slab_pool(pool_size, _rq_cache); 3505 if (!pools->rq_pool) 3506 goto out; 3507 /* fall through to setup remaining rq-based pools */ 3508 case DM_TYPE_MQ_REQUEST_BASED: 3509 if (!pool_size) 3510 pool_size = dm_get_reserved_rq_based_ios(); 3511 front_pad = offsetof(struct dm_rq_clone_bio_info, clone); 3512 /* per_bio_data_size is not used. See __bind_mempools(). */ 3513 WARN_ON(per_bio_data_size != 0); 3514 break; 3515 default: 3516 BUG(); 3517 } 3518 3519 if (cachep) { 3520 pools->io_pool = mempool_create_slab_pool(pool_size, cachep); 3521 if (!pools->io_pool) 3522 goto out; 3523 } 3524 3525 pools->bs = bioset_create_nobvec(pool_size, front_pad); 3526 if (!pools->bs) 3527 goto out; 3528 3529 if (integrity && bioset_integrity_create(pools->bs, pool_size)) 3530 goto out; 3531 3532 return pools; 3533 3534 out: 3535 dm_free_md_mempools(pools); 3536 3537 return NULL; 3538 } 3539 3540 void dm_free_md_mempools(struct dm_md_mempools *pools) 3541 { 3542 if (!pools) 3543 return; 3544 3545 mempool_destroy(pools->io_pool); 3546 mempool_destroy(pools->rq_pool); 3547 3548 if (pools->bs) 3549 bioset_free(pools->bs); 3550 3551 kfree(pools); 3552 } 3553 3554 static int dm_pr_register(struct block_device *bdev, u64 old_key, u64 new_key, 3555 u32 flags) 3556 { 3557 struct mapped_device *md = bdev->bd_disk->private_data; 3558 const struct pr_ops *ops; 3559 struct dm_target *tgt; 3560 fmode_t mode; 3561 int srcu_idx, r; 3562 3563 r = dm_get_live_table_for_ioctl(md, &tgt, &bdev, &mode, &srcu_idx); 3564 if (r < 0) 3565 return r; 3566 3567 ops = bdev->bd_disk->fops->pr_ops; 3568 if (ops && ops->pr_register) 3569 r = ops->pr_register(bdev, old_key, new_key, flags); 3570 else 3571 r = -EOPNOTSUPP; 3572 3573 dm_put_live_table(md, srcu_idx); 3574 return r; 3575 } 3576 3577 static int dm_pr_reserve(struct block_device *bdev, u64 key, enum pr_type type, 3578 u32 flags) 3579 { 3580 struct mapped_device *md = bdev->bd_disk->private_data; 3581 const struct pr_ops *ops; 3582 struct dm_target *tgt; 3583 fmode_t mode; 3584 int srcu_idx, r; 3585 3586 r = dm_get_live_table_for_ioctl(md, &tgt, &bdev, &mode, &srcu_idx); 3587 if (r < 0) 3588 return r; 3589 3590 ops = bdev->bd_disk->fops->pr_ops; 3591 if (ops && ops->pr_reserve) 3592 r = ops->pr_reserve(bdev, key, type, flags); 3593 else 3594 r = -EOPNOTSUPP; 3595 3596 dm_put_live_table(md, srcu_idx); 3597 return r; 3598 } 3599 3600 static int dm_pr_release(struct block_device *bdev, u64 key, enum pr_type type) 3601 { 3602 struct mapped_device *md = bdev->bd_disk->private_data; 3603 const struct pr_ops *ops; 3604 struct dm_target *tgt; 3605 fmode_t mode; 3606 int srcu_idx, r; 3607 3608 r = dm_get_live_table_for_ioctl(md, &tgt, &bdev, &mode, &srcu_idx); 3609 if (r < 0) 3610 return r; 3611 3612 ops = bdev->bd_disk->fops->pr_ops; 3613 if (ops && ops->pr_release) 3614 r = ops->pr_release(bdev, key, type); 3615 else 3616 r = -EOPNOTSUPP; 3617 3618 dm_put_live_table(md, srcu_idx); 3619 return r; 3620 } 3621 3622 static int dm_pr_preempt(struct block_device *bdev, u64 old_key, u64 new_key, 3623 enum pr_type type, bool abort) 3624 { 3625 struct mapped_device *md = bdev->bd_disk->private_data; 3626 const struct pr_ops *ops; 3627 struct dm_target *tgt; 3628 fmode_t mode; 3629 int srcu_idx, r; 3630 3631 r = dm_get_live_table_for_ioctl(md, &tgt, &bdev, &mode, &srcu_idx); 3632 if (r < 0) 3633 return r; 3634 3635 ops = bdev->bd_disk->fops->pr_ops; 3636 if (ops && ops->pr_preempt) 3637 r = ops->pr_preempt(bdev, old_key, new_key, type, abort); 3638 else 3639 r = -EOPNOTSUPP; 3640 3641 dm_put_live_table(md, srcu_idx); 3642 return r; 3643 } 3644 3645 static int dm_pr_clear(struct block_device *bdev, u64 key) 3646 { 3647 struct mapped_device *md = bdev->bd_disk->private_data; 3648 const struct pr_ops *ops; 3649 struct dm_target *tgt; 3650 fmode_t mode; 3651 int srcu_idx, r; 3652 3653 r = dm_get_live_table_for_ioctl(md, &tgt, &bdev, &mode, &srcu_idx); 3654 if (r < 0) 3655 return r; 3656 3657 ops = bdev->bd_disk->fops->pr_ops; 3658 if (ops && ops->pr_clear) 3659 r = ops->pr_clear(bdev, key); 3660 else 3661 r = -EOPNOTSUPP; 3662 3663 dm_put_live_table(md, srcu_idx); 3664 return r; 3665 } 3666 3667 static const struct pr_ops dm_pr_ops = { 3668 .pr_register = dm_pr_register, 3669 .pr_reserve = dm_pr_reserve, 3670 .pr_release = dm_pr_release, 3671 .pr_preempt = dm_pr_preempt, 3672 .pr_clear = dm_pr_clear, 3673 }; 3674 3675 static const struct block_device_operations dm_blk_dops = { 3676 .open = dm_blk_open, 3677 .release = dm_blk_close, 3678 .ioctl = dm_blk_ioctl, 3679 .getgeo = dm_blk_getgeo, 3680 .pr_ops = &dm_pr_ops, 3681 .owner = THIS_MODULE 3682 }; 3683 3684 /* 3685 * module hooks 3686 */ 3687 module_init(dm_init); 3688 module_exit(dm_exit); 3689 3690 module_param(major, uint, 0); 3691 MODULE_PARM_DESC(major, "The major number of the device mapper"); 3692 3693 module_param(reserved_bio_based_ios, uint, S_IRUGO | S_IWUSR); 3694 MODULE_PARM_DESC(reserved_bio_based_ios, "Reserved IOs in bio-based mempools"); 3695 3696 module_param(reserved_rq_based_ios, uint, S_IRUGO | S_IWUSR); 3697 MODULE_PARM_DESC(reserved_rq_based_ios, "Reserved IOs in request-based mempools"); 3698 3699 module_param(use_blk_mq, bool, S_IRUGO | S_IWUSR); 3700 MODULE_PARM_DESC(use_blk_mq, "Use block multiqueue for request-based DM devices"); 3701 3702 MODULE_DESCRIPTION(DM_NAME " driver"); 3703 MODULE_AUTHOR("Joe Thornber <dm-devel@redhat.com>"); 3704 MODULE_LICENSE("GPL"); 3705