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