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