1 /* 2 * Copyright (C) 2012 Red Hat. All rights reserved. 3 * 4 * This file is released under the GPL. 5 */ 6 7 #include "dm.h" 8 #include "dm-bio-prison-v2.h" 9 #include "dm-bio-record.h" 10 #include "dm-cache-metadata.h" 11 12 #include <linux/dm-io.h> 13 #include <linux/dm-kcopyd.h> 14 #include <linux/jiffies.h> 15 #include <linux/init.h> 16 #include <linux/mempool.h> 17 #include <linux/module.h> 18 #include <linux/rwsem.h> 19 #include <linux/slab.h> 20 #include <linux/vmalloc.h> 21 22 #define DM_MSG_PREFIX "cache" 23 24 DECLARE_DM_KCOPYD_THROTTLE_WITH_MODULE_PARM(cache_copy_throttle, 25 "A percentage of time allocated for copying to and/or from cache"); 26 27 /*----------------------------------------------------------------*/ 28 29 /* 30 * Glossary: 31 * 32 * oblock: index of an origin block 33 * cblock: index of a cache block 34 * promotion: movement of a block from origin to cache 35 * demotion: movement of a block from cache to origin 36 * migration: movement of a block between the origin and cache device, 37 * either direction 38 */ 39 40 /*----------------------------------------------------------------*/ 41 42 struct io_tracker { 43 spinlock_t lock; 44 45 /* 46 * Sectors of in-flight IO. 47 */ 48 sector_t in_flight; 49 50 /* 51 * The time, in jiffies, when this device became idle (if it is 52 * indeed idle). 53 */ 54 unsigned long idle_time; 55 unsigned long last_update_time; 56 }; 57 58 static void iot_init(struct io_tracker *iot) 59 { 60 spin_lock_init(&iot->lock); 61 iot->in_flight = 0ul; 62 iot->idle_time = 0ul; 63 iot->last_update_time = jiffies; 64 } 65 66 static bool __iot_idle_for(struct io_tracker *iot, unsigned long jifs) 67 { 68 if (iot->in_flight) 69 return false; 70 71 return time_after(jiffies, iot->idle_time + jifs); 72 } 73 74 static bool iot_idle_for(struct io_tracker *iot, unsigned long jifs) 75 { 76 bool r; 77 78 spin_lock_irq(&iot->lock); 79 r = __iot_idle_for(iot, jifs); 80 spin_unlock_irq(&iot->lock); 81 82 return r; 83 } 84 85 static void iot_io_begin(struct io_tracker *iot, sector_t len) 86 { 87 spin_lock_irq(&iot->lock); 88 iot->in_flight += len; 89 spin_unlock_irq(&iot->lock); 90 } 91 92 static void __iot_io_end(struct io_tracker *iot, sector_t len) 93 { 94 if (!len) 95 return; 96 97 iot->in_flight -= len; 98 if (!iot->in_flight) 99 iot->idle_time = jiffies; 100 } 101 102 static void iot_io_end(struct io_tracker *iot, sector_t len) 103 { 104 unsigned long flags; 105 106 spin_lock_irqsave(&iot->lock, flags); 107 __iot_io_end(iot, len); 108 spin_unlock_irqrestore(&iot->lock, flags); 109 } 110 111 /*----------------------------------------------------------------*/ 112 113 /* 114 * Represents a chunk of future work. 'input' allows continuations to pass 115 * values between themselves, typically error values. 116 */ 117 struct continuation { 118 struct work_struct ws; 119 blk_status_t input; 120 }; 121 122 static inline void init_continuation(struct continuation *k, 123 void (*fn)(struct work_struct *)) 124 { 125 INIT_WORK(&k->ws, fn); 126 k->input = 0; 127 } 128 129 static inline void queue_continuation(struct workqueue_struct *wq, 130 struct continuation *k) 131 { 132 queue_work(wq, &k->ws); 133 } 134 135 /*----------------------------------------------------------------*/ 136 137 /* 138 * The batcher collects together pieces of work that need a particular 139 * operation to occur before they can proceed (typically a commit). 140 */ 141 struct batcher { 142 /* 143 * The operation that everyone is waiting for. 144 */ 145 blk_status_t (*commit_op)(void *context); 146 void *commit_context; 147 148 /* 149 * This is how bios should be issued once the commit op is complete 150 * (accounted_request). 151 */ 152 void (*issue_op)(struct bio *bio, void *context); 153 void *issue_context; 154 155 /* 156 * Queued work gets put on here after commit. 157 */ 158 struct workqueue_struct *wq; 159 160 spinlock_t lock; 161 struct list_head work_items; 162 struct bio_list bios; 163 struct work_struct commit_work; 164 165 bool commit_scheduled; 166 }; 167 168 static void __commit(struct work_struct *_ws) 169 { 170 struct batcher *b = container_of(_ws, struct batcher, commit_work); 171 blk_status_t r; 172 struct list_head work_items; 173 struct work_struct *ws, *tmp; 174 struct continuation *k; 175 struct bio *bio; 176 struct bio_list bios; 177 178 INIT_LIST_HEAD(&work_items); 179 bio_list_init(&bios); 180 181 /* 182 * We have to grab these before the commit_op to avoid a race 183 * condition. 184 */ 185 spin_lock_irq(&b->lock); 186 list_splice_init(&b->work_items, &work_items); 187 bio_list_merge(&bios, &b->bios); 188 bio_list_init(&b->bios); 189 b->commit_scheduled = false; 190 spin_unlock_irq(&b->lock); 191 192 r = b->commit_op(b->commit_context); 193 194 list_for_each_entry_safe(ws, tmp, &work_items, entry) { 195 k = container_of(ws, struct continuation, ws); 196 k->input = r; 197 INIT_LIST_HEAD(&ws->entry); /* to avoid a WARN_ON */ 198 queue_work(b->wq, ws); 199 } 200 201 while ((bio = bio_list_pop(&bios))) { 202 if (r) { 203 bio->bi_status = r; 204 bio_endio(bio); 205 } else 206 b->issue_op(bio, b->issue_context); 207 } 208 } 209 210 static void batcher_init(struct batcher *b, 211 blk_status_t (*commit_op)(void *), 212 void *commit_context, 213 void (*issue_op)(struct bio *bio, void *), 214 void *issue_context, 215 struct workqueue_struct *wq) 216 { 217 b->commit_op = commit_op; 218 b->commit_context = commit_context; 219 b->issue_op = issue_op; 220 b->issue_context = issue_context; 221 b->wq = wq; 222 223 spin_lock_init(&b->lock); 224 INIT_LIST_HEAD(&b->work_items); 225 bio_list_init(&b->bios); 226 INIT_WORK(&b->commit_work, __commit); 227 b->commit_scheduled = false; 228 } 229 230 static void async_commit(struct batcher *b) 231 { 232 queue_work(b->wq, &b->commit_work); 233 } 234 235 static void continue_after_commit(struct batcher *b, struct continuation *k) 236 { 237 bool commit_scheduled; 238 239 spin_lock_irq(&b->lock); 240 commit_scheduled = b->commit_scheduled; 241 list_add_tail(&k->ws.entry, &b->work_items); 242 spin_unlock_irq(&b->lock); 243 244 if (commit_scheduled) 245 async_commit(b); 246 } 247 248 /* 249 * Bios are errored if commit failed. 250 */ 251 static void issue_after_commit(struct batcher *b, struct bio *bio) 252 { 253 bool commit_scheduled; 254 255 spin_lock_irq(&b->lock); 256 commit_scheduled = b->commit_scheduled; 257 bio_list_add(&b->bios, bio); 258 spin_unlock_irq(&b->lock); 259 260 if (commit_scheduled) 261 async_commit(b); 262 } 263 264 /* 265 * Call this if some urgent work is waiting for the commit to complete. 266 */ 267 static void schedule_commit(struct batcher *b) 268 { 269 bool immediate; 270 271 spin_lock_irq(&b->lock); 272 immediate = !list_empty(&b->work_items) || !bio_list_empty(&b->bios); 273 b->commit_scheduled = true; 274 spin_unlock_irq(&b->lock); 275 276 if (immediate) 277 async_commit(b); 278 } 279 280 /* 281 * There are a couple of places where we let a bio run, but want to do some 282 * work before calling its endio function. We do this by temporarily 283 * changing the endio fn. 284 */ 285 struct dm_hook_info { 286 bio_end_io_t *bi_end_io; 287 }; 288 289 static void dm_hook_bio(struct dm_hook_info *h, struct bio *bio, 290 bio_end_io_t *bi_end_io, void *bi_private) 291 { 292 h->bi_end_io = bio->bi_end_io; 293 294 bio->bi_end_io = bi_end_io; 295 bio->bi_private = bi_private; 296 } 297 298 static void dm_unhook_bio(struct dm_hook_info *h, struct bio *bio) 299 { 300 bio->bi_end_io = h->bi_end_io; 301 } 302 303 /*----------------------------------------------------------------*/ 304 305 #define MIGRATION_POOL_SIZE 128 306 #define COMMIT_PERIOD HZ 307 #define MIGRATION_COUNT_WINDOW 10 308 309 /* 310 * The block size of the device holding cache data must be 311 * between 32KB and 1GB. 312 */ 313 #define DATA_DEV_BLOCK_SIZE_MIN_SECTORS (32 * 1024 >> SECTOR_SHIFT) 314 #define DATA_DEV_BLOCK_SIZE_MAX_SECTORS (1024 * 1024 * 1024 >> SECTOR_SHIFT) 315 316 enum cache_metadata_mode { 317 CM_WRITE, /* metadata may be changed */ 318 CM_READ_ONLY, /* metadata may not be changed */ 319 CM_FAIL 320 }; 321 322 enum cache_io_mode { 323 /* 324 * Data is written to cached blocks only. These blocks are marked 325 * dirty. If you lose the cache device you will lose data. 326 * Potential performance increase for both reads and writes. 327 */ 328 CM_IO_WRITEBACK, 329 330 /* 331 * Data is written to both cache and origin. Blocks are never 332 * dirty. Potential performance benfit for reads only. 333 */ 334 CM_IO_WRITETHROUGH, 335 336 /* 337 * A degraded mode useful for various cache coherency situations 338 * (eg, rolling back snapshots). Reads and writes always go to the 339 * origin. If a write goes to a cached oblock, then the cache 340 * block is invalidated. 341 */ 342 CM_IO_PASSTHROUGH 343 }; 344 345 struct cache_features { 346 enum cache_metadata_mode mode; 347 enum cache_io_mode io_mode; 348 unsigned metadata_version; 349 bool discard_passdown:1; 350 }; 351 352 struct cache_stats { 353 atomic_t read_hit; 354 atomic_t read_miss; 355 atomic_t write_hit; 356 atomic_t write_miss; 357 atomic_t demotion; 358 atomic_t promotion; 359 atomic_t writeback; 360 atomic_t copies_avoided; 361 atomic_t cache_cell_clash; 362 atomic_t commit_count; 363 atomic_t discard_count; 364 }; 365 366 struct cache { 367 struct dm_target *ti; 368 spinlock_t lock; 369 370 /* 371 * Fields for converting from sectors to blocks. 372 */ 373 int sectors_per_block_shift; 374 sector_t sectors_per_block; 375 376 struct dm_cache_metadata *cmd; 377 378 /* 379 * Metadata is written to this device. 380 */ 381 struct dm_dev *metadata_dev; 382 383 /* 384 * The slower of the two data devices. Typically a spindle. 385 */ 386 struct dm_dev *origin_dev; 387 388 /* 389 * The faster of the two data devices. Typically an SSD. 390 */ 391 struct dm_dev *cache_dev; 392 393 /* 394 * Size of the origin device in _complete_ blocks and native sectors. 395 */ 396 dm_oblock_t origin_blocks; 397 sector_t origin_sectors; 398 399 /* 400 * Size of the cache device in blocks. 401 */ 402 dm_cblock_t cache_size; 403 404 /* 405 * Invalidation fields. 406 */ 407 spinlock_t invalidation_lock; 408 struct list_head invalidation_requests; 409 410 sector_t migration_threshold; 411 wait_queue_head_t migration_wait; 412 atomic_t nr_allocated_migrations; 413 414 /* 415 * The number of in flight migrations that are performing 416 * background io. eg, promotion, writeback. 417 */ 418 atomic_t nr_io_migrations; 419 420 struct bio_list deferred_bios; 421 422 struct rw_semaphore quiesce_lock; 423 424 struct dm_target_callbacks callbacks; 425 426 /* 427 * origin_blocks entries, discarded if set. 428 */ 429 dm_dblock_t discard_nr_blocks; 430 unsigned long *discard_bitset; 431 uint32_t discard_block_size; /* a power of 2 times sectors per block */ 432 433 /* 434 * Rather than reconstructing the table line for the status we just 435 * save it and regurgitate. 436 */ 437 unsigned nr_ctr_args; 438 const char **ctr_args; 439 440 struct dm_kcopyd_client *copier; 441 struct work_struct deferred_bio_worker; 442 struct work_struct migration_worker; 443 struct workqueue_struct *wq; 444 struct delayed_work waker; 445 struct dm_bio_prison_v2 *prison; 446 447 /* 448 * cache_size entries, dirty if set 449 */ 450 unsigned long *dirty_bitset; 451 atomic_t nr_dirty; 452 453 unsigned policy_nr_args; 454 struct dm_cache_policy *policy; 455 456 /* 457 * Cache features such as write-through. 458 */ 459 struct cache_features features; 460 461 struct cache_stats stats; 462 463 bool need_tick_bio:1; 464 bool sized:1; 465 bool invalidate:1; 466 bool commit_requested:1; 467 bool loaded_mappings:1; 468 bool loaded_discards:1; 469 470 struct rw_semaphore background_work_lock; 471 472 struct batcher committer; 473 struct work_struct commit_ws; 474 475 struct io_tracker tracker; 476 477 mempool_t migration_pool; 478 479 struct bio_set bs; 480 }; 481 482 struct per_bio_data { 483 bool tick:1; 484 unsigned req_nr:2; 485 struct dm_bio_prison_cell_v2 *cell; 486 struct dm_hook_info hook_info; 487 sector_t len; 488 }; 489 490 struct dm_cache_migration { 491 struct continuation k; 492 struct cache *cache; 493 494 struct policy_work *op; 495 struct bio *overwrite_bio; 496 struct dm_bio_prison_cell_v2 *cell; 497 498 dm_cblock_t invalidate_cblock; 499 dm_oblock_t invalidate_oblock; 500 }; 501 502 /*----------------------------------------------------------------*/ 503 504 static bool writethrough_mode(struct cache *cache) 505 { 506 return cache->features.io_mode == CM_IO_WRITETHROUGH; 507 } 508 509 static bool writeback_mode(struct cache *cache) 510 { 511 return cache->features.io_mode == CM_IO_WRITEBACK; 512 } 513 514 static inline bool passthrough_mode(struct cache *cache) 515 { 516 return unlikely(cache->features.io_mode == CM_IO_PASSTHROUGH); 517 } 518 519 /*----------------------------------------------------------------*/ 520 521 static void wake_deferred_bio_worker(struct cache *cache) 522 { 523 queue_work(cache->wq, &cache->deferred_bio_worker); 524 } 525 526 static void wake_migration_worker(struct cache *cache) 527 { 528 if (passthrough_mode(cache)) 529 return; 530 531 queue_work(cache->wq, &cache->migration_worker); 532 } 533 534 /*----------------------------------------------------------------*/ 535 536 static struct dm_bio_prison_cell_v2 *alloc_prison_cell(struct cache *cache) 537 { 538 return dm_bio_prison_alloc_cell_v2(cache->prison, GFP_NOIO); 539 } 540 541 static void free_prison_cell(struct cache *cache, struct dm_bio_prison_cell_v2 *cell) 542 { 543 dm_bio_prison_free_cell_v2(cache->prison, cell); 544 } 545 546 static struct dm_cache_migration *alloc_migration(struct cache *cache) 547 { 548 struct dm_cache_migration *mg; 549 550 mg = mempool_alloc(&cache->migration_pool, GFP_NOIO); 551 552 memset(mg, 0, sizeof(*mg)); 553 554 mg->cache = cache; 555 atomic_inc(&cache->nr_allocated_migrations); 556 557 return mg; 558 } 559 560 static void free_migration(struct dm_cache_migration *mg) 561 { 562 struct cache *cache = mg->cache; 563 564 if (atomic_dec_and_test(&cache->nr_allocated_migrations)) 565 wake_up(&cache->migration_wait); 566 567 mempool_free(mg, &cache->migration_pool); 568 } 569 570 /*----------------------------------------------------------------*/ 571 572 static inline dm_oblock_t oblock_succ(dm_oblock_t b) 573 { 574 return to_oblock(from_oblock(b) + 1ull); 575 } 576 577 static void build_key(dm_oblock_t begin, dm_oblock_t end, struct dm_cell_key_v2 *key) 578 { 579 key->virtual = 0; 580 key->dev = 0; 581 key->block_begin = from_oblock(begin); 582 key->block_end = from_oblock(end); 583 } 584 585 /* 586 * We have two lock levels. Level 0, which is used to prevent WRITEs, and 587 * level 1 which prevents *both* READs and WRITEs. 588 */ 589 #define WRITE_LOCK_LEVEL 0 590 #define READ_WRITE_LOCK_LEVEL 1 591 592 static unsigned lock_level(struct bio *bio) 593 { 594 return bio_data_dir(bio) == WRITE ? 595 WRITE_LOCK_LEVEL : 596 READ_WRITE_LOCK_LEVEL; 597 } 598 599 /*---------------------------------------------------------------- 600 * Per bio data 601 *--------------------------------------------------------------*/ 602 603 static struct per_bio_data *get_per_bio_data(struct bio *bio) 604 { 605 struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data)); 606 BUG_ON(!pb); 607 return pb; 608 } 609 610 static struct per_bio_data *init_per_bio_data(struct bio *bio) 611 { 612 struct per_bio_data *pb = get_per_bio_data(bio); 613 614 pb->tick = false; 615 pb->req_nr = dm_bio_get_target_bio_nr(bio); 616 pb->cell = NULL; 617 pb->len = 0; 618 619 return pb; 620 } 621 622 /*----------------------------------------------------------------*/ 623 624 static void defer_bio(struct cache *cache, struct bio *bio) 625 { 626 spin_lock_irq(&cache->lock); 627 bio_list_add(&cache->deferred_bios, bio); 628 spin_unlock_irq(&cache->lock); 629 630 wake_deferred_bio_worker(cache); 631 } 632 633 static void defer_bios(struct cache *cache, struct bio_list *bios) 634 { 635 spin_lock_irq(&cache->lock); 636 bio_list_merge(&cache->deferred_bios, bios); 637 bio_list_init(bios); 638 spin_unlock_irq(&cache->lock); 639 640 wake_deferred_bio_worker(cache); 641 } 642 643 /*----------------------------------------------------------------*/ 644 645 static bool bio_detain_shared(struct cache *cache, dm_oblock_t oblock, struct bio *bio) 646 { 647 bool r; 648 struct per_bio_data *pb; 649 struct dm_cell_key_v2 key; 650 dm_oblock_t end = to_oblock(from_oblock(oblock) + 1ULL); 651 struct dm_bio_prison_cell_v2 *cell_prealloc, *cell; 652 653 cell_prealloc = alloc_prison_cell(cache); /* FIXME: allow wait if calling from worker */ 654 655 build_key(oblock, end, &key); 656 r = dm_cell_get_v2(cache->prison, &key, lock_level(bio), bio, cell_prealloc, &cell); 657 if (!r) { 658 /* 659 * Failed to get the lock. 660 */ 661 free_prison_cell(cache, cell_prealloc); 662 return r; 663 } 664 665 if (cell != cell_prealloc) 666 free_prison_cell(cache, cell_prealloc); 667 668 pb = get_per_bio_data(bio); 669 pb->cell = cell; 670 671 return r; 672 } 673 674 /*----------------------------------------------------------------*/ 675 676 static bool is_dirty(struct cache *cache, dm_cblock_t b) 677 { 678 return test_bit(from_cblock(b), cache->dirty_bitset); 679 } 680 681 static void set_dirty(struct cache *cache, dm_cblock_t cblock) 682 { 683 if (!test_and_set_bit(from_cblock(cblock), cache->dirty_bitset)) { 684 atomic_inc(&cache->nr_dirty); 685 policy_set_dirty(cache->policy, cblock); 686 } 687 } 688 689 /* 690 * These two are called when setting after migrations to force the policy 691 * and dirty bitset to be in sync. 692 */ 693 static void force_set_dirty(struct cache *cache, dm_cblock_t cblock) 694 { 695 if (!test_and_set_bit(from_cblock(cblock), cache->dirty_bitset)) 696 atomic_inc(&cache->nr_dirty); 697 policy_set_dirty(cache->policy, cblock); 698 } 699 700 static void force_clear_dirty(struct cache *cache, dm_cblock_t cblock) 701 { 702 if (test_and_clear_bit(from_cblock(cblock), cache->dirty_bitset)) { 703 if (atomic_dec_return(&cache->nr_dirty) == 0) 704 dm_table_event(cache->ti->table); 705 } 706 707 policy_clear_dirty(cache->policy, cblock); 708 } 709 710 /*----------------------------------------------------------------*/ 711 712 static bool block_size_is_power_of_two(struct cache *cache) 713 { 714 return cache->sectors_per_block_shift >= 0; 715 } 716 717 /* gcc on ARM generates spurious references to __udivdi3 and __umoddi3 */ 718 #if defined(CONFIG_ARM) && __GNUC__ == 4 && __GNUC_MINOR__ <= 6 719 __always_inline 720 #endif 721 static dm_block_t block_div(dm_block_t b, uint32_t n) 722 { 723 do_div(b, n); 724 725 return b; 726 } 727 728 static dm_block_t oblocks_per_dblock(struct cache *cache) 729 { 730 dm_block_t oblocks = cache->discard_block_size; 731 732 if (block_size_is_power_of_two(cache)) 733 oblocks >>= cache->sectors_per_block_shift; 734 else 735 oblocks = block_div(oblocks, cache->sectors_per_block); 736 737 return oblocks; 738 } 739 740 static dm_dblock_t oblock_to_dblock(struct cache *cache, dm_oblock_t oblock) 741 { 742 return to_dblock(block_div(from_oblock(oblock), 743 oblocks_per_dblock(cache))); 744 } 745 746 static void set_discard(struct cache *cache, dm_dblock_t b) 747 { 748 BUG_ON(from_dblock(b) >= from_dblock(cache->discard_nr_blocks)); 749 atomic_inc(&cache->stats.discard_count); 750 751 spin_lock_irq(&cache->lock); 752 set_bit(from_dblock(b), cache->discard_bitset); 753 spin_unlock_irq(&cache->lock); 754 } 755 756 static void clear_discard(struct cache *cache, dm_dblock_t b) 757 { 758 spin_lock_irq(&cache->lock); 759 clear_bit(from_dblock(b), cache->discard_bitset); 760 spin_unlock_irq(&cache->lock); 761 } 762 763 static bool is_discarded(struct cache *cache, dm_dblock_t b) 764 { 765 int r; 766 spin_lock_irq(&cache->lock); 767 r = test_bit(from_dblock(b), cache->discard_bitset); 768 spin_unlock_irq(&cache->lock); 769 770 return r; 771 } 772 773 static bool is_discarded_oblock(struct cache *cache, dm_oblock_t b) 774 { 775 int r; 776 spin_lock_irq(&cache->lock); 777 r = test_bit(from_dblock(oblock_to_dblock(cache, b)), 778 cache->discard_bitset); 779 spin_unlock_irq(&cache->lock); 780 781 return r; 782 } 783 784 /*---------------------------------------------------------------- 785 * Remapping 786 *--------------------------------------------------------------*/ 787 static void remap_to_origin(struct cache *cache, struct bio *bio) 788 { 789 bio_set_dev(bio, cache->origin_dev->bdev); 790 } 791 792 static void remap_to_cache(struct cache *cache, struct bio *bio, 793 dm_cblock_t cblock) 794 { 795 sector_t bi_sector = bio->bi_iter.bi_sector; 796 sector_t block = from_cblock(cblock); 797 798 bio_set_dev(bio, cache->cache_dev->bdev); 799 if (!block_size_is_power_of_two(cache)) 800 bio->bi_iter.bi_sector = 801 (block * cache->sectors_per_block) + 802 sector_div(bi_sector, cache->sectors_per_block); 803 else 804 bio->bi_iter.bi_sector = 805 (block << cache->sectors_per_block_shift) | 806 (bi_sector & (cache->sectors_per_block - 1)); 807 } 808 809 static void check_if_tick_bio_needed(struct cache *cache, struct bio *bio) 810 { 811 struct per_bio_data *pb; 812 813 spin_lock_irq(&cache->lock); 814 if (cache->need_tick_bio && !op_is_flush(bio->bi_opf) && 815 bio_op(bio) != REQ_OP_DISCARD) { 816 pb = get_per_bio_data(bio); 817 pb->tick = true; 818 cache->need_tick_bio = false; 819 } 820 spin_unlock_irq(&cache->lock); 821 } 822 823 static void __remap_to_origin_clear_discard(struct cache *cache, struct bio *bio, 824 dm_oblock_t oblock, bool bio_has_pbd) 825 { 826 if (bio_has_pbd) 827 check_if_tick_bio_needed(cache, bio); 828 remap_to_origin(cache, bio); 829 if (bio_data_dir(bio) == WRITE) 830 clear_discard(cache, oblock_to_dblock(cache, oblock)); 831 } 832 833 static void remap_to_origin_clear_discard(struct cache *cache, struct bio *bio, 834 dm_oblock_t oblock) 835 { 836 // FIXME: check_if_tick_bio_needed() is called way too much through this interface 837 __remap_to_origin_clear_discard(cache, bio, oblock, true); 838 } 839 840 static void remap_to_cache_dirty(struct cache *cache, struct bio *bio, 841 dm_oblock_t oblock, dm_cblock_t cblock) 842 { 843 check_if_tick_bio_needed(cache, bio); 844 remap_to_cache(cache, bio, cblock); 845 if (bio_data_dir(bio) == WRITE) { 846 set_dirty(cache, cblock); 847 clear_discard(cache, oblock_to_dblock(cache, oblock)); 848 } 849 } 850 851 static dm_oblock_t get_bio_block(struct cache *cache, struct bio *bio) 852 { 853 sector_t block_nr = bio->bi_iter.bi_sector; 854 855 if (!block_size_is_power_of_two(cache)) 856 (void) sector_div(block_nr, cache->sectors_per_block); 857 else 858 block_nr >>= cache->sectors_per_block_shift; 859 860 return to_oblock(block_nr); 861 } 862 863 static bool accountable_bio(struct cache *cache, struct bio *bio) 864 { 865 return bio_op(bio) != REQ_OP_DISCARD; 866 } 867 868 static void accounted_begin(struct cache *cache, struct bio *bio) 869 { 870 struct per_bio_data *pb; 871 872 if (accountable_bio(cache, bio)) { 873 pb = get_per_bio_data(bio); 874 pb->len = bio_sectors(bio); 875 iot_io_begin(&cache->tracker, pb->len); 876 } 877 } 878 879 static void accounted_complete(struct cache *cache, struct bio *bio) 880 { 881 struct per_bio_data *pb = get_per_bio_data(bio); 882 883 iot_io_end(&cache->tracker, pb->len); 884 } 885 886 static void accounted_request(struct cache *cache, struct bio *bio) 887 { 888 accounted_begin(cache, bio); 889 generic_make_request(bio); 890 } 891 892 static void issue_op(struct bio *bio, void *context) 893 { 894 struct cache *cache = context; 895 accounted_request(cache, bio); 896 } 897 898 /* 899 * When running in writethrough mode we need to send writes to clean blocks 900 * to both the cache and origin devices. Clone the bio and send them in parallel. 901 */ 902 static void remap_to_origin_and_cache(struct cache *cache, struct bio *bio, 903 dm_oblock_t oblock, dm_cblock_t cblock) 904 { 905 struct bio *origin_bio = bio_clone_fast(bio, GFP_NOIO, &cache->bs); 906 907 BUG_ON(!origin_bio); 908 909 bio_chain(origin_bio, bio); 910 /* 911 * Passing false to __remap_to_origin_clear_discard() skips 912 * all code that might use per_bio_data (since clone doesn't have it) 913 */ 914 __remap_to_origin_clear_discard(cache, origin_bio, oblock, false); 915 submit_bio(origin_bio); 916 917 remap_to_cache(cache, bio, cblock); 918 } 919 920 /*---------------------------------------------------------------- 921 * Failure modes 922 *--------------------------------------------------------------*/ 923 static enum cache_metadata_mode get_cache_mode(struct cache *cache) 924 { 925 return cache->features.mode; 926 } 927 928 static const char *cache_device_name(struct cache *cache) 929 { 930 return dm_device_name(dm_table_get_md(cache->ti->table)); 931 } 932 933 static void notify_mode_switch(struct cache *cache, enum cache_metadata_mode mode) 934 { 935 const char *descs[] = { 936 "write", 937 "read-only", 938 "fail" 939 }; 940 941 dm_table_event(cache->ti->table); 942 DMINFO("%s: switching cache to %s mode", 943 cache_device_name(cache), descs[(int)mode]); 944 } 945 946 static void set_cache_mode(struct cache *cache, enum cache_metadata_mode new_mode) 947 { 948 bool needs_check; 949 enum cache_metadata_mode old_mode = get_cache_mode(cache); 950 951 if (dm_cache_metadata_needs_check(cache->cmd, &needs_check)) { 952 DMERR("%s: unable to read needs_check flag, setting failure mode.", 953 cache_device_name(cache)); 954 new_mode = CM_FAIL; 955 } 956 957 if (new_mode == CM_WRITE && needs_check) { 958 DMERR("%s: unable to switch cache to write mode until repaired.", 959 cache_device_name(cache)); 960 if (old_mode != new_mode) 961 new_mode = old_mode; 962 else 963 new_mode = CM_READ_ONLY; 964 } 965 966 /* Never move out of fail mode */ 967 if (old_mode == CM_FAIL) 968 new_mode = CM_FAIL; 969 970 switch (new_mode) { 971 case CM_FAIL: 972 case CM_READ_ONLY: 973 dm_cache_metadata_set_read_only(cache->cmd); 974 break; 975 976 case CM_WRITE: 977 dm_cache_metadata_set_read_write(cache->cmd); 978 break; 979 } 980 981 cache->features.mode = new_mode; 982 983 if (new_mode != old_mode) 984 notify_mode_switch(cache, new_mode); 985 } 986 987 static void abort_transaction(struct cache *cache) 988 { 989 const char *dev_name = cache_device_name(cache); 990 991 if (get_cache_mode(cache) >= CM_READ_ONLY) 992 return; 993 994 if (dm_cache_metadata_set_needs_check(cache->cmd)) { 995 DMERR("%s: failed to set 'needs_check' flag in metadata", dev_name); 996 set_cache_mode(cache, CM_FAIL); 997 } 998 999 DMERR_LIMIT("%s: aborting current metadata transaction", dev_name); 1000 if (dm_cache_metadata_abort(cache->cmd)) { 1001 DMERR("%s: failed to abort metadata transaction", dev_name); 1002 set_cache_mode(cache, CM_FAIL); 1003 } 1004 } 1005 1006 static void metadata_operation_failed(struct cache *cache, const char *op, int r) 1007 { 1008 DMERR_LIMIT("%s: metadata operation '%s' failed: error = %d", 1009 cache_device_name(cache), op, r); 1010 abort_transaction(cache); 1011 set_cache_mode(cache, CM_READ_ONLY); 1012 } 1013 1014 /*----------------------------------------------------------------*/ 1015 1016 static void load_stats(struct cache *cache) 1017 { 1018 struct dm_cache_statistics stats; 1019 1020 dm_cache_metadata_get_stats(cache->cmd, &stats); 1021 atomic_set(&cache->stats.read_hit, stats.read_hits); 1022 atomic_set(&cache->stats.read_miss, stats.read_misses); 1023 atomic_set(&cache->stats.write_hit, stats.write_hits); 1024 atomic_set(&cache->stats.write_miss, stats.write_misses); 1025 } 1026 1027 static void save_stats(struct cache *cache) 1028 { 1029 struct dm_cache_statistics stats; 1030 1031 if (get_cache_mode(cache) >= CM_READ_ONLY) 1032 return; 1033 1034 stats.read_hits = atomic_read(&cache->stats.read_hit); 1035 stats.read_misses = atomic_read(&cache->stats.read_miss); 1036 stats.write_hits = atomic_read(&cache->stats.write_hit); 1037 stats.write_misses = atomic_read(&cache->stats.write_miss); 1038 1039 dm_cache_metadata_set_stats(cache->cmd, &stats); 1040 } 1041 1042 static void update_stats(struct cache_stats *stats, enum policy_operation op) 1043 { 1044 switch (op) { 1045 case POLICY_PROMOTE: 1046 atomic_inc(&stats->promotion); 1047 break; 1048 1049 case POLICY_DEMOTE: 1050 atomic_inc(&stats->demotion); 1051 break; 1052 1053 case POLICY_WRITEBACK: 1054 atomic_inc(&stats->writeback); 1055 break; 1056 } 1057 } 1058 1059 /*---------------------------------------------------------------- 1060 * Migration processing 1061 * 1062 * Migration covers moving data from the origin device to the cache, or 1063 * vice versa. 1064 *--------------------------------------------------------------*/ 1065 1066 static void inc_io_migrations(struct cache *cache) 1067 { 1068 atomic_inc(&cache->nr_io_migrations); 1069 } 1070 1071 static void dec_io_migrations(struct cache *cache) 1072 { 1073 atomic_dec(&cache->nr_io_migrations); 1074 } 1075 1076 static bool discard_or_flush(struct bio *bio) 1077 { 1078 return bio_op(bio) == REQ_OP_DISCARD || op_is_flush(bio->bi_opf); 1079 } 1080 1081 static void calc_discard_block_range(struct cache *cache, struct bio *bio, 1082 dm_dblock_t *b, dm_dblock_t *e) 1083 { 1084 sector_t sb = bio->bi_iter.bi_sector; 1085 sector_t se = bio_end_sector(bio); 1086 1087 *b = to_dblock(dm_sector_div_up(sb, cache->discard_block_size)); 1088 1089 if (se - sb < cache->discard_block_size) 1090 *e = *b; 1091 else 1092 *e = to_dblock(block_div(se, cache->discard_block_size)); 1093 } 1094 1095 /*----------------------------------------------------------------*/ 1096 1097 static void prevent_background_work(struct cache *cache) 1098 { 1099 lockdep_off(); 1100 down_write(&cache->background_work_lock); 1101 lockdep_on(); 1102 } 1103 1104 static void allow_background_work(struct cache *cache) 1105 { 1106 lockdep_off(); 1107 up_write(&cache->background_work_lock); 1108 lockdep_on(); 1109 } 1110 1111 static bool background_work_begin(struct cache *cache) 1112 { 1113 bool r; 1114 1115 lockdep_off(); 1116 r = down_read_trylock(&cache->background_work_lock); 1117 lockdep_on(); 1118 1119 return r; 1120 } 1121 1122 static void background_work_end(struct cache *cache) 1123 { 1124 lockdep_off(); 1125 up_read(&cache->background_work_lock); 1126 lockdep_on(); 1127 } 1128 1129 /*----------------------------------------------------------------*/ 1130 1131 static bool bio_writes_complete_block(struct cache *cache, struct bio *bio) 1132 { 1133 return (bio_data_dir(bio) == WRITE) && 1134 (bio->bi_iter.bi_size == (cache->sectors_per_block << SECTOR_SHIFT)); 1135 } 1136 1137 static bool optimisable_bio(struct cache *cache, struct bio *bio, dm_oblock_t block) 1138 { 1139 return writeback_mode(cache) && 1140 (is_discarded_oblock(cache, block) || bio_writes_complete_block(cache, bio)); 1141 } 1142 1143 static void quiesce(struct dm_cache_migration *mg, 1144 void (*continuation)(struct work_struct *)) 1145 { 1146 init_continuation(&mg->k, continuation); 1147 dm_cell_quiesce_v2(mg->cache->prison, mg->cell, &mg->k.ws); 1148 } 1149 1150 static struct dm_cache_migration *ws_to_mg(struct work_struct *ws) 1151 { 1152 struct continuation *k = container_of(ws, struct continuation, ws); 1153 return container_of(k, struct dm_cache_migration, k); 1154 } 1155 1156 static void copy_complete(int read_err, unsigned long write_err, void *context) 1157 { 1158 struct dm_cache_migration *mg = container_of(context, struct dm_cache_migration, k); 1159 1160 if (read_err || write_err) 1161 mg->k.input = BLK_STS_IOERR; 1162 1163 queue_continuation(mg->cache->wq, &mg->k); 1164 } 1165 1166 static void copy(struct dm_cache_migration *mg, bool promote) 1167 { 1168 struct dm_io_region o_region, c_region; 1169 struct cache *cache = mg->cache; 1170 1171 o_region.bdev = cache->origin_dev->bdev; 1172 o_region.sector = from_oblock(mg->op->oblock) * cache->sectors_per_block; 1173 o_region.count = cache->sectors_per_block; 1174 1175 c_region.bdev = cache->cache_dev->bdev; 1176 c_region.sector = from_cblock(mg->op->cblock) * cache->sectors_per_block; 1177 c_region.count = cache->sectors_per_block; 1178 1179 if (promote) 1180 dm_kcopyd_copy(cache->copier, &o_region, 1, &c_region, 0, copy_complete, &mg->k); 1181 else 1182 dm_kcopyd_copy(cache->copier, &c_region, 1, &o_region, 0, copy_complete, &mg->k); 1183 } 1184 1185 static void bio_drop_shared_lock(struct cache *cache, struct bio *bio) 1186 { 1187 struct per_bio_data *pb = get_per_bio_data(bio); 1188 1189 if (pb->cell && dm_cell_put_v2(cache->prison, pb->cell)) 1190 free_prison_cell(cache, pb->cell); 1191 pb->cell = NULL; 1192 } 1193 1194 static void overwrite_endio(struct bio *bio) 1195 { 1196 struct dm_cache_migration *mg = bio->bi_private; 1197 struct cache *cache = mg->cache; 1198 struct per_bio_data *pb = get_per_bio_data(bio); 1199 1200 dm_unhook_bio(&pb->hook_info, bio); 1201 1202 if (bio->bi_status) 1203 mg->k.input = bio->bi_status; 1204 1205 queue_continuation(cache->wq, &mg->k); 1206 } 1207 1208 static void overwrite(struct dm_cache_migration *mg, 1209 void (*continuation)(struct work_struct *)) 1210 { 1211 struct bio *bio = mg->overwrite_bio; 1212 struct per_bio_data *pb = get_per_bio_data(bio); 1213 1214 dm_hook_bio(&pb->hook_info, bio, overwrite_endio, mg); 1215 1216 /* 1217 * The overwrite bio is part of the copy operation, as such it does 1218 * not set/clear discard or dirty flags. 1219 */ 1220 if (mg->op->op == POLICY_PROMOTE) 1221 remap_to_cache(mg->cache, bio, mg->op->cblock); 1222 else 1223 remap_to_origin(mg->cache, bio); 1224 1225 init_continuation(&mg->k, continuation); 1226 accounted_request(mg->cache, bio); 1227 } 1228 1229 /* 1230 * Migration steps: 1231 * 1232 * 1) exclusive lock preventing WRITEs 1233 * 2) quiesce 1234 * 3) copy or issue overwrite bio 1235 * 4) upgrade to exclusive lock preventing READs and WRITEs 1236 * 5) quiesce 1237 * 6) update metadata and commit 1238 * 7) unlock 1239 */ 1240 static void mg_complete(struct dm_cache_migration *mg, bool success) 1241 { 1242 struct bio_list bios; 1243 struct cache *cache = mg->cache; 1244 struct policy_work *op = mg->op; 1245 dm_cblock_t cblock = op->cblock; 1246 1247 if (success) 1248 update_stats(&cache->stats, op->op); 1249 1250 switch (op->op) { 1251 case POLICY_PROMOTE: 1252 clear_discard(cache, oblock_to_dblock(cache, op->oblock)); 1253 policy_complete_background_work(cache->policy, op, success); 1254 1255 if (mg->overwrite_bio) { 1256 if (success) 1257 force_set_dirty(cache, cblock); 1258 else if (mg->k.input) 1259 mg->overwrite_bio->bi_status = mg->k.input; 1260 else 1261 mg->overwrite_bio->bi_status = BLK_STS_IOERR; 1262 bio_endio(mg->overwrite_bio); 1263 } else { 1264 if (success) 1265 force_clear_dirty(cache, cblock); 1266 dec_io_migrations(cache); 1267 } 1268 break; 1269 1270 case POLICY_DEMOTE: 1271 /* 1272 * We clear dirty here to update the nr_dirty counter. 1273 */ 1274 if (success) 1275 force_clear_dirty(cache, cblock); 1276 policy_complete_background_work(cache->policy, op, success); 1277 dec_io_migrations(cache); 1278 break; 1279 1280 case POLICY_WRITEBACK: 1281 if (success) 1282 force_clear_dirty(cache, cblock); 1283 policy_complete_background_work(cache->policy, op, success); 1284 dec_io_migrations(cache); 1285 break; 1286 } 1287 1288 bio_list_init(&bios); 1289 if (mg->cell) { 1290 if (dm_cell_unlock_v2(cache->prison, mg->cell, &bios)) 1291 free_prison_cell(cache, mg->cell); 1292 } 1293 1294 free_migration(mg); 1295 defer_bios(cache, &bios); 1296 wake_migration_worker(cache); 1297 1298 background_work_end(cache); 1299 } 1300 1301 static void mg_success(struct work_struct *ws) 1302 { 1303 struct dm_cache_migration *mg = ws_to_mg(ws); 1304 mg_complete(mg, mg->k.input == 0); 1305 } 1306 1307 static void mg_update_metadata(struct work_struct *ws) 1308 { 1309 int r; 1310 struct dm_cache_migration *mg = ws_to_mg(ws); 1311 struct cache *cache = mg->cache; 1312 struct policy_work *op = mg->op; 1313 1314 switch (op->op) { 1315 case POLICY_PROMOTE: 1316 r = dm_cache_insert_mapping(cache->cmd, op->cblock, op->oblock); 1317 if (r) { 1318 DMERR_LIMIT("%s: migration failed; couldn't insert mapping", 1319 cache_device_name(cache)); 1320 metadata_operation_failed(cache, "dm_cache_insert_mapping", r); 1321 1322 mg_complete(mg, false); 1323 return; 1324 } 1325 mg_complete(mg, true); 1326 break; 1327 1328 case POLICY_DEMOTE: 1329 r = dm_cache_remove_mapping(cache->cmd, op->cblock); 1330 if (r) { 1331 DMERR_LIMIT("%s: migration failed; couldn't update on disk metadata", 1332 cache_device_name(cache)); 1333 metadata_operation_failed(cache, "dm_cache_remove_mapping", r); 1334 1335 mg_complete(mg, false); 1336 return; 1337 } 1338 1339 /* 1340 * It would be nice if we only had to commit when a REQ_FLUSH 1341 * comes through. But there's one scenario that we have to 1342 * look out for: 1343 * 1344 * - vblock x in a cache block 1345 * - domotion occurs 1346 * - cache block gets reallocated and over written 1347 * - crash 1348 * 1349 * When we recover, because there was no commit the cache will 1350 * rollback to having the data for vblock x in the cache block. 1351 * But the cache block has since been overwritten, so it'll end 1352 * up pointing to data that was never in 'x' during the history 1353 * of the device. 1354 * 1355 * To avoid this issue we require a commit as part of the 1356 * demotion operation. 1357 */ 1358 init_continuation(&mg->k, mg_success); 1359 continue_after_commit(&cache->committer, &mg->k); 1360 schedule_commit(&cache->committer); 1361 break; 1362 1363 case POLICY_WRITEBACK: 1364 mg_complete(mg, true); 1365 break; 1366 } 1367 } 1368 1369 static void mg_update_metadata_after_copy(struct work_struct *ws) 1370 { 1371 struct dm_cache_migration *mg = ws_to_mg(ws); 1372 1373 /* 1374 * Did the copy succeed? 1375 */ 1376 if (mg->k.input) 1377 mg_complete(mg, false); 1378 else 1379 mg_update_metadata(ws); 1380 } 1381 1382 static void mg_upgrade_lock(struct work_struct *ws) 1383 { 1384 int r; 1385 struct dm_cache_migration *mg = ws_to_mg(ws); 1386 1387 /* 1388 * Did the copy succeed? 1389 */ 1390 if (mg->k.input) 1391 mg_complete(mg, false); 1392 1393 else { 1394 /* 1395 * Now we want the lock to prevent both reads and writes. 1396 */ 1397 r = dm_cell_lock_promote_v2(mg->cache->prison, mg->cell, 1398 READ_WRITE_LOCK_LEVEL); 1399 if (r < 0) 1400 mg_complete(mg, false); 1401 1402 else if (r) 1403 quiesce(mg, mg_update_metadata); 1404 1405 else 1406 mg_update_metadata(ws); 1407 } 1408 } 1409 1410 static void mg_full_copy(struct work_struct *ws) 1411 { 1412 struct dm_cache_migration *mg = ws_to_mg(ws); 1413 struct cache *cache = mg->cache; 1414 struct policy_work *op = mg->op; 1415 bool is_policy_promote = (op->op == POLICY_PROMOTE); 1416 1417 if ((!is_policy_promote && !is_dirty(cache, op->cblock)) || 1418 is_discarded_oblock(cache, op->oblock)) { 1419 mg_upgrade_lock(ws); 1420 return; 1421 } 1422 1423 init_continuation(&mg->k, mg_upgrade_lock); 1424 copy(mg, is_policy_promote); 1425 } 1426 1427 static void mg_copy(struct work_struct *ws) 1428 { 1429 struct dm_cache_migration *mg = ws_to_mg(ws); 1430 1431 if (mg->overwrite_bio) { 1432 /* 1433 * No exclusive lock was held when we last checked if the bio 1434 * was optimisable. So we have to check again in case things 1435 * have changed (eg, the block may no longer be discarded). 1436 */ 1437 if (!optimisable_bio(mg->cache, mg->overwrite_bio, mg->op->oblock)) { 1438 /* 1439 * Fallback to a real full copy after doing some tidying up. 1440 */ 1441 bool rb = bio_detain_shared(mg->cache, mg->op->oblock, mg->overwrite_bio); 1442 BUG_ON(rb); /* An exclussive lock must _not_ be held for this block */ 1443 mg->overwrite_bio = NULL; 1444 inc_io_migrations(mg->cache); 1445 mg_full_copy(ws); 1446 return; 1447 } 1448 1449 /* 1450 * It's safe to do this here, even though it's new data 1451 * because all IO has been locked out of the block. 1452 * 1453 * mg_lock_writes() already took READ_WRITE_LOCK_LEVEL 1454 * so _not_ using mg_upgrade_lock() as continutation. 1455 */ 1456 overwrite(mg, mg_update_metadata_after_copy); 1457 1458 } else 1459 mg_full_copy(ws); 1460 } 1461 1462 static int mg_lock_writes(struct dm_cache_migration *mg) 1463 { 1464 int r; 1465 struct dm_cell_key_v2 key; 1466 struct cache *cache = mg->cache; 1467 struct dm_bio_prison_cell_v2 *prealloc; 1468 1469 prealloc = alloc_prison_cell(cache); 1470 1471 /* 1472 * Prevent writes to the block, but allow reads to continue. 1473 * Unless we're using an overwrite bio, in which case we lock 1474 * everything. 1475 */ 1476 build_key(mg->op->oblock, oblock_succ(mg->op->oblock), &key); 1477 r = dm_cell_lock_v2(cache->prison, &key, 1478 mg->overwrite_bio ? READ_WRITE_LOCK_LEVEL : WRITE_LOCK_LEVEL, 1479 prealloc, &mg->cell); 1480 if (r < 0) { 1481 free_prison_cell(cache, prealloc); 1482 mg_complete(mg, false); 1483 return r; 1484 } 1485 1486 if (mg->cell != prealloc) 1487 free_prison_cell(cache, prealloc); 1488 1489 if (r == 0) 1490 mg_copy(&mg->k.ws); 1491 else 1492 quiesce(mg, mg_copy); 1493 1494 return 0; 1495 } 1496 1497 static int mg_start(struct cache *cache, struct policy_work *op, struct bio *bio) 1498 { 1499 struct dm_cache_migration *mg; 1500 1501 if (!background_work_begin(cache)) { 1502 policy_complete_background_work(cache->policy, op, false); 1503 return -EPERM; 1504 } 1505 1506 mg = alloc_migration(cache); 1507 1508 mg->op = op; 1509 mg->overwrite_bio = bio; 1510 1511 if (!bio) 1512 inc_io_migrations(cache); 1513 1514 return mg_lock_writes(mg); 1515 } 1516 1517 /*---------------------------------------------------------------- 1518 * invalidation processing 1519 *--------------------------------------------------------------*/ 1520 1521 static void invalidate_complete(struct dm_cache_migration *mg, bool success) 1522 { 1523 struct bio_list bios; 1524 struct cache *cache = mg->cache; 1525 1526 bio_list_init(&bios); 1527 if (dm_cell_unlock_v2(cache->prison, mg->cell, &bios)) 1528 free_prison_cell(cache, mg->cell); 1529 1530 if (!success && mg->overwrite_bio) 1531 bio_io_error(mg->overwrite_bio); 1532 1533 free_migration(mg); 1534 defer_bios(cache, &bios); 1535 1536 background_work_end(cache); 1537 } 1538 1539 static void invalidate_completed(struct work_struct *ws) 1540 { 1541 struct dm_cache_migration *mg = ws_to_mg(ws); 1542 invalidate_complete(mg, !mg->k.input); 1543 } 1544 1545 static int invalidate_cblock(struct cache *cache, dm_cblock_t cblock) 1546 { 1547 int r = policy_invalidate_mapping(cache->policy, cblock); 1548 if (!r) { 1549 r = dm_cache_remove_mapping(cache->cmd, cblock); 1550 if (r) { 1551 DMERR_LIMIT("%s: invalidation failed; couldn't update on disk metadata", 1552 cache_device_name(cache)); 1553 metadata_operation_failed(cache, "dm_cache_remove_mapping", r); 1554 } 1555 1556 } else if (r == -ENODATA) { 1557 /* 1558 * Harmless, already unmapped. 1559 */ 1560 r = 0; 1561 1562 } else 1563 DMERR("%s: policy_invalidate_mapping failed", cache_device_name(cache)); 1564 1565 return r; 1566 } 1567 1568 static void invalidate_remove(struct work_struct *ws) 1569 { 1570 int r; 1571 struct dm_cache_migration *mg = ws_to_mg(ws); 1572 struct cache *cache = mg->cache; 1573 1574 r = invalidate_cblock(cache, mg->invalidate_cblock); 1575 if (r) { 1576 invalidate_complete(mg, false); 1577 return; 1578 } 1579 1580 init_continuation(&mg->k, invalidate_completed); 1581 continue_after_commit(&cache->committer, &mg->k); 1582 remap_to_origin_clear_discard(cache, mg->overwrite_bio, mg->invalidate_oblock); 1583 mg->overwrite_bio = NULL; 1584 schedule_commit(&cache->committer); 1585 } 1586 1587 static int invalidate_lock(struct dm_cache_migration *mg) 1588 { 1589 int r; 1590 struct dm_cell_key_v2 key; 1591 struct cache *cache = mg->cache; 1592 struct dm_bio_prison_cell_v2 *prealloc; 1593 1594 prealloc = alloc_prison_cell(cache); 1595 1596 build_key(mg->invalidate_oblock, oblock_succ(mg->invalidate_oblock), &key); 1597 r = dm_cell_lock_v2(cache->prison, &key, 1598 READ_WRITE_LOCK_LEVEL, prealloc, &mg->cell); 1599 if (r < 0) { 1600 free_prison_cell(cache, prealloc); 1601 invalidate_complete(mg, false); 1602 return r; 1603 } 1604 1605 if (mg->cell != prealloc) 1606 free_prison_cell(cache, prealloc); 1607 1608 if (r) 1609 quiesce(mg, invalidate_remove); 1610 1611 else { 1612 /* 1613 * We can't call invalidate_remove() directly here because we 1614 * might still be in request context. 1615 */ 1616 init_continuation(&mg->k, invalidate_remove); 1617 queue_work(cache->wq, &mg->k.ws); 1618 } 1619 1620 return 0; 1621 } 1622 1623 static int invalidate_start(struct cache *cache, dm_cblock_t cblock, 1624 dm_oblock_t oblock, struct bio *bio) 1625 { 1626 struct dm_cache_migration *mg; 1627 1628 if (!background_work_begin(cache)) 1629 return -EPERM; 1630 1631 mg = alloc_migration(cache); 1632 1633 mg->overwrite_bio = bio; 1634 mg->invalidate_cblock = cblock; 1635 mg->invalidate_oblock = oblock; 1636 1637 return invalidate_lock(mg); 1638 } 1639 1640 /*---------------------------------------------------------------- 1641 * bio processing 1642 *--------------------------------------------------------------*/ 1643 1644 enum busy { 1645 IDLE, 1646 BUSY 1647 }; 1648 1649 static enum busy spare_migration_bandwidth(struct cache *cache) 1650 { 1651 bool idle = iot_idle_for(&cache->tracker, HZ); 1652 sector_t current_volume = (atomic_read(&cache->nr_io_migrations) + 1) * 1653 cache->sectors_per_block; 1654 1655 if (idle && current_volume <= cache->migration_threshold) 1656 return IDLE; 1657 else 1658 return BUSY; 1659 } 1660 1661 static void inc_hit_counter(struct cache *cache, struct bio *bio) 1662 { 1663 atomic_inc(bio_data_dir(bio) == READ ? 1664 &cache->stats.read_hit : &cache->stats.write_hit); 1665 } 1666 1667 static void inc_miss_counter(struct cache *cache, struct bio *bio) 1668 { 1669 atomic_inc(bio_data_dir(bio) == READ ? 1670 &cache->stats.read_miss : &cache->stats.write_miss); 1671 } 1672 1673 /*----------------------------------------------------------------*/ 1674 1675 static int map_bio(struct cache *cache, struct bio *bio, dm_oblock_t block, 1676 bool *commit_needed) 1677 { 1678 int r, data_dir; 1679 bool rb, background_queued; 1680 dm_cblock_t cblock; 1681 1682 *commit_needed = false; 1683 1684 rb = bio_detain_shared(cache, block, bio); 1685 if (!rb) { 1686 /* 1687 * An exclusive lock is held for this block, so we have to 1688 * wait. We set the commit_needed flag so the current 1689 * transaction will be committed asap, allowing this lock 1690 * to be dropped. 1691 */ 1692 *commit_needed = true; 1693 return DM_MAPIO_SUBMITTED; 1694 } 1695 1696 data_dir = bio_data_dir(bio); 1697 1698 if (optimisable_bio(cache, bio, block)) { 1699 struct policy_work *op = NULL; 1700 1701 r = policy_lookup_with_work(cache->policy, block, &cblock, data_dir, true, &op); 1702 if (unlikely(r && r != -ENOENT)) { 1703 DMERR_LIMIT("%s: policy_lookup_with_work() failed with r = %d", 1704 cache_device_name(cache), r); 1705 bio_io_error(bio); 1706 return DM_MAPIO_SUBMITTED; 1707 } 1708 1709 if (r == -ENOENT && op) { 1710 bio_drop_shared_lock(cache, bio); 1711 BUG_ON(op->op != POLICY_PROMOTE); 1712 mg_start(cache, op, bio); 1713 return DM_MAPIO_SUBMITTED; 1714 } 1715 } else { 1716 r = policy_lookup(cache->policy, block, &cblock, data_dir, false, &background_queued); 1717 if (unlikely(r && r != -ENOENT)) { 1718 DMERR_LIMIT("%s: policy_lookup() failed with r = %d", 1719 cache_device_name(cache), r); 1720 bio_io_error(bio); 1721 return DM_MAPIO_SUBMITTED; 1722 } 1723 1724 if (background_queued) 1725 wake_migration_worker(cache); 1726 } 1727 1728 if (r == -ENOENT) { 1729 struct per_bio_data *pb = get_per_bio_data(bio); 1730 1731 /* 1732 * Miss. 1733 */ 1734 inc_miss_counter(cache, bio); 1735 if (pb->req_nr == 0) { 1736 accounted_begin(cache, bio); 1737 remap_to_origin_clear_discard(cache, bio, block); 1738 } else { 1739 /* 1740 * This is a duplicate writethrough io that is no 1741 * longer needed because the block has been demoted. 1742 */ 1743 bio_endio(bio); 1744 return DM_MAPIO_SUBMITTED; 1745 } 1746 } else { 1747 /* 1748 * Hit. 1749 */ 1750 inc_hit_counter(cache, bio); 1751 1752 /* 1753 * Passthrough always maps to the origin, invalidating any 1754 * cache blocks that are written to. 1755 */ 1756 if (passthrough_mode(cache)) { 1757 if (bio_data_dir(bio) == WRITE) { 1758 bio_drop_shared_lock(cache, bio); 1759 atomic_inc(&cache->stats.demotion); 1760 invalidate_start(cache, cblock, block, bio); 1761 } else 1762 remap_to_origin_clear_discard(cache, bio, block); 1763 } else { 1764 if (bio_data_dir(bio) == WRITE && writethrough_mode(cache) && 1765 !is_dirty(cache, cblock)) { 1766 remap_to_origin_and_cache(cache, bio, block, cblock); 1767 accounted_begin(cache, bio); 1768 } else 1769 remap_to_cache_dirty(cache, bio, block, cblock); 1770 } 1771 } 1772 1773 /* 1774 * dm core turns FUA requests into a separate payload and FLUSH req. 1775 */ 1776 if (bio->bi_opf & REQ_FUA) { 1777 /* 1778 * issue_after_commit will call accounted_begin a second time. So 1779 * we call accounted_complete() to avoid double accounting. 1780 */ 1781 accounted_complete(cache, bio); 1782 issue_after_commit(&cache->committer, bio); 1783 *commit_needed = true; 1784 return DM_MAPIO_SUBMITTED; 1785 } 1786 1787 return DM_MAPIO_REMAPPED; 1788 } 1789 1790 static bool process_bio(struct cache *cache, struct bio *bio) 1791 { 1792 bool commit_needed; 1793 1794 if (map_bio(cache, bio, get_bio_block(cache, bio), &commit_needed) == DM_MAPIO_REMAPPED) 1795 generic_make_request(bio); 1796 1797 return commit_needed; 1798 } 1799 1800 /* 1801 * A non-zero return indicates read_only or fail_io mode. 1802 */ 1803 static int commit(struct cache *cache, bool clean_shutdown) 1804 { 1805 int r; 1806 1807 if (get_cache_mode(cache) >= CM_READ_ONLY) 1808 return -EINVAL; 1809 1810 atomic_inc(&cache->stats.commit_count); 1811 r = dm_cache_commit(cache->cmd, clean_shutdown); 1812 if (r) 1813 metadata_operation_failed(cache, "dm_cache_commit", r); 1814 1815 return r; 1816 } 1817 1818 /* 1819 * Used by the batcher. 1820 */ 1821 static blk_status_t commit_op(void *context) 1822 { 1823 struct cache *cache = context; 1824 1825 if (dm_cache_changed_this_transaction(cache->cmd)) 1826 return errno_to_blk_status(commit(cache, false)); 1827 1828 return 0; 1829 } 1830 1831 /*----------------------------------------------------------------*/ 1832 1833 static bool process_flush_bio(struct cache *cache, struct bio *bio) 1834 { 1835 struct per_bio_data *pb = get_per_bio_data(bio); 1836 1837 if (!pb->req_nr) 1838 remap_to_origin(cache, bio); 1839 else 1840 remap_to_cache(cache, bio, 0); 1841 1842 issue_after_commit(&cache->committer, bio); 1843 return true; 1844 } 1845 1846 static bool process_discard_bio(struct cache *cache, struct bio *bio) 1847 { 1848 dm_dblock_t b, e; 1849 1850 // FIXME: do we need to lock the region? Or can we just assume the 1851 // user wont be so foolish as to issue discard concurrently with 1852 // other IO? 1853 calc_discard_block_range(cache, bio, &b, &e); 1854 while (b != e) { 1855 set_discard(cache, b); 1856 b = to_dblock(from_dblock(b) + 1); 1857 } 1858 1859 if (cache->features.discard_passdown) { 1860 remap_to_origin(cache, bio); 1861 generic_make_request(bio); 1862 } else 1863 bio_endio(bio); 1864 1865 return false; 1866 } 1867 1868 static void process_deferred_bios(struct work_struct *ws) 1869 { 1870 struct cache *cache = container_of(ws, struct cache, deferred_bio_worker); 1871 1872 bool commit_needed = false; 1873 struct bio_list bios; 1874 struct bio *bio; 1875 1876 bio_list_init(&bios); 1877 1878 spin_lock_irq(&cache->lock); 1879 bio_list_merge(&bios, &cache->deferred_bios); 1880 bio_list_init(&cache->deferred_bios); 1881 spin_unlock_irq(&cache->lock); 1882 1883 while ((bio = bio_list_pop(&bios))) { 1884 if (bio->bi_opf & REQ_PREFLUSH) 1885 commit_needed = process_flush_bio(cache, bio) || commit_needed; 1886 1887 else if (bio_op(bio) == REQ_OP_DISCARD) 1888 commit_needed = process_discard_bio(cache, bio) || commit_needed; 1889 1890 else 1891 commit_needed = process_bio(cache, bio) || commit_needed; 1892 } 1893 1894 if (commit_needed) 1895 schedule_commit(&cache->committer); 1896 } 1897 1898 /*---------------------------------------------------------------- 1899 * Main worker loop 1900 *--------------------------------------------------------------*/ 1901 1902 static void requeue_deferred_bios(struct cache *cache) 1903 { 1904 struct bio *bio; 1905 struct bio_list bios; 1906 1907 bio_list_init(&bios); 1908 bio_list_merge(&bios, &cache->deferred_bios); 1909 bio_list_init(&cache->deferred_bios); 1910 1911 while ((bio = bio_list_pop(&bios))) { 1912 bio->bi_status = BLK_STS_DM_REQUEUE; 1913 bio_endio(bio); 1914 } 1915 } 1916 1917 /* 1918 * We want to commit periodically so that not too much 1919 * unwritten metadata builds up. 1920 */ 1921 static void do_waker(struct work_struct *ws) 1922 { 1923 struct cache *cache = container_of(to_delayed_work(ws), struct cache, waker); 1924 1925 policy_tick(cache->policy, true); 1926 wake_migration_worker(cache); 1927 schedule_commit(&cache->committer); 1928 queue_delayed_work(cache->wq, &cache->waker, COMMIT_PERIOD); 1929 } 1930 1931 static void check_migrations(struct work_struct *ws) 1932 { 1933 int r; 1934 struct policy_work *op; 1935 struct cache *cache = container_of(ws, struct cache, migration_worker); 1936 enum busy b; 1937 1938 for (;;) { 1939 b = spare_migration_bandwidth(cache); 1940 1941 r = policy_get_background_work(cache->policy, b == IDLE, &op); 1942 if (r == -ENODATA) 1943 break; 1944 1945 if (r) { 1946 DMERR_LIMIT("%s: policy_background_work failed", 1947 cache_device_name(cache)); 1948 break; 1949 } 1950 1951 r = mg_start(cache, op, NULL); 1952 if (r) 1953 break; 1954 } 1955 } 1956 1957 /*---------------------------------------------------------------- 1958 * Target methods 1959 *--------------------------------------------------------------*/ 1960 1961 /* 1962 * This function gets called on the error paths of the constructor, so we 1963 * have to cope with a partially initialised struct. 1964 */ 1965 static void destroy(struct cache *cache) 1966 { 1967 unsigned i; 1968 1969 mempool_exit(&cache->migration_pool); 1970 1971 if (cache->prison) 1972 dm_bio_prison_destroy_v2(cache->prison); 1973 1974 if (cache->wq) 1975 destroy_workqueue(cache->wq); 1976 1977 if (cache->dirty_bitset) 1978 free_bitset(cache->dirty_bitset); 1979 1980 if (cache->discard_bitset) 1981 free_bitset(cache->discard_bitset); 1982 1983 if (cache->copier) 1984 dm_kcopyd_client_destroy(cache->copier); 1985 1986 if (cache->cmd) 1987 dm_cache_metadata_close(cache->cmd); 1988 1989 if (cache->metadata_dev) 1990 dm_put_device(cache->ti, cache->metadata_dev); 1991 1992 if (cache->origin_dev) 1993 dm_put_device(cache->ti, cache->origin_dev); 1994 1995 if (cache->cache_dev) 1996 dm_put_device(cache->ti, cache->cache_dev); 1997 1998 if (cache->policy) 1999 dm_cache_policy_destroy(cache->policy); 2000 2001 for (i = 0; i < cache->nr_ctr_args ; i++) 2002 kfree(cache->ctr_args[i]); 2003 kfree(cache->ctr_args); 2004 2005 bioset_exit(&cache->bs); 2006 2007 kfree(cache); 2008 } 2009 2010 static void cache_dtr(struct dm_target *ti) 2011 { 2012 struct cache *cache = ti->private; 2013 2014 destroy(cache); 2015 } 2016 2017 static sector_t get_dev_size(struct dm_dev *dev) 2018 { 2019 return i_size_read(dev->bdev->bd_inode) >> SECTOR_SHIFT; 2020 } 2021 2022 /*----------------------------------------------------------------*/ 2023 2024 /* 2025 * Construct a cache device mapping. 2026 * 2027 * cache <metadata dev> <cache dev> <origin dev> <block size> 2028 * <#feature args> [<feature arg>]* 2029 * <policy> <#policy args> [<policy arg>]* 2030 * 2031 * metadata dev : fast device holding the persistent metadata 2032 * cache dev : fast device holding cached data blocks 2033 * origin dev : slow device holding original data blocks 2034 * block size : cache unit size in sectors 2035 * 2036 * #feature args : number of feature arguments passed 2037 * feature args : writethrough. (The default is writeback.) 2038 * 2039 * policy : the replacement policy to use 2040 * #policy args : an even number of policy arguments corresponding 2041 * to key/value pairs passed to the policy 2042 * policy args : key/value pairs passed to the policy 2043 * E.g. 'sequential_threshold 1024' 2044 * See cache-policies.txt for details. 2045 * 2046 * Optional feature arguments are: 2047 * writethrough : write through caching that prohibits cache block 2048 * content from being different from origin block content. 2049 * Without this argument, the default behaviour is to write 2050 * back cache block contents later for performance reasons, 2051 * so they may differ from the corresponding origin blocks. 2052 */ 2053 struct cache_args { 2054 struct dm_target *ti; 2055 2056 struct dm_dev *metadata_dev; 2057 2058 struct dm_dev *cache_dev; 2059 sector_t cache_sectors; 2060 2061 struct dm_dev *origin_dev; 2062 sector_t origin_sectors; 2063 2064 uint32_t block_size; 2065 2066 const char *policy_name; 2067 int policy_argc; 2068 const char **policy_argv; 2069 2070 struct cache_features features; 2071 }; 2072 2073 static void destroy_cache_args(struct cache_args *ca) 2074 { 2075 if (ca->metadata_dev) 2076 dm_put_device(ca->ti, ca->metadata_dev); 2077 2078 if (ca->cache_dev) 2079 dm_put_device(ca->ti, ca->cache_dev); 2080 2081 if (ca->origin_dev) 2082 dm_put_device(ca->ti, ca->origin_dev); 2083 2084 kfree(ca); 2085 } 2086 2087 static bool at_least_one_arg(struct dm_arg_set *as, char **error) 2088 { 2089 if (!as->argc) { 2090 *error = "Insufficient args"; 2091 return false; 2092 } 2093 2094 return true; 2095 } 2096 2097 static int parse_metadata_dev(struct cache_args *ca, struct dm_arg_set *as, 2098 char **error) 2099 { 2100 int r; 2101 sector_t metadata_dev_size; 2102 char b[BDEVNAME_SIZE]; 2103 2104 if (!at_least_one_arg(as, error)) 2105 return -EINVAL; 2106 2107 r = dm_get_device(ca->ti, dm_shift_arg(as), FMODE_READ | FMODE_WRITE, 2108 &ca->metadata_dev); 2109 if (r) { 2110 *error = "Error opening metadata device"; 2111 return r; 2112 } 2113 2114 metadata_dev_size = get_dev_size(ca->metadata_dev); 2115 if (metadata_dev_size > DM_CACHE_METADATA_MAX_SECTORS_WARNING) 2116 DMWARN("Metadata device %s is larger than %u sectors: excess space will not be used.", 2117 bdevname(ca->metadata_dev->bdev, b), THIN_METADATA_MAX_SECTORS); 2118 2119 return 0; 2120 } 2121 2122 static int parse_cache_dev(struct cache_args *ca, struct dm_arg_set *as, 2123 char **error) 2124 { 2125 int r; 2126 2127 if (!at_least_one_arg(as, error)) 2128 return -EINVAL; 2129 2130 r = dm_get_device(ca->ti, dm_shift_arg(as), FMODE_READ | FMODE_WRITE, 2131 &ca->cache_dev); 2132 if (r) { 2133 *error = "Error opening cache device"; 2134 return r; 2135 } 2136 ca->cache_sectors = get_dev_size(ca->cache_dev); 2137 2138 return 0; 2139 } 2140 2141 static int parse_origin_dev(struct cache_args *ca, struct dm_arg_set *as, 2142 char **error) 2143 { 2144 int r; 2145 2146 if (!at_least_one_arg(as, error)) 2147 return -EINVAL; 2148 2149 r = dm_get_device(ca->ti, dm_shift_arg(as), FMODE_READ | FMODE_WRITE, 2150 &ca->origin_dev); 2151 if (r) { 2152 *error = "Error opening origin device"; 2153 return r; 2154 } 2155 2156 ca->origin_sectors = get_dev_size(ca->origin_dev); 2157 if (ca->ti->len > ca->origin_sectors) { 2158 *error = "Device size larger than cached device"; 2159 return -EINVAL; 2160 } 2161 2162 return 0; 2163 } 2164 2165 static int parse_block_size(struct cache_args *ca, struct dm_arg_set *as, 2166 char **error) 2167 { 2168 unsigned long block_size; 2169 2170 if (!at_least_one_arg(as, error)) 2171 return -EINVAL; 2172 2173 if (kstrtoul(dm_shift_arg(as), 10, &block_size) || !block_size || 2174 block_size < DATA_DEV_BLOCK_SIZE_MIN_SECTORS || 2175 block_size > DATA_DEV_BLOCK_SIZE_MAX_SECTORS || 2176 block_size & (DATA_DEV_BLOCK_SIZE_MIN_SECTORS - 1)) { 2177 *error = "Invalid data block size"; 2178 return -EINVAL; 2179 } 2180 2181 if (block_size > ca->cache_sectors) { 2182 *error = "Data block size is larger than the cache device"; 2183 return -EINVAL; 2184 } 2185 2186 ca->block_size = block_size; 2187 2188 return 0; 2189 } 2190 2191 static void init_features(struct cache_features *cf) 2192 { 2193 cf->mode = CM_WRITE; 2194 cf->io_mode = CM_IO_WRITEBACK; 2195 cf->metadata_version = 1; 2196 cf->discard_passdown = true; 2197 } 2198 2199 static int parse_features(struct cache_args *ca, struct dm_arg_set *as, 2200 char **error) 2201 { 2202 static const struct dm_arg _args[] = { 2203 {0, 3, "Invalid number of cache feature arguments"}, 2204 }; 2205 2206 int r, mode_ctr = 0; 2207 unsigned argc; 2208 const char *arg; 2209 struct cache_features *cf = &ca->features; 2210 2211 init_features(cf); 2212 2213 r = dm_read_arg_group(_args, as, &argc, error); 2214 if (r) 2215 return -EINVAL; 2216 2217 while (argc--) { 2218 arg = dm_shift_arg(as); 2219 2220 if (!strcasecmp(arg, "writeback")) { 2221 cf->io_mode = CM_IO_WRITEBACK; 2222 mode_ctr++; 2223 } 2224 2225 else if (!strcasecmp(arg, "writethrough")) { 2226 cf->io_mode = CM_IO_WRITETHROUGH; 2227 mode_ctr++; 2228 } 2229 2230 else if (!strcasecmp(arg, "passthrough")) { 2231 cf->io_mode = CM_IO_PASSTHROUGH; 2232 mode_ctr++; 2233 } 2234 2235 else if (!strcasecmp(arg, "metadata2")) 2236 cf->metadata_version = 2; 2237 2238 else if (!strcasecmp(arg, "no_discard_passdown")) 2239 cf->discard_passdown = false; 2240 2241 else { 2242 *error = "Unrecognised cache feature requested"; 2243 return -EINVAL; 2244 } 2245 } 2246 2247 if (mode_ctr > 1) { 2248 *error = "Duplicate cache io_mode features requested"; 2249 return -EINVAL; 2250 } 2251 2252 return 0; 2253 } 2254 2255 static int parse_policy(struct cache_args *ca, struct dm_arg_set *as, 2256 char **error) 2257 { 2258 static const struct dm_arg _args[] = { 2259 {0, 1024, "Invalid number of policy arguments"}, 2260 }; 2261 2262 int r; 2263 2264 if (!at_least_one_arg(as, error)) 2265 return -EINVAL; 2266 2267 ca->policy_name = dm_shift_arg(as); 2268 2269 r = dm_read_arg_group(_args, as, &ca->policy_argc, error); 2270 if (r) 2271 return -EINVAL; 2272 2273 ca->policy_argv = (const char **)as->argv; 2274 dm_consume_args(as, ca->policy_argc); 2275 2276 return 0; 2277 } 2278 2279 static int parse_cache_args(struct cache_args *ca, int argc, char **argv, 2280 char **error) 2281 { 2282 int r; 2283 struct dm_arg_set as; 2284 2285 as.argc = argc; 2286 as.argv = argv; 2287 2288 r = parse_metadata_dev(ca, &as, error); 2289 if (r) 2290 return r; 2291 2292 r = parse_cache_dev(ca, &as, error); 2293 if (r) 2294 return r; 2295 2296 r = parse_origin_dev(ca, &as, error); 2297 if (r) 2298 return r; 2299 2300 r = parse_block_size(ca, &as, error); 2301 if (r) 2302 return r; 2303 2304 r = parse_features(ca, &as, error); 2305 if (r) 2306 return r; 2307 2308 r = parse_policy(ca, &as, error); 2309 if (r) 2310 return r; 2311 2312 return 0; 2313 } 2314 2315 /*----------------------------------------------------------------*/ 2316 2317 static struct kmem_cache *migration_cache; 2318 2319 #define NOT_CORE_OPTION 1 2320 2321 static int process_config_option(struct cache *cache, const char *key, const char *value) 2322 { 2323 unsigned long tmp; 2324 2325 if (!strcasecmp(key, "migration_threshold")) { 2326 if (kstrtoul(value, 10, &tmp)) 2327 return -EINVAL; 2328 2329 cache->migration_threshold = tmp; 2330 return 0; 2331 } 2332 2333 return NOT_CORE_OPTION; 2334 } 2335 2336 static int set_config_value(struct cache *cache, const char *key, const char *value) 2337 { 2338 int r = process_config_option(cache, key, value); 2339 2340 if (r == NOT_CORE_OPTION) 2341 r = policy_set_config_value(cache->policy, key, value); 2342 2343 if (r) 2344 DMWARN("bad config value for %s: %s", key, value); 2345 2346 return r; 2347 } 2348 2349 static int set_config_values(struct cache *cache, int argc, const char **argv) 2350 { 2351 int r = 0; 2352 2353 if (argc & 1) { 2354 DMWARN("Odd number of policy arguments given but they should be <key> <value> pairs."); 2355 return -EINVAL; 2356 } 2357 2358 while (argc) { 2359 r = set_config_value(cache, argv[0], argv[1]); 2360 if (r) 2361 break; 2362 2363 argc -= 2; 2364 argv += 2; 2365 } 2366 2367 return r; 2368 } 2369 2370 static int create_cache_policy(struct cache *cache, struct cache_args *ca, 2371 char **error) 2372 { 2373 struct dm_cache_policy *p = dm_cache_policy_create(ca->policy_name, 2374 cache->cache_size, 2375 cache->origin_sectors, 2376 cache->sectors_per_block); 2377 if (IS_ERR(p)) { 2378 *error = "Error creating cache's policy"; 2379 return PTR_ERR(p); 2380 } 2381 cache->policy = p; 2382 BUG_ON(!cache->policy); 2383 2384 return 0; 2385 } 2386 2387 /* 2388 * We want the discard block size to be at least the size of the cache 2389 * block size and have no more than 2^14 discard blocks across the origin. 2390 */ 2391 #define MAX_DISCARD_BLOCKS (1 << 14) 2392 2393 static bool too_many_discard_blocks(sector_t discard_block_size, 2394 sector_t origin_size) 2395 { 2396 (void) sector_div(origin_size, discard_block_size); 2397 2398 return origin_size > MAX_DISCARD_BLOCKS; 2399 } 2400 2401 static sector_t calculate_discard_block_size(sector_t cache_block_size, 2402 sector_t origin_size) 2403 { 2404 sector_t discard_block_size = cache_block_size; 2405 2406 if (origin_size) 2407 while (too_many_discard_blocks(discard_block_size, origin_size)) 2408 discard_block_size *= 2; 2409 2410 return discard_block_size; 2411 } 2412 2413 static void set_cache_size(struct cache *cache, dm_cblock_t size) 2414 { 2415 dm_block_t nr_blocks = from_cblock(size); 2416 2417 if (nr_blocks > (1 << 20) && cache->cache_size != size) 2418 DMWARN_LIMIT("You have created a cache device with a lot of individual cache blocks (%llu)\n" 2419 "All these mappings can consume a lot of kernel memory, and take some time to read/write.\n" 2420 "Please consider increasing the cache block size to reduce the overall cache block count.", 2421 (unsigned long long) nr_blocks); 2422 2423 cache->cache_size = size; 2424 } 2425 2426 static int is_congested(struct dm_dev *dev, int bdi_bits) 2427 { 2428 struct request_queue *q = bdev_get_queue(dev->bdev); 2429 return bdi_congested(q->backing_dev_info, bdi_bits); 2430 } 2431 2432 static int cache_is_congested(struct dm_target_callbacks *cb, int bdi_bits) 2433 { 2434 struct cache *cache = container_of(cb, struct cache, callbacks); 2435 2436 return is_congested(cache->origin_dev, bdi_bits) || 2437 is_congested(cache->cache_dev, bdi_bits); 2438 } 2439 2440 #define DEFAULT_MIGRATION_THRESHOLD 2048 2441 2442 static int cache_create(struct cache_args *ca, struct cache **result) 2443 { 2444 int r = 0; 2445 char **error = &ca->ti->error; 2446 struct cache *cache; 2447 struct dm_target *ti = ca->ti; 2448 dm_block_t origin_blocks; 2449 struct dm_cache_metadata *cmd; 2450 bool may_format = ca->features.mode == CM_WRITE; 2451 2452 cache = kzalloc(sizeof(*cache), GFP_KERNEL); 2453 if (!cache) 2454 return -ENOMEM; 2455 2456 cache->ti = ca->ti; 2457 ti->private = cache; 2458 ti->num_flush_bios = 2; 2459 ti->flush_supported = true; 2460 2461 ti->num_discard_bios = 1; 2462 ti->discards_supported = true; 2463 2464 ti->per_io_data_size = sizeof(struct per_bio_data); 2465 2466 cache->features = ca->features; 2467 if (writethrough_mode(cache)) { 2468 /* Create bioset for writethrough bios issued to origin */ 2469 r = bioset_init(&cache->bs, BIO_POOL_SIZE, 0, 0); 2470 if (r) 2471 goto bad; 2472 } 2473 2474 cache->callbacks.congested_fn = cache_is_congested; 2475 dm_table_add_target_callbacks(ti->table, &cache->callbacks); 2476 2477 cache->metadata_dev = ca->metadata_dev; 2478 cache->origin_dev = ca->origin_dev; 2479 cache->cache_dev = ca->cache_dev; 2480 2481 ca->metadata_dev = ca->origin_dev = ca->cache_dev = NULL; 2482 2483 origin_blocks = cache->origin_sectors = ca->origin_sectors; 2484 origin_blocks = block_div(origin_blocks, ca->block_size); 2485 cache->origin_blocks = to_oblock(origin_blocks); 2486 2487 cache->sectors_per_block = ca->block_size; 2488 if (dm_set_target_max_io_len(ti, cache->sectors_per_block)) { 2489 r = -EINVAL; 2490 goto bad; 2491 } 2492 2493 if (ca->block_size & (ca->block_size - 1)) { 2494 dm_block_t cache_size = ca->cache_sectors; 2495 2496 cache->sectors_per_block_shift = -1; 2497 cache_size = block_div(cache_size, ca->block_size); 2498 set_cache_size(cache, to_cblock(cache_size)); 2499 } else { 2500 cache->sectors_per_block_shift = __ffs(ca->block_size); 2501 set_cache_size(cache, to_cblock(ca->cache_sectors >> cache->sectors_per_block_shift)); 2502 } 2503 2504 r = create_cache_policy(cache, ca, error); 2505 if (r) 2506 goto bad; 2507 2508 cache->policy_nr_args = ca->policy_argc; 2509 cache->migration_threshold = DEFAULT_MIGRATION_THRESHOLD; 2510 2511 r = set_config_values(cache, ca->policy_argc, ca->policy_argv); 2512 if (r) { 2513 *error = "Error setting cache policy's config values"; 2514 goto bad; 2515 } 2516 2517 cmd = dm_cache_metadata_open(cache->metadata_dev->bdev, 2518 ca->block_size, may_format, 2519 dm_cache_policy_get_hint_size(cache->policy), 2520 ca->features.metadata_version); 2521 if (IS_ERR(cmd)) { 2522 *error = "Error creating metadata object"; 2523 r = PTR_ERR(cmd); 2524 goto bad; 2525 } 2526 cache->cmd = cmd; 2527 set_cache_mode(cache, CM_WRITE); 2528 if (get_cache_mode(cache) != CM_WRITE) { 2529 *error = "Unable to get write access to metadata, please check/repair metadata."; 2530 r = -EINVAL; 2531 goto bad; 2532 } 2533 2534 if (passthrough_mode(cache)) { 2535 bool all_clean; 2536 2537 r = dm_cache_metadata_all_clean(cache->cmd, &all_clean); 2538 if (r) { 2539 *error = "dm_cache_metadata_all_clean() failed"; 2540 goto bad; 2541 } 2542 2543 if (!all_clean) { 2544 *error = "Cannot enter passthrough mode unless all blocks are clean"; 2545 r = -EINVAL; 2546 goto bad; 2547 } 2548 2549 policy_allow_migrations(cache->policy, false); 2550 } 2551 2552 spin_lock_init(&cache->lock); 2553 bio_list_init(&cache->deferred_bios); 2554 atomic_set(&cache->nr_allocated_migrations, 0); 2555 atomic_set(&cache->nr_io_migrations, 0); 2556 init_waitqueue_head(&cache->migration_wait); 2557 2558 r = -ENOMEM; 2559 atomic_set(&cache->nr_dirty, 0); 2560 cache->dirty_bitset = alloc_bitset(from_cblock(cache->cache_size)); 2561 if (!cache->dirty_bitset) { 2562 *error = "could not allocate dirty bitset"; 2563 goto bad; 2564 } 2565 clear_bitset(cache->dirty_bitset, from_cblock(cache->cache_size)); 2566 2567 cache->discard_block_size = 2568 calculate_discard_block_size(cache->sectors_per_block, 2569 cache->origin_sectors); 2570 cache->discard_nr_blocks = to_dblock(dm_sector_div_up(cache->origin_sectors, 2571 cache->discard_block_size)); 2572 cache->discard_bitset = alloc_bitset(from_dblock(cache->discard_nr_blocks)); 2573 if (!cache->discard_bitset) { 2574 *error = "could not allocate discard bitset"; 2575 goto bad; 2576 } 2577 clear_bitset(cache->discard_bitset, from_dblock(cache->discard_nr_blocks)); 2578 2579 cache->copier = dm_kcopyd_client_create(&dm_kcopyd_throttle); 2580 if (IS_ERR(cache->copier)) { 2581 *error = "could not create kcopyd client"; 2582 r = PTR_ERR(cache->copier); 2583 goto bad; 2584 } 2585 2586 cache->wq = alloc_workqueue("dm-" DM_MSG_PREFIX, WQ_MEM_RECLAIM, 0); 2587 if (!cache->wq) { 2588 *error = "could not create workqueue for metadata object"; 2589 goto bad; 2590 } 2591 INIT_WORK(&cache->deferred_bio_worker, process_deferred_bios); 2592 INIT_WORK(&cache->migration_worker, check_migrations); 2593 INIT_DELAYED_WORK(&cache->waker, do_waker); 2594 2595 cache->prison = dm_bio_prison_create_v2(cache->wq); 2596 if (!cache->prison) { 2597 *error = "could not create bio prison"; 2598 goto bad; 2599 } 2600 2601 r = mempool_init_slab_pool(&cache->migration_pool, MIGRATION_POOL_SIZE, 2602 migration_cache); 2603 if (r) { 2604 *error = "Error creating cache's migration mempool"; 2605 goto bad; 2606 } 2607 2608 cache->need_tick_bio = true; 2609 cache->sized = false; 2610 cache->invalidate = false; 2611 cache->commit_requested = false; 2612 cache->loaded_mappings = false; 2613 cache->loaded_discards = false; 2614 2615 load_stats(cache); 2616 2617 atomic_set(&cache->stats.demotion, 0); 2618 atomic_set(&cache->stats.promotion, 0); 2619 atomic_set(&cache->stats.copies_avoided, 0); 2620 atomic_set(&cache->stats.cache_cell_clash, 0); 2621 atomic_set(&cache->stats.commit_count, 0); 2622 atomic_set(&cache->stats.discard_count, 0); 2623 2624 spin_lock_init(&cache->invalidation_lock); 2625 INIT_LIST_HEAD(&cache->invalidation_requests); 2626 2627 batcher_init(&cache->committer, commit_op, cache, 2628 issue_op, cache, cache->wq); 2629 iot_init(&cache->tracker); 2630 2631 init_rwsem(&cache->background_work_lock); 2632 prevent_background_work(cache); 2633 2634 *result = cache; 2635 return 0; 2636 bad: 2637 destroy(cache); 2638 return r; 2639 } 2640 2641 static int copy_ctr_args(struct cache *cache, int argc, const char **argv) 2642 { 2643 unsigned i; 2644 const char **copy; 2645 2646 copy = kcalloc(argc, sizeof(*copy), GFP_KERNEL); 2647 if (!copy) 2648 return -ENOMEM; 2649 for (i = 0; i < argc; i++) { 2650 copy[i] = kstrdup(argv[i], GFP_KERNEL); 2651 if (!copy[i]) { 2652 while (i--) 2653 kfree(copy[i]); 2654 kfree(copy); 2655 return -ENOMEM; 2656 } 2657 } 2658 2659 cache->nr_ctr_args = argc; 2660 cache->ctr_args = copy; 2661 2662 return 0; 2663 } 2664 2665 static int cache_ctr(struct dm_target *ti, unsigned argc, char **argv) 2666 { 2667 int r = -EINVAL; 2668 struct cache_args *ca; 2669 struct cache *cache = NULL; 2670 2671 ca = kzalloc(sizeof(*ca), GFP_KERNEL); 2672 if (!ca) { 2673 ti->error = "Error allocating memory for cache"; 2674 return -ENOMEM; 2675 } 2676 ca->ti = ti; 2677 2678 r = parse_cache_args(ca, argc, argv, &ti->error); 2679 if (r) 2680 goto out; 2681 2682 r = cache_create(ca, &cache); 2683 if (r) 2684 goto out; 2685 2686 r = copy_ctr_args(cache, argc - 3, (const char **)argv + 3); 2687 if (r) { 2688 destroy(cache); 2689 goto out; 2690 } 2691 2692 ti->private = cache; 2693 out: 2694 destroy_cache_args(ca); 2695 return r; 2696 } 2697 2698 /*----------------------------------------------------------------*/ 2699 2700 static int cache_map(struct dm_target *ti, struct bio *bio) 2701 { 2702 struct cache *cache = ti->private; 2703 2704 int r; 2705 bool commit_needed; 2706 dm_oblock_t block = get_bio_block(cache, bio); 2707 2708 init_per_bio_data(bio); 2709 if (unlikely(from_oblock(block) >= from_oblock(cache->origin_blocks))) { 2710 /* 2711 * This can only occur if the io goes to a partial block at 2712 * the end of the origin device. We don't cache these. 2713 * Just remap to the origin and carry on. 2714 */ 2715 remap_to_origin(cache, bio); 2716 accounted_begin(cache, bio); 2717 return DM_MAPIO_REMAPPED; 2718 } 2719 2720 if (discard_or_flush(bio)) { 2721 defer_bio(cache, bio); 2722 return DM_MAPIO_SUBMITTED; 2723 } 2724 2725 r = map_bio(cache, bio, block, &commit_needed); 2726 if (commit_needed) 2727 schedule_commit(&cache->committer); 2728 2729 return r; 2730 } 2731 2732 static int cache_end_io(struct dm_target *ti, struct bio *bio, blk_status_t *error) 2733 { 2734 struct cache *cache = ti->private; 2735 unsigned long flags; 2736 struct per_bio_data *pb = get_per_bio_data(bio); 2737 2738 if (pb->tick) { 2739 policy_tick(cache->policy, false); 2740 2741 spin_lock_irqsave(&cache->lock, flags); 2742 cache->need_tick_bio = true; 2743 spin_unlock_irqrestore(&cache->lock, flags); 2744 } 2745 2746 bio_drop_shared_lock(cache, bio); 2747 accounted_complete(cache, bio); 2748 2749 return DM_ENDIO_DONE; 2750 } 2751 2752 static int write_dirty_bitset(struct cache *cache) 2753 { 2754 int r; 2755 2756 if (get_cache_mode(cache) >= CM_READ_ONLY) 2757 return -EINVAL; 2758 2759 r = dm_cache_set_dirty_bits(cache->cmd, from_cblock(cache->cache_size), cache->dirty_bitset); 2760 if (r) 2761 metadata_operation_failed(cache, "dm_cache_set_dirty_bits", r); 2762 2763 return r; 2764 } 2765 2766 static int write_discard_bitset(struct cache *cache) 2767 { 2768 unsigned i, r; 2769 2770 if (get_cache_mode(cache) >= CM_READ_ONLY) 2771 return -EINVAL; 2772 2773 r = dm_cache_discard_bitset_resize(cache->cmd, cache->discard_block_size, 2774 cache->discard_nr_blocks); 2775 if (r) { 2776 DMERR("%s: could not resize on-disk discard bitset", cache_device_name(cache)); 2777 metadata_operation_failed(cache, "dm_cache_discard_bitset_resize", r); 2778 return r; 2779 } 2780 2781 for (i = 0; i < from_dblock(cache->discard_nr_blocks); i++) { 2782 r = dm_cache_set_discard(cache->cmd, to_dblock(i), 2783 is_discarded(cache, to_dblock(i))); 2784 if (r) { 2785 metadata_operation_failed(cache, "dm_cache_set_discard", r); 2786 return r; 2787 } 2788 } 2789 2790 return 0; 2791 } 2792 2793 static int write_hints(struct cache *cache) 2794 { 2795 int r; 2796 2797 if (get_cache_mode(cache) >= CM_READ_ONLY) 2798 return -EINVAL; 2799 2800 r = dm_cache_write_hints(cache->cmd, cache->policy); 2801 if (r) { 2802 metadata_operation_failed(cache, "dm_cache_write_hints", r); 2803 return r; 2804 } 2805 2806 return 0; 2807 } 2808 2809 /* 2810 * returns true on success 2811 */ 2812 static bool sync_metadata(struct cache *cache) 2813 { 2814 int r1, r2, r3, r4; 2815 2816 r1 = write_dirty_bitset(cache); 2817 if (r1) 2818 DMERR("%s: could not write dirty bitset", cache_device_name(cache)); 2819 2820 r2 = write_discard_bitset(cache); 2821 if (r2) 2822 DMERR("%s: could not write discard bitset", cache_device_name(cache)); 2823 2824 save_stats(cache); 2825 2826 r3 = write_hints(cache); 2827 if (r3) 2828 DMERR("%s: could not write hints", cache_device_name(cache)); 2829 2830 /* 2831 * If writing the above metadata failed, we still commit, but don't 2832 * set the clean shutdown flag. This will effectively force every 2833 * dirty bit to be set on reload. 2834 */ 2835 r4 = commit(cache, !r1 && !r2 && !r3); 2836 if (r4) 2837 DMERR("%s: could not write cache metadata", cache_device_name(cache)); 2838 2839 return !r1 && !r2 && !r3 && !r4; 2840 } 2841 2842 static void cache_postsuspend(struct dm_target *ti) 2843 { 2844 struct cache *cache = ti->private; 2845 2846 prevent_background_work(cache); 2847 BUG_ON(atomic_read(&cache->nr_io_migrations)); 2848 2849 cancel_delayed_work_sync(&cache->waker); 2850 drain_workqueue(cache->wq); 2851 WARN_ON(cache->tracker.in_flight); 2852 2853 /* 2854 * If it's a flush suspend there won't be any deferred bios, so this 2855 * call is harmless. 2856 */ 2857 requeue_deferred_bios(cache); 2858 2859 if (get_cache_mode(cache) == CM_WRITE) 2860 (void) sync_metadata(cache); 2861 } 2862 2863 static int load_mapping(void *context, dm_oblock_t oblock, dm_cblock_t cblock, 2864 bool dirty, uint32_t hint, bool hint_valid) 2865 { 2866 int r; 2867 struct cache *cache = context; 2868 2869 if (dirty) { 2870 set_bit(from_cblock(cblock), cache->dirty_bitset); 2871 atomic_inc(&cache->nr_dirty); 2872 } else 2873 clear_bit(from_cblock(cblock), cache->dirty_bitset); 2874 2875 r = policy_load_mapping(cache->policy, oblock, cblock, dirty, hint, hint_valid); 2876 if (r) 2877 return r; 2878 2879 return 0; 2880 } 2881 2882 /* 2883 * The discard block size in the on disk metadata is not 2884 * neccessarily the same as we're currently using. So we have to 2885 * be careful to only set the discarded attribute if we know it 2886 * covers a complete block of the new size. 2887 */ 2888 struct discard_load_info { 2889 struct cache *cache; 2890 2891 /* 2892 * These blocks are sized using the on disk dblock size, rather 2893 * than the current one. 2894 */ 2895 dm_block_t block_size; 2896 dm_block_t discard_begin, discard_end; 2897 }; 2898 2899 static void discard_load_info_init(struct cache *cache, 2900 struct discard_load_info *li) 2901 { 2902 li->cache = cache; 2903 li->discard_begin = li->discard_end = 0; 2904 } 2905 2906 static void set_discard_range(struct discard_load_info *li) 2907 { 2908 sector_t b, e; 2909 2910 if (li->discard_begin == li->discard_end) 2911 return; 2912 2913 /* 2914 * Convert to sectors. 2915 */ 2916 b = li->discard_begin * li->block_size; 2917 e = li->discard_end * li->block_size; 2918 2919 /* 2920 * Then convert back to the current dblock size. 2921 */ 2922 b = dm_sector_div_up(b, li->cache->discard_block_size); 2923 sector_div(e, li->cache->discard_block_size); 2924 2925 /* 2926 * The origin may have shrunk, so we need to check we're still in 2927 * bounds. 2928 */ 2929 if (e > from_dblock(li->cache->discard_nr_blocks)) 2930 e = from_dblock(li->cache->discard_nr_blocks); 2931 2932 for (; b < e; b++) 2933 set_discard(li->cache, to_dblock(b)); 2934 } 2935 2936 static int load_discard(void *context, sector_t discard_block_size, 2937 dm_dblock_t dblock, bool discard) 2938 { 2939 struct discard_load_info *li = context; 2940 2941 li->block_size = discard_block_size; 2942 2943 if (discard) { 2944 if (from_dblock(dblock) == li->discard_end) 2945 /* 2946 * We're already in a discard range, just extend it. 2947 */ 2948 li->discard_end = li->discard_end + 1ULL; 2949 2950 else { 2951 /* 2952 * Emit the old range and start a new one. 2953 */ 2954 set_discard_range(li); 2955 li->discard_begin = from_dblock(dblock); 2956 li->discard_end = li->discard_begin + 1ULL; 2957 } 2958 } else { 2959 set_discard_range(li); 2960 li->discard_begin = li->discard_end = 0; 2961 } 2962 2963 return 0; 2964 } 2965 2966 static dm_cblock_t get_cache_dev_size(struct cache *cache) 2967 { 2968 sector_t size = get_dev_size(cache->cache_dev); 2969 (void) sector_div(size, cache->sectors_per_block); 2970 return to_cblock(size); 2971 } 2972 2973 static bool can_resize(struct cache *cache, dm_cblock_t new_size) 2974 { 2975 if (from_cblock(new_size) > from_cblock(cache->cache_size)) { 2976 if (cache->sized) { 2977 DMERR("%s: unable to extend cache due to missing cache table reload", 2978 cache_device_name(cache)); 2979 return false; 2980 } 2981 } 2982 2983 /* 2984 * We can't drop a dirty block when shrinking the cache. 2985 */ 2986 while (from_cblock(new_size) < from_cblock(cache->cache_size)) { 2987 new_size = to_cblock(from_cblock(new_size) + 1); 2988 if (is_dirty(cache, new_size)) { 2989 DMERR("%s: unable to shrink cache; cache block %llu is dirty", 2990 cache_device_name(cache), 2991 (unsigned long long) from_cblock(new_size)); 2992 return false; 2993 } 2994 } 2995 2996 return true; 2997 } 2998 2999 static int resize_cache_dev(struct cache *cache, dm_cblock_t new_size) 3000 { 3001 int r; 3002 3003 r = dm_cache_resize(cache->cmd, new_size); 3004 if (r) { 3005 DMERR("%s: could not resize cache metadata", cache_device_name(cache)); 3006 metadata_operation_failed(cache, "dm_cache_resize", r); 3007 return r; 3008 } 3009 3010 set_cache_size(cache, new_size); 3011 3012 return 0; 3013 } 3014 3015 static int cache_preresume(struct dm_target *ti) 3016 { 3017 int r = 0; 3018 struct cache *cache = ti->private; 3019 dm_cblock_t csize = get_cache_dev_size(cache); 3020 3021 /* 3022 * Check to see if the cache has resized. 3023 */ 3024 if (!cache->sized) { 3025 r = resize_cache_dev(cache, csize); 3026 if (r) 3027 return r; 3028 3029 cache->sized = true; 3030 3031 } else if (csize != cache->cache_size) { 3032 if (!can_resize(cache, csize)) 3033 return -EINVAL; 3034 3035 r = resize_cache_dev(cache, csize); 3036 if (r) 3037 return r; 3038 } 3039 3040 if (!cache->loaded_mappings) { 3041 r = dm_cache_load_mappings(cache->cmd, cache->policy, 3042 load_mapping, cache); 3043 if (r) { 3044 DMERR("%s: could not load cache mappings", cache_device_name(cache)); 3045 metadata_operation_failed(cache, "dm_cache_load_mappings", r); 3046 return r; 3047 } 3048 3049 cache->loaded_mappings = true; 3050 } 3051 3052 if (!cache->loaded_discards) { 3053 struct discard_load_info li; 3054 3055 /* 3056 * The discard bitset could have been resized, or the 3057 * discard block size changed. To be safe we start by 3058 * setting every dblock to not discarded. 3059 */ 3060 clear_bitset(cache->discard_bitset, from_dblock(cache->discard_nr_blocks)); 3061 3062 discard_load_info_init(cache, &li); 3063 r = dm_cache_load_discards(cache->cmd, load_discard, &li); 3064 if (r) { 3065 DMERR("%s: could not load origin discards", cache_device_name(cache)); 3066 metadata_operation_failed(cache, "dm_cache_load_discards", r); 3067 return r; 3068 } 3069 set_discard_range(&li); 3070 3071 cache->loaded_discards = true; 3072 } 3073 3074 return r; 3075 } 3076 3077 static void cache_resume(struct dm_target *ti) 3078 { 3079 struct cache *cache = ti->private; 3080 3081 cache->need_tick_bio = true; 3082 allow_background_work(cache); 3083 do_waker(&cache->waker.work); 3084 } 3085 3086 static void emit_flags(struct cache *cache, char *result, 3087 unsigned maxlen, ssize_t *sz_ptr) 3088 { 3089 ssize_t sz = *sz_ptr; 3090 struct cache_features *cf = &cache->features; 3091 unsigned count = (cf->metadata_version == 2) + !cf->discard_passdown + 1; 3092 3093 DMEMIT("%u ", count); 3094 3095 if (cf->metadata_version == 2) 3096 DMEMIT("metadata2 "); 3097 3098 if (writethrough_mode(cache)) 3099 DMEMIT("writethrough "); 3100 3101 else if (passthrough_mode(cache)) 3102 DMEMIT("passthrough "); 3103 3104 else if (writeback_mode(cache)) 3105 DMEMIT("writeback "); 3106 3107 else { 3108 DMEMIT("unknown "); 3109 DMERR("%s: internal error: unknown io mode: %d", 3110 cache_device_name(cache), (int) cf->io_mode); 3111 } 3112 3113 if (!cf->discard_passdown) 3114 DMEMIT("no_discard_passdown "); 3115 3116 *sz_ptr = sz; 3117 } 3118 3119 /* 3120 * Status format: 3121 * 3122 * <metadata block size> <#used metadata blocks>/<#total metadata blocks> 3123 * <cache block size> <#used cache blocks>/<#total cache blocks> 3124 * <#read hits> <#read misses> <#write hits> <#write misses> 3125 * <#demotions> <#promotions> <#dirty> 3126 * <#features> <features>* 3127 * <#core args> <core args> 3128 * <policy name> <#policy args> <policy args>* <cache metadata mode> <needs_check> 3129 */ 3130 static void cache_status(struct dm_target *ti, status_type_t type, 3131 unsigned status_flags, char *result, unsigned maxlen) 3132 { 3133 int r = 0; 3134 unsigned i; 3135 ssize_t sz = 0; 3136 dm_block_t nr_free_blocks_metadata = 0; 3137 dm_block_t nr_blocks_metadata = 0; 3138 char buf[BDEVNAME_SIZE]; 3139 struct cache *cache = ti->private; 3140 dm_cblock_t residency; 3141 bool needs_check; 3142 3143 switch (type) { 3144 case STATUSTYPE_INFO: 3145 if (get_cache_mode(cache) == CM_FAIL) { 3146 DMEMIT("Fail"); 3147 break; 3148 } 3149 3150 /* Commit to ensure statistics aren't out-of-date */ 3151 if (!(status_flags & DM_STATUS_NOFLUSH_FLAG) && !dm_suspended(ti)) 3152 (void) commit(cache, false); 3153 3154 r = dm_cache_get_free_metadata_block_count(cache->cmd, &nr_free_blocks_metadata); 3155 if (r) { 3156 DMERR("%s: dm_cache_get_free_metadata_block_count returned %d", 3157 cache_device_name(cache), r); 3158 goto err; 3159 } 3160 3161 r = dm_cache_get_metadata_dev_size(cache->cmd, &nr_blocks_metadata); 3162 if (r) { 3163 DMERR("%s: dm_cache_get_metadata_dev_size returned %d", 3164 cache_device_name(cache), r); 3165 goto err; 3166 } 3167 3168 residency = policy_residency(cache->policy); 3169 3170 DMEMIT("%u %llu/%llu %llu %llu/%llu %u %u %u %u %u %u %lu ", 3171 (unsigned)DM_CACHE_METADATA_BLOCK_SIZE, 3172 (unsigned long long)(nr_blocks_metadata - nr_free_blocks_metadata), 3173 (unsigned long long)nr_blocks_metadata, 3174 (unsigned long long)cache->sectors_per_block, 3175 (unsigned long long) from_cblock(residency), 3176 (unsigned long long) from_cblock(cache->cache_size), 3177 (unsigned) atomic_read(&cache->stats.read_hit), 3178 (unsigned) atomic_read(&cache->stats.read_miss), 3179 (unsigned) atomic_read(&cache->stats.write_hit), 3180 (unsigned) atomic_read(&cache->stats.write_miss), 3181 (unsigned) atomic_read(&cache->stats.demotion), 3182 (unsigned) atomic_read(&cache->stats.promotion), 3183 (unsigned long) atomic_read(&cache->nr_dirty)); 3184 3185 emit_flags(cache, result, maxlen, &sz); 3186 3187 DMEMIT("2 migration_threshold %llu ", (unsigned long long) cache->migration_threshold); 3188 3189 DMEMIT("%s ", dm_cache_policy_get_name(cache->policy)); 3190 if (sz < maxlen) { 3191 r = policy_emit_config_values(cache->policy, result, maxlen, &sz); 3192 if (r) 3193 DMERR("%s: policy_emit_config_values returned %d", 3194 cache_device_name(cache), r); 3195 } 3196 3197 if (get_cache_mode(cache) == CM_READ_ONLY) 3198 DMEMIT("ro "); 3199 else 3200 DMEMIT("rw "); 3201 3202 r = dm_cache_metadata_needs_check(cache->cmd, &needs_check); 3203 3204 if (r || needs_check) 3205 DMEMIT("needs_check "); 3206 else 3207 DMEMIT("- "); 3208 3209 break; 3210 3211 case STATUSTYPE_TABLE: 3212 format_dev_t(buf, cache->metadata_dev->bdev->bd_dev); 3213 DMEMIT("%s ", buf); 3214 format_dev_t(buf, cache->cache_dev->bdev->bd_dev); 3215 DMEMIT("%s ", buf); 3216 format_dev_t(buf, cache->origin_dev->bdev->bd_dev); 3217 DMEMIT("%s", buf); 3218 3219 for (i = 0; i < cache->nr_ctr_args - 1; i++) 3220 DMEMIT(" %s", cache->ctr_args[i]); 3221 if (cache->nr_ctr_args) 3222 DMEMIT(" %s", cache->ctr_args[cache->nr_ctr_args - 1]); 3223 } 3224 3225 return; 3226 3227 err: 3228 DMEMIT("Error"); 3229 } 3230 3231 /* 3232 * Defines a range of cblocks, begin to (end - 1) are in the range. end is 3233 * the one-past-the-end value. 3234 */ 3235 struct cblock_range { 3236 dm_cblock_t begin; 3237 dm_cblock_t end; 3238 }; 3239 3240 /* 3241 * A cache block range can take two forms: 3242 * 3243 * i) A single cblock, eg. '3456' 3244 * ii) A begin and end cblock with a dash between, eg. 123-234 3245 */ 3246 static int parse_cblock_range(struct cache *cache, const char *str, 3247 struct cblock_range *result) 3248 { 3249 char dummy; 3250 uint64_t b, e; 3251 int r; 3252 3253 /* 3254 * Try and parse form (ii) first. 3255 */ 3256 r = sscanf(str, "%llu-%llu%c", &b, &e, &dummy); 3257 if (r < 0) 3258 return r; 3259 3260 if (r == 2) { 3261 result->begin = to_cblock(b); 3262 result->end = to_cblock(e); 3263 return 0; 3264 } 3265 3266 /* 3267 * That didn't work, try form (i). 3268 */ 3269 r = sscanf(str, "%llu%c", &b, &dummy); 3270 if (r < 0) 3271 return r; 3272 3273 if (r == 1) { 3274 result->begin = to_cblock(b); 3275 result->end = to_cblock(from_cblock(result->begin) + 1u); 3276 return 0; 3277 } 3278 3279 DMERR("%s: invalid cblock range '%s'", cache_device_name(cache), str); 3280 return -EINVAL; 3281 } 3282 3283 static int validate_cblock_range(struct cache *cache, struct cblock_range *range) 3284 { 3285 uint64_t b = from_cblock(range->begin); 3286 uint64_t e = from_cblock(range->end); 3287 uint64_t n = from_cblock(cache->cache_size); 3288 3289 if (b >= n) { 3290 DMERR("%s: begin cblock out of range: %llu >= %llu", 3291 cache_device_name(cache), b, n); 3292 return -EINVAL; 3293 } 3294 3295 if (e > n) { 3296 DMERR("%s: end cblock out of range: %llu > %llu", 3297 cache_device_name(cache), e, n); 3298 return -EINVAL; 3299 } 3300 3301 if (b >= e) { 3302 DMERR("%s: invalid cblock range: %llu >= %llu", 3303 cache_device_name(cache), b, e); 3304 return -EINVAL; 3305 } 3306 3307 return 0; 3308 } 3309 3310 static inline dm_cblock_t cblock_succ(dm_cblock_t b) 3311 { 3312 return to_cblock(from_cblock(b) + 1); 3313 } 3314 3315 static int request_invalidation(struct cache *cache, struct cblock_range *range) 3316 { 3317 int r = 0; 3318 3319 /* 3320 * We don't need to do any locking here because we know we're in 3321 * passthrough mode. There's is potential for a race between an 3322 * invalidation triggered by an io and an invalidation message. This 3323 * is harmless, we must not worry if the policy call fails. 3324 */ 3325 while (range->begin != range->end) { 3326 r = invalidate_cblock(cache, range->begin); 3327 if (r) 3328 return r; 3329 3330 range->begin = cblock_succ(range->begin); 3331 } 3332 3333 cache->commit_requested = true; 3334 return r; 3335 } 3336 3337 static int process_invalidate_cblocks_message(struct cache *cache, unsigned count, 3338 const char **cblock_ranges) 3339 { 3340 int r = 0; 3341 unsigned i; 3342 struct cblock_range range; 3343 3344 if (!passthrough_mode(cache)) { 3345 DMERR("%s: cache has to be in passthrough mode for invalidation", 3346 cache_device_name(cache)); 3347 return -EPERM; 3348 } 3349 3350 for (i = 0; i < count; i++) { 3351 r = parse_cblock_range(cache, cblock_ranges[i], &range); 3352 if (r) 3353 break; 3354 3355 r = validate_cblock_range(cache, &range); 3356 if (r) 3357 break; 3358 3359 /* 3360 * Pass begin and end origin blocks to the worker and wake it. 3361 */ 3362 r = request_invalidation(cache, &range); 3363 if (r) 3364 break; 3365 } 3366 3367 return r; 3368 } 3369 3370 /* 3371 * Supports 3372 * "<key> <value>" 3373 * and 3374 * "invalidate_cblocks [(<begin>)|(<begin>-<end>)]* 3375 * 3376 * The key migration_threshold is supported by the cache target core. 3377 */ 3378 static int cache_message(struct dm_target *ti, unsigned argc, char **argv, 3379 char *result, unsigned maxlen) 3380 { 3381 struct cache *cache = ti->private; 3382 3383 if (!argc) 3384 return -EINVAL; 3385 3386 if (get_cache_mode(cache) >= CM_READ_ONLY) { 3387 DMERR("%s: unable to service cache target messages in READ_ONLY or FAIL mode", 3388 cache_device_name(cache)); 3389 return -EOPNOTSUPP; 3390 } 3391 3392 if (!strcasecmp(argv[0], "invalidate_cblocks")) 3393 return process_invalidate_cblocks_message(cache, argc - 1, (const char **) argv + 1); 3394 3395 if (argc != 2) 3396 return -EINVAL; 3397 3398 return set_config_value(cache, argv[0], argv[1]); 3399 } 3400 3401 static int cache_iterate_devices(struct dm_target *ti, 3402 iterate_devices_callout_fn fn, void *data) 3403 { 3404 int r = 0; 3405 struct cache *cache = ti->private; 3406 3407 r = fn(ti, cache->cache_dev, 0, get_dev_size(cache->cache_dev), data); 3408 if (!r) 3409 r = fn(ti, cache->origin_dev, 0, ti->len, data); 3410 3411 return r; 3412 } 3413 3414 static bool origin_dev_supports_discard(struct block_device *origin_bdev) 3415 { 3416 struct request_queue *q = bdev_get_queue(origin_bdev); 3417 3418 return q && blk_queue_discard(q); 3419 } 3420 3421 /* 3422 * If discard_passdown was enabled verify that the origin device 3423 * supports discards. Disable discard_passdown if not. 3424 */ 3425 static void disable_passdown_if_not_supported(struct cache *cache) 3426 { 3427 struct block_device *origin_bdev = cache->origin_dev->bdev; 3428 struct queue_limits *origin_limits = &bdev_get_queue(origin_bdev)->limits; 3429 const char *reason = NULL; 3430 char buf[BDEVNAME_SIZE]; 3431 3432 if (!cache->features.discard_passdown) 3433 return; 3434 3435 if (!origin_dev_supports_discard(origin_bdev)) 3436 reason = "discard unsupported"; 3437 3438 else if (origin_limits->max_discard_sectors < cache->sectors_per_block) 3439 reason = "max discard sectors smaller than a block"; 3440 3441 if (reason) { 3442 DMWARN("Origin device (%s) %s: Disabling discard passdown.", 3443 bdevname(origin_bdev, buf), reason); 3444 cache->features.discard_passdown = false; 3445 } 3446 } 3447 3448 static void set_discard_limits(struct cache *cache, struct queue_limits *limits) 3449 { 3450 struct block_device *origin_bdev = cache->origin_dev->bdev; 3451 struct queue_limits *origin_limits = &bdev_get_queue(origin_bdev)->limits; 3452 3453 if (!cache->features.discard_passdown) { 3454 /* No passdown is done so setting own virtual limits */ 3455 limits->max_discard_sectors = min_t(sector_t, cache->discard_block_size * 1024, 3456 cache->origin_sectors); 3457 limits->discard_granularity = cache->discard_block_size << SECTOR_SHIFT; 3458 return; 3459 } 3460 3461 /* 3462 * cache_iterate_devices() is stacking both origin and fast device limits 3463 * but discards aren't passed to fast device, so inherit origin's limits. 3464 */ 3465 limits->max_discard_sectors = origin_limits->max_discard_sectors; 3466 limits->max_hw_discard_sectors = origin_limits->max_hw_discard_sectors; 3467 limits->discard_granularity = origin_limits->discard_granularity; 3468 limits->discard_alignment = origin_limits->discard_alignment; 3469 limits->discard_misaligned = origin_limits->discard_misaligned; 3470 } 3471 3472 static void cache_io_hints(struct dm_target *ti, struct queue_limits *limits) 3473 { 3474 struct cache *cache = ti->private; 3475 uint64_t io_opt_sectors = limits->io_opt >> SECTOR_SHIFT; 3476 3477 /* 3478 * If the system-determined stacked limits are compatible with the 3479 * cache's blocksize (io_opt is a factor) do not override them. 3480 */ 3481 if (io_opt_sectors < cache->sectors_per_block || 3482 do_div(io_opt_sectors, cache->sectors_per_block)) { 3483 blk_limits_io_min(limits, cache->sectors_per_block << SECTOR_SHIFT); 3484 blk_limits_io_opt(limits, cache->sectors_per_block << SECTOR_SHIFT); 3485 } 3486 3487 disable_passdown_if_not_supported(cache); 3488 set_discard_limits(cache, limits); 3489 } 3490 3491 /*----------------------------------------------------------------*/ 3492 3493 static struct target_type cache_target = { 3494 .name = "cache", 3495 .version = {2, 2, 0}, 3496 .module = THIS_MODULE, 3497 .ctr = cache_ctr, 3498 .dtr = cache_dtr, 3499 .map = cache_map, 3500 .end_io = cache_end_io, 3501 .postsuspend = cache_postsuspend, 3502 .preresume = cache_preresume, 3503 .resume = cache_resume, 3504 .status = cache_status, 3505 .message = cache_message, 3506 .iterate_devices = cache_iterate_devices, 3507 .io_hints = cache_io_hints, 3508 }; 3509 3510 static int __init dm_cache_init(void) 3511 { 3512 int r; 3513 3514 migration_cache = KMEM_CACHE(dm_cache_migration, 0); 3515 if (!migration_cache) 3516 return -ENOMEM; 3517 3518 r = dm_register_target(&cache_target); 3519 if (r) { 3520 DMERR("cache target registration failed: %d", r); 3521 kmem_cache_destroy(migration_cache); 3522 return r; 3523 } 3524 3525 return 0; 3526 } 3527 3528 static void __exit dm_cache_exit(void) 3529 { 3530 dm_unregister_target(&cache_target); 3531 kmem_cache_destroy(migration_cache); 3532 } 3533 3534 module_init(dm_cache_init); 3535 module_exit(dm_cache_exit); 3536 3537 MODULE_DESCRIPTION(DM_NAME " cache target"); 3538 MODULE_AUTHOR("Joe Thornber <ejt@redhat.com>"); 3539 MODULE_LICENSE("GPL"); 3540