]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/md/dm.c
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.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-core.h"
9 #include "dm-rq.h"
10 #include "dm-uevent.h"
11
12 #include <linux/init.h>
13 #include <linux/module.h>
14 #include <linux/mutex.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/pr.h>
24
25 #define DM_MSG_PREFIX "core"
26
27 #ifdef CONFIG_PRINTK
28 /*
29  * ratelimit state to be used in DMXXX_LIMIT().
30  */
31 DEFINE_RATELIMIT_STATE(dm_ratelimit_state,
32                        DEFAULT_RATELIMIT_INTERVAL,
33                        DEFAULT_RATELIMIT_BURST);
34 EXPORT_SYMBOL(dm_ratelimit_state);
35 #endif
36
37 /*
38  * Cookies are numeric values sent with CHANGE and REMOVE
39  * uevents while resuming, removing or renaming the device.
40  */
41 #define DM_COOKIE_ENV_VAR_NAME "DM_COOKIE"
42 #define DM_COOKIE_LENGTH 24
43
44 static const char *_name = DM_NAME;
45
46 static unsigned int major = 0;
47 static unsigned int _major = 0;
48
49 static DEFINE_IDR(_minor_idr);
50
51 static DEFINE_SPINLOCK(_minor_lock);
52
53 static void do_deferred_remove(struct work_struct *w);
54
55 static DECLARE_WORK(deferred_remove_work, do_deferred_remove);
56
57 static struct workqueue_struct *deferred_remove_workqueue;
58
59 /*
60  * One of these is allocated per bio.
61  */
62 struct dm_io {
63         struct mapped_device *md;
64         int error;
65         atomic_t io_count;
66         struct bio *bio;
67         unsigned long start_time;
68         spinlock_t endio_lock;
69         struct dm_stats_aux stats_aux;
70 };
71
72 #define MINOR_ALLOCED ((void *)-1)
73
74 /*
75  * Bits for the md->flags field.
76  */
77 #define DMF_BLOCK_IO_FOR_SUSPEND 0
78 #define DMF_SUSPENDED 1
79 #define DMF_FROZEN 2
80 #define DMF_FREEING 3
81 #define DMF_DELETING 4
82 #define DMF_NOFLUSH_SUSPENDING 5
83 #define DMF_DEFERRED_REMOVE 6
84 #define DMF_SUSPENDED_INTERNALLY 7
85
86 #define DM_NUMA_NODE NUMA_NO_NODE
87 static int dm_numa_node = DM_NUMA_NODE;
88
89 /*
90  * For mempools pre-allocation at the table loading time.
91  */
92 struct dm_md_mempools {
93         mempool_t *io_pool;
94         struct bio_set *bs;
95 };
96
97 struct table_device {
98         struct list_head list;
99         atomic_t count;
100         struct dm_dev dm_dev;
101 };
102
103 static struct kmem_cache *_io_cache;
104 static struct kmem_cache *_rq_tio_cache;
105 static struct kmem_cache *_rq_cache;
106
107 /*
108  * Bio-based DM's mempools' reserved IOs set by the user.
109  */
110 #define RESERVED_BIO_BASED_IOS          16
111 static unsigned reserved_bio_based_ios = RESERVED_BIO_BASED_IOS;
112
113 static int __dm_get_module_param_int(int *module_param, int min, int max)
114 {
115         int param = ACCESS_ONCE(*module_param);
116         int modified_param = 0;
117         bool modified = true;
118
119         if (param < min)
120                 modified_param = min;
121         else if (param > max)
122                 modified_param = max;
123         else
124                 modified = false;
125
126         if (modified) {
127                 (void)cmpxchg(module_param, param, modified_param);
128                 param = modified_param;
129         }
130
131         return param;
132 }
133
134 unsigned __dm_get_module_param(unsigned *module_param,
135                                unsigned def, unsigned max)
136 {
137         unsigned param = ACCESS_ONCE(*module_param);
138         unsigned modified_param = 0;
139
140         if (!param)
141                 modified_param = def;
142         else if (param > max)
143                 modified_param = max;
144
145         if (modified_param) {
146                 (void)cmpxchg(module_param, param, modified_param);
147                 param = modified_param;
148         }
149
150         return param;
151 }
152
153 unsigned dm_get_reserved_bio_based_ios(void)
154 {
155         return __dm_get_module_param(&reserved_bio_based_ios,
156                                      RESERVED_BIO_BASED_IOS, DM_RESERVED_MAX_IOS);
157 }
158 EXPORT_SYMBOL_GPL(dm_get_reserved_bio_based_ios);
159
160 static unsigned dm_get_numa_node(void)
161 {
162         return __dm_get_module_param_int(&dm_numa_node,
163                                          DM_NUMA_NODE, num_online_nodes() - 1);
164 }
165
166 static int __init local_init(void)
167 {
168         int r = -ENOMEM;
169
170         /* allocate a slab for the dm_ios */
171         _io_cache = KMEM_CACHE(dm_io, 0);
172         if (!_io_cache)
173                 return r;
174
175         _rq_tio_cache = KMEM_CACHE(dm_rq_target_io, 0);
176         if (!_rq_tio_cache)
177                 goto out_free_io_cache;
178
179         _rq_cache = kmem_cache_create("dm_old_clone_request", sizeof(struct request),
180                                       __alignof__(struct request), 0, NULL);
181         if (!_rq_cache)
182                 goto out_free_rq_tio_cache;
183
184         r = dm_uevent_init();
185         if (r)
186                 goto out_free_rq_cache;
187
188         deferred_remove_workqueue = alloc_workqueue("kdmremove", WQ_UNBOUND, 1);
189         if (!deferred_remove_workqueue) {
190                 r = -ENOMEM;
191                 goto out_uevent_exit;
192         }
193
194         _major = major;
195         r = register_blkdev(_major, _name);
196         if (r < 0)
197                 goto out_free_workqueue;
198
199         if (!_major)
200                 _major = r;
201
202         return 0;
203
204 out_free_workqueue:
205         destroy_workqueue(deferred_remove_workqueue);
206 out_uevent_exit:
207         dm_uevent_exit();
208 out_free_rq_cache:
209         kmem_cache_destroy(_rq_cache);
210 out_free_rq_tio_cache:
211         kmem_cache_destroy(_rq_tio_cache);
212 out_free_io_cache:
213         kmem_cache_destroy(_io_cache);
214
215         return r;
216 }
217
218 static void local_exit(void)
219 {
220         flush_scheduled_work();
221         destroy_workqueue(deferred_remove_workqueue);
222
223         kmem_cache_destroy(_rq_cache);
224         kmem_cache_destroy(_rq_tio_cache);
225         kmem_cache_destroy(_io_cache);
226         unregister_blkdev(_major, _name);
227         dm_uevent_exit();
228
229         _major = 0;
230
231         DMINFO("cleaned up");
232 }
233
234 static int (*_inits[])(void) __initdata = {
235         local_init,
236         dm_target_init,
237         dm_linear_init,
238         dm_stripe_init,
239         dm_io_init,
240         dm_kcopyd_init,
241         dm_interface_init,
242         dm_statistics_init,
243 };
244
245 static void (*_exits[])(void) = {
246         local_exit,
247         dm_target_exit,
248         dm_linear_exit,
249         dm_stripe_exit,
250         dm_io_exit,
251         dm_kcopyd_exit,
252         dm_interface_exit,
253         dm_statistics_exit,
254 };
255
256 static int __init dm_init(void)
257 {
258         const int count = ARRAY_SIZE(_inits);
259
260         int r, i;
261
262         for (i = 0; i < count; i++) {
263                 r = _inits[i]();
264                 if (r)
265                         goto bad;
266         }
267
268         return 0;
269
270       bad:
271         while (i--)
272                 _exits[i]();
273
274         return r;
275 }
276
277 static void __exit dm_exit(void)
278 {
279         int i = ARRAY_SIZE(_exits);
280
281         while (i--)
282                 _exits[i]();
283
284         /*
285          * Should be empty by this point.
286          */
287         idr_destroy(&_minor_idr);
288 }
289
290 /*
291  * Block device functions
292  */
293 int dm_deleting_md(struct mapped_device *md)
294 {
295         return test_bit(DMF_DELETING, &md->flags);
296 }
297
298 static int dm_blk_open(struct block_device *bdev, fmode_t mode)
299 {
300         struct mapped_device *md;
301
302         spin_lock(&_minor_lock);
303
304         md = bdev->bd_disk->private_data;
305         if (!md)
306                 goto out;
307
308         if (test_bit(DMF_FREEING, &md->flags) ||
309             dm_deleting_md(md)) {
310                 md = NULL;
311                 goto out;
312         }
313
314         dm_get(md);
315         atomic_inc(&md->open_count);
316 out:
317         spin_unlock(&_minor_lock);
318
319         return md ? 0 : -ENXIO;
320 }
321
322 static void dm_blk_close(struct gendisk *disk, fmode_t mode)
323 {
324         struct mapped_device *md;
325
326         spin_lock(&_minor_lock);
327
328         md = disk->private_data;
329         if (WARN_ON(!md))
330                 goto out;
331
332         if (atomic_dec_and_test(&md->open_count) &&
333             (test_bit(DMF_DEFERRED_REMOVE, &md->flags)))
334                 queue_work(deferred_remove_workqueue, &deferred_remove_work);
335
336         dm_put(md);
337 out:
338         spin_unlock(&_minor_lock);
339 }
340
341 int dm_open_count(struct mapped_device *md)
342 {
343         return atomic_read(&md->open_count);
344 }
345
346 /*
347  * Guarantees nothing is using the device before it's deleted.
348  */
349 int dm_lock_for_deletion(struct mapped_device *md, bool mark_deferred, bool only_deferred)
350 {
351         int r = 0;
352
353         spin_lock(&_minor_lock);
354
355         if (dm_open_count(md)) {
356                 r = -EBUSY;
357                 if (mark_deferred)
358                         set_bit(DMF_DEFERRED_REMOVE, &md->flags);
359         } else if (only_deferred && !test_bit(DMF_DEFERRED_REMOVE, &md->flags))
360                 r = -EEXIST;
361         else
362                 set_bit(DMF_DELETING, &md->flags);
363
364         spin_unlock(&_minor_lock);
365
366         return r;
367 }
368
369 int dm_cancel_deferred_remove(struct mapped_device *md)
370 {
371         int r = 0;
372
373         spin_lock(&_minor_lock);
374
375         if (test_bit(DMF_DELETING, &md->flags))
376                 r = -EBUSY;
377         else
378                 clear_bit(DMF_DEFERRED_REMOVE, &md->flags);
379
380         spin_unlock(&_minor_lock);
381
382         return r;
383 }
384
385 static void do_deferred_remove(struct work_struct *w)
386 {
387         dm_deferred_remove();
388 }
389
390 sector_t dm_get_size(struct mapped_device *md)
391 {
392         return get_capacity(md->disk);
393 }
394
395 struct request_queue *dm_get_md_queue(struct mapped_device *md)
396 {
397         return md->queue;
398 }
399
400 struct dm_stats *dm_get_stats(struct mapped_device *md)
401 {
402         return &md->stats;
403 }
404
405 static int dm_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo)
406 {
407         struct mapped_device *md = bdev->bd_disk->private_data;
408
409         return dm_get_geometry(md, geo);
410 }
411
412 static int dm_grab_bdev_for_ioctl(struct mapped_device *md,
413                                   struct block_device **bdev,
414                                   fmode_t *mode)
415 {
416         struct dm_target *tgt;
417         struct dm_table *map;
418         int srcu_idx, r;
419
420 retry:
421         r = -ENOTTY;
422         map = dm_get_live_table(md, &srcu_idx);
423         if (!map || !dm_table_get_size(map))
424                 goto out;
425
426         /* We only support devices that have a single target */
427         if (dm_table_get_num_targets(map) != 1)
428                 goto out;
429
430         tgt = dm_table_get_target(map, 0);
431         if (!tgt->type->prepare_ioctl)
432                 goto out;
433
434         if (dm_suspended_md(md)) {
435                 r = -EAGAIN;
436                 goto out;
437         }
438
439         r = tgt->type->prepare_ioctl(tgt, bdev, mode);
440         if (r < 0)
441                 goto out;
442
443         bdgrab(*bdev);
444         dm_put_live_table(md, srcu_idx);
445         return r;
446
447 out:
448         dm_put_live_table(md, srcu_idx);
449         if (r == -ENOTCONN && !fatal_signal_pending(current)) {
450                 msleep(10);
451                 goto retry;
452         }
453         return r;
454 }
455
456 static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,
457                         unsigned int cmd, unsigned long arg)
458 {
459         struct mapped_device *md = bdev->bd_disk->private_data;
460         int r;
461
462         r = dm_grab_bdev_for_ioctl(md, &bdev, &mode);
463         if (r < 0)
464                 return r;
465
466         if (r > 0) {
467                 /*
468                  * Target determined this ioctl is being issued against a
469                  * subset of the parent bdev; require extra privileges.
470                  */
471                 if (!capable(CAP_SYS_RAWIO)) {
472                         DMWARN_LIMIT(
473         "%s: sending ioctl %x to DM device without required privilege.",
474                                 current->comm, cmd);
475                         r = -ENOIOCTLCMD;
476                         goto out;
477                 }
478         }
479
480         r =  __blkdev_driver_ioctl(bdev, mode, cmd, arg);
481 out:
482         bdput(bdev);
483         return r;
484 }
485
486 static struct dm_io *alloc_io(struct mapped_device *md)
487 {
488         return mempool_alloc(md->io_pool, GFP_NOIO);
489 }
490
491 static void free_io(struct mapped_device *md, struct dm_io *io)
492 {
493         mempool_free(io, md->io_pool);
494 }
495
496 static void free_tio(struct dm_target_io *tio)
497 {
498         bio_put(&tio->clone);
499 }
500
501 int md_in_flight(struct mapped_device *md)
502 {
503         return atomic_read(&md->pending[READ]) +
504                atomic_read(&md->pending[WRITE]);
505 }
506
507 static void start_io_acct(struct dm_io *io)
508 {
509         struct mapped_device *md = io->md;
510         struct bio *bio = io->bio;
511         int cpu;
512         int rw = bio_data_dir(bio);
513
514         io->start_time = jiffies;
515
516         cpu = part_stat_lock();
517         part_round_stats(cpu, &dm_disk(md)->part0);
518         part_stat_unlock();
519         atomic_set(&dm_disk(md)->part0.in_flight[rw],
520                 atomic_inc_return(&md->pending[rw]));
521
522         if (unlikely(dm_stats_used(&md->stats)))
523                 dm_stats_account_io(&md->stats, bio_data_dir(bio),
524                                     bio->bi_iter.bi_sector, bio_sectors(bio),
525                                     false, 0, &io->stats_aux);
526 }
527
528 static void end_io_acct(struct dm_io *io)
529 {
530         struct mapped_device *md = io->md;
531         struct bio *bio = io->bio;
532         unsigned long duration = jiffies - io->start_time;
533         int pending;
534         int rw = bio_data_dir(bio);
535
536         generic_end_io_acct(rw, &dm_disk(md)->part0, io->start_time);
537
538         if (unlikely(dm_stats_used(&md->stats)))
539                 dm_stats_account_io(&md->stats, bio_data_dir(bio),
540                                     bio->bi_iter.bi_sector, bio_sectors(bio),
541                                     true, duration, &io->stats_aux);
542
543         /*
544          * After this is decremented the bio must not be touched if it is
545          * a flush.
546          */
547         pending = atomic_dec_return(&md->pending[rw]);
548         atomic_set(&dm_disk(md)->part0.in_flight[rw], pending);
549         pending += atomic_read(&md->pending[rw^0x1]);
550
551         /* nudge anyone waiting on suspend queue */
552         if (!pending)
553                 wake_up(&md->wait);
554 }
555
556 /*
557  * Add the bio to the list of deferred io.
558  */
559 static void queue_io(struct mapped_device *md, struct bio *bio)
560 {
561         unsigned long flags;
562
563         spin_lock_irqsave(&md->deferred_lock, flags);
564         bio_list_add(&md->deferred, bio);
565         spin_unlock_irqrestore(&md->deferred_lock, flags);
566         queue_work(md->wq, &md->work);
567 }
568
569 /*
570  * Everyone (including functions in this file), should use this
571  * function to access the md->map field, and make sure they call
572  * dm_put_live_table() when finished.
573  */
574 struct dm_table *dm_get_live_table(struct mapped_device *md, int *srcu_idx) __acquires(md->io_barrier)
575 {
576         *srcu_idx = srcu_read_lock(&md->io_barrier);
577
578         return srcu_dereference(md->map, &md->io_barrier);
579 }
580
581 void dm_put_live_table(struct mapped_device *md, int srcu_idx) __releases(md->io_barrier)
582 {
583         srcu_read_unlock(&md->io_barrier, srcu_idx);
584 }
585
586 void dm_sync_table(struct mapped_device *md)
587 {
588         synchronize_srcu(&md->io_barrier);
589         synchronize_rcu_expedited();
590 }
591
592 /*
593  * A fast alternative to dm_get_live_table/dm_put_live_table.
594  * The caller must not block between these two functions.
595  */
596 static struct dm_table *dm_get_live_table_fast(struct mapped_device *md) __acquires(RCU)
597 {
598         rcu_read_lock();
599         return rcu_dereference(md->map);
600 }
601
602 static void dm_put_live_table_fast(struct mapped_device *md) __releases(RCU)
603 {
604         rcu_read_unlock();
605 }
606
607 /*
608  * Open a table device so we can use it as a map destination.
609  */
610 static int open_table_device(struct table_device *td, dev_t dev,
611                              struct mapped_device *md)
612 {
613         static char *_claim_ptr = "I belong to device-mapper";
614         struct block_device *bdev;
615
616         int r;
617
618         BUG_ON(td->dm_dev.bdev);
619
620         bdev = blkdev_get_by_dev(dev, td->dm_dev.mode | FMODE_EXCL, _claim_ptr);
621         if (IS_ERR(bdev))
622                 return PTR_ERR(bdev);
623
624         r = bd_link_disk_holder(bdev, dm_disk(md));
625         if (r) {
626                 blkdev_put(bdev, td->dm_dev.mode | FMODE_EXCL);
627                 return r;
628         }
629
630         td->dm_dev.bdev = bdev;
631         return 0;
632 }
633
634 /*
635  * Close a table device that we've been using.
636  */
637 static void close_table_device(struct table_device *td, struct mapped_device *md)
638 {
639         if (!td->dm_dev.bdev)
640                 return;
641
642         bd_unlink_disk_holder(td->dm_dev.bdev, dm_disk(md));
643         blkdev_put(td->dm_dev.bdev, td->dm_dev.mode | FMODE_EXCL);
644         td->dm_dev.bdev = NULL;
645 }
646
647 static struct table_device *find_table_device(struct list_head *l, dev_t dev,
648                                               fmode_t mode) {
649         struct table_device *td;
650
651         list_for_each_entry(td, l, list)
652                 if (td->dm_dev.bdev->bd_dev == dev && td->dm_dev.mode == mode)
653                         return td;
654
655         return NULL;
656 }
657
658 int dm_get_table_device(struct mapped_device *md, dev_t dev, fmode_t mode,
659                         struct dm_dev **result) {
660         int r;
661         struct table_device *td;
662
663         mutex_lock(&md->table_devices_lock);
664         td = find_table_device(&md->table_devices, dev, mode);
665         if (!td) {
666                 td = kmalloc_node(sizeof(*td), GFP_KERNEL, md->numa_node_id);
667                 if (!td) {
668                         mutex_unlock(&md->table_devices_lock);
669                         return -ENOMEM;
670                 }
671
672                 td->dm_dev.mode = mode;
673                 td->dm_dev.bdev = NULL;
674
675                 if ((r = open_table_device(td, dev, md))) {
676                         mutex_unlock(&md->table_devices_lock);
677                         kfree(td);
678                         return r;
679                 }
680
681                 format_dev_t(td->dm_dev.name, dev);
682
683                 atomic_set(&td->count, 0);
684                 list_add(&td->list, &md->table_devices);
685         }
686         atomic_inc(&td->count);
687         mutex_unlock(&md->table_devices_lock);
688
689         *result = &td->dm_dev;
690         return 0;
691 }
692 EXPORT_SYMBOL_GPL(dm_get_table_device);
693
694 void dm_put_table_device(struct mapped_device *md, struct dm_dev *d)
695 {
696         struct table_device *td = container_of(d, struct table_device, dm_dev);
697
698         mutex_lock(&md->table_devices_lock);
699         if (atomic_dec_and_test(&td->count)) {
700                 close_table_device(td, md);
701                 list_del(&td->list);
702                 kfree(td);
703         }
704         mutex_unlock(&md->table_devices_lock);
705 }
706 EXPORT_SYMBOL(dm_put_table_device);
707
708 static void free_table_devices(struct list_head *devices)
709 {
710         struct list_head *tmp, *next;
711
712         list_for_each_safe(tmp, next, devices) {
713                 struct table_device *td = list_entry(tmp, struct table_device, list);
714
715                 DMWARN("dm_destroy: %s still exists with %d references",
716                        td->dm_dev.name, atomic_read(&td->count));
717                 kfree(td);
718         }
719 }
720
721 /*
722  * Get the geometry associated with a dm device
723  */
724 int dm_get_geometry(struct mapped_device *md, struct hd_geometry *geo)
725 {
726         *geo = md->geometry;
727
728         return 0;
729 }
730
731 /*
732  * Set the geometry of a device.
733  */
734 int dm_set_geometry(struct mapped_device *md, struct hd_geometry *geo)
735 {
736         sector_t sz = (sector_t)geo->cylinders * geo->heads * geo->sectors;
737
738         if (geo->start > sz) {
739                 DMWARN("Start sector is beyond the geometry limits.");
740                 return -EINVAL;
741         }
742
743         md->geometry = *geo;
744
745         return 0;
746 }
747
748 /*-----------------------------------------------------------------
749  * CRUD START:
750  *   A more elegant soln is in the works that uses the queue
751  *   merge fn, unfortunately there are a couple of changes to
752  *   the block layer that I want to make for this.  So in the
753  *   interests of getting something for people to use I give
754  *   you this clearly demarcated crap.
755  *---------------------------------------------------------------*/
756
757 static int __noflush_suspending(struct mapped_device *md)
758 {
759         return test_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
760 }
761
762 /*
763  * Decrements the number of outstanding ios that a bio has been
764  * cloned into, completing the original io if necc.
765  */
766 static void dec_pending(struct dm_io *io, int error)
767 {
768         unsigned long flags;
769         int io_error;
770         struct bio *bio;
771         struct mapped_device *md = io->md;
772
773         /* Push-back supersedes any I/O errors */
774         if (unlikely(error)) {
775                 spin_lock_irqsave(&io->endio_lock, flags);
776                 if (!(io->error > 0 && __noflush_suspending(md)))
777                         io->error = error;
778                 spin_unlock_irqrestore(&io->endio_lock, flags);
779         }
780
781         if (atomic_dec_and_test(&io->io_count)) {
782                 if (io->error == DM_ENDIO_REQUEUE) {
783                         /*
784                          * Target requested pushing back the I/O.
785                          */
786                         spin_lock_irqsave(&md->deferred_lock, flags);
787                         if (__noflush_suspending(md))
788                                 bio_list_add_head(&md->deferred, io->bio);
789                         else
790                                 /* noflush suspend was interrupted. */
791                                 io->error = -EIO;
792                         spin_unlock_irqrestore(&md->deferred_lock, flags);
793                 }
794
795                 io_error = io->error;
796                 bio = io->bio;
797                 end_io_acct(io);
798                 free_io(md, io);
799
800                 if (io_error == DM_ENDIO_REQUEUE)
801                         return;
802
803                 if ((bio->bi_opf & REQ_PREFLUSH) && bio->bi_iter.bi_size) {
804                         /*
805                          * Preflush done for flush with data, reissue
806                          * without REQ_PREFLUSH.
807                          */
808                         bio->bi_opf &= ~REQ_PREFLUSH;
809                         queue_io(md, bio);
810                 } else {
811                         /* done with normal IO or empty flush */
812                         trace_block_bio_complete(md->queue, bio, io_error);
813                         bio->bi_error = io_error;
814                         bio_endio(bio);
815                 }
816         }
817 }
818
819 void disable_write_same(struct mapped_device *md)
820 {
821         struct queue_limits *limits = dm_get_queue_limits(md);
822
823         /* device doesn't really support WRITE SAME, disable it */
824         limits->max_write_same_sectors = 0;
825 }
826
827 static void clone_endio(struct bio *bio)
828 {
829         int error = bio->bi_error;
830         int r = error;
831         struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone);
832         struct dm_io *io = tio->io;
833         struct mapped_device *md = tio->io->md;
834         dm_endio_fn endio = tio->ti->type->end_io;
835
836         if (endio) {
837                 r = endio(tio->ti, bio, error);
838                 if (r < 0 || r == DM_ENDIO_REQUEUE)
839                         /*
840                          * error and requeue request are handled
841                          * in dec_pending().
842                          */
843                         error = r;
844                 else if (r == DM_ENDIO_INCOMPLETE)
845                         /* The target will handle the io */
846                         return;
847                 else if (r) {
848                         DMWARN("unimplemented target endio return value: %d", r);
849                         BUG();
850                 }
851         }
852
853         if (unlikely(r == -EREMOTEIO && (bio_op(bio) == REQ_OP_WRITE_SAME) &&
854                      !bdev_get_queue(bio->bi_bdev)->limits.max_write_same_sectors))
855                 disable_write_same(md);
856
857         free_tio(tio);
858         dec_pending(io, error);
859 }
860
861 /*
862  * Return maximum size of I/O possible at the supplied sector up to the current
863  * target boundary.
864  */
865 static sector_t max_io_len_target_boundary(sector_t sector, struct dm_target *ti)
866 {
867         sector_t target_offset = dm_target_offset(ti, sector);
868
869         return ti->len - target_offset;
870 }
871
872 static sector_t max_io_len(sector_t sector, struct dm_target *ti)
873 {
874         sector_t len = max_io_len_target_boundary(sector, ti);
875         sector_t offset, max_len;
876
877         /*
878          * Does the target need to split even further?
879          */
880         if (ti->max_io_len) {
881                 offset = dm_target_offset(ti, sector);
882                 if (unlikely(ti->max_io_len & (ti->max_io_len - 1)))
883                         max_len = sector_div(offset, ti->max_io_len);
884                 else
885                         max_len = offset & (ti->max_io_len - 1);
886                 max_len = ti->max_io_len - max_len;
887
888                 if (len > max_len)
889                         len = max_len;
890         }
891
892         return len;
893 }
894
895 int dm_set_target_max_io_len(struct dm_target *ti, sector_t len)
896 {
897         if (len > UINT_MAX) {
898                 DMERR("Specified maximum size of target IO (%llu) exceeds limit (%u)",
899                       (unsigned long long)len, UINT_MAX);
900                 ti->error = "Maximum size of target IO is too large";
901                 return -EINVAL;
902         }
903
904         ti->max_io_len = (uint32_t) len;
905
906         return 0;
907 }
908 EXPORT_SYMBOL_GPL(dm_set_target_max_io_len);
909
910 static long dm_blk_direct_access(struct block_device *bdev, sector_t sector,
911                                  void **kaddr, pfn_t *pfn, long size)
912 {
913         struct mapped_device *md = bdev->bd_disk->private_data;
914         struct dm_table *map;
915         struct dm_target *ti;
916         int srcu_idx;
917         long len, ret = -EIO;
918
919         map = dm_get_live_table(md, &srcu_idx);
920         if (!map)
921                 goto out;
922
923         ti = dm_table_find_target(map, sector);
924         if (!dm_target_is_valid(ti))
925                 goto out;
926
927         len = max_io_len(sector, ti) << SECTOR_SHIFT;
928         size = min(len, size);
929
930         if (ti->type->direct_access)
931                 ret = ti->type->direct_access(ti, sector, kaddr, pfn, size);
932 out:
933         dm_put_live_table(md, srcu_idx);
934         return min(ret, size);
935 }
936
937 /*
938  * A target may call dm_accept_partial_bio only from the map routine.  It is
939  * allowed for all bio types except REQ_PREFLUSH.
940  *
941  * dm_accept_partial_bio informs the dm that the target only wants to process
942  * additional n_sectors sectors of the bio and the rest of the data should be
943  * sent in a next bio.
944  *
945  * A diagram that explains the arithmetics:
946  * +--------------------+---------------+-------+
947  * |         1          |       2       |   3   |
948  * +--------------------+---------------+-------+
949  *
950  * <-------------- *tio->len_ptr --------------->
951  *                      <------- bi_size ------->
952  *                      <-- n_sectors -->
953  *
954  * Region 1 was already iterated over with bio_advance or similar function.
955  *      (it may be empty if the target doesn't use bio_advance)
956  * Region 2 is the remaining bio size that the target wants to process.
957  *      (it may be empty if region 1 is non-empty, although there is no reason
958  *       to make it empty)
959  * The target requires that region 3 is to be sent in the next bio.
960  *
961  * If the target wants to receive multiple copies of the bio (via num_*bios, etc),
962  * the partially processed part (the sum of regions 1+2) must be the same for all
963  * copies of the bio.
964  */
965 void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors)
966 {
967         struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone);
968         unsigned bi_size = bio->bi_iter.bi_size >> SECTOR_SHIFT;
969         BUG_ON(bio->bi_opf & REQ_PREFLUSH);
970         BUG_ON(bi_size > *tio->len_ptr);
971         BUG_ON(n_sectors > bi_size);
972         *tio->len_ptr -= bi_size - n_sectors;
973         bio->bi_iter.bi_size = n_sectors << SECTOR_SHIFT;
974 }
975 EXPORT_SYMBOL_GPL(dm_accept_partial_bio);
976
977 /*
978  * Flush current->bio_list when the target map method blocks.
979  * This fixes deadlocks in snapshot and possibly in other targets.
980  */
981 struct dm_offload {
982         struct blk_plug plug;
983         struct blk_plug_cb cb;
984 };
985
986 static void flush_current_bio_list(struct blk_plug_cb *cb, bool from_schedule)
987 {
988         struct dm_offload *o = container_of(cb, struct dm_offload, cb);
989         struct bio_list list;
990         struct bio *bio;
991
992         INIT_LIST_HEAD(&o->cb.list);
993
994         if (unlikely(!current->bio_list))
995                 return;
996
997         list = *current->bio_list;
998         bio_list_init(current->bio_list);
999
1000         while ((bio = bio_list_pop(&list))) {
1001                 struct bio_set *bs = bio->bi_pool;
1002                 if (unlikely(!bs) || bs == fs_bio_set) {
1003                         bio_list_add(current->bio_list, bio);
1004                         continue;
1005                 }
1006
1007                 spin_lock(&bs->rescue_lock);
1008                 bio_list_add(&bs->rescue_list, bio);
1009                 queue_work(bs->rescue_workqueue, &bs->rescue_work);
1010                 spin_unlock(&bs->rescue_lock);
1011         }
1012 }
1013
1014 static void dm_offload_start(struct dm_offload *o)
1015 {
1016         blk_start_plug(&o->plug);
1017         o->cb.callback = flush_current_bio_list;
1018         list_add(&o->cb.list, &current->plug->cb_list);
1019 }
1020
1021 static void dm_offload_end(struct dm_offload *o)
1022 {
1023         list_del(&o->cb.list);
1024         blk_finish_plug(&o->plug);
1025 }
1026
1027 static void __map_bio(struct dm_target_io *tio)
1028 {
1029         int r;
1030         sector_t sector;
1031         struct dm_offload o;
1032         struct bio *clone = &tio->clone;
1033         struct dm_target *ti = tio->ti;
1034
1035         clone->bi_end_io = clone_endio;
1036
1037         /*
1038          * Map the clone.  If r == 0 we don't need to do
1039          * anything, the target has assumed ownership of
1040          * this io.
1041          */
1042         atomic_inc(&tio->io->io_count);
1043         sector = clone->bi_iter.bi_sector;
1044
1045         dm_offload_start(&o);
1046         r = ti->type->map(ti, clone);
1047         dm_offload_end(&o);
1048
1049         if (r == DM_MAPIO_REMAPPED) {
1050                 /* the bio has been remapped so dispatch it */
1051
1052                 trace_block_bio_remap(bdev_get_queue(clone->bi_bdev), clone,
1053                                       tio->io->bio->bi_bdev->bd_dev, sector);
1054
1055                 generic_make_request(clone);
1056         } else if (r < 0 || r == DM_MAPIO_REQUEUE) {
1057                 /* error the io and bail out, or requeue it if needed */
1058                 dec_pending(tio->io, r);
1059                 free_tio(tio);
1060         } else if (r != DM_MAPIO_SUBMITTED) {
1061                 DMWARN("unimplemented target map return value: %d", r);
1062                 BUG();
1063         }
1064 }
1065
1066 struct clone_info {
1067         struct mapped_device *md;
1068         struct dm_table *map;
1069         struct bio *bio;
1070         struct dm_io *io;
1071         sector_t sector;
1072         unsigned sector_count;
1073 };
1074
1075 static void bio_setup_sector(struct bio *bio, sector_t sector, unsigned len)
1076 {
1077         bio->bi_iter.bi_sector = sector;
1078         bio->bi_iter.bi_size = to_bytes(len);
1079 }
1080
1081 /*
1082  * Creates a bio that consists of range of complete bvecs.
1083  */
1084 static int clone_bio(struct dm_target_io *tio, struct bio *bio,
1085                      sector_t sector, unsigned len)
1086 {
1087         struct bio *clone = &tio->clone;
1088
1089         __bio_clone_fast(clone, bio);
1090
1091         if (bio_integrity(bio)) {
1092                 int r = bio_integrity_clone(clone, bio, GFP_NOIO);
1093                 if (r < 0)
1094                         return r;
1095         }
1096
1097         bio_advance(clone, to_bytes(sector - clone->bi_iter.bi_sector));
1098         clone->bi_iter.bi_size = to_bytes(len);
1099
1100         if (bio_integrity(bio))
1101                 bio_integrity_trim(clone, 0, len);
1102
1103         return 0;
1104 }
1105
1106 static struct dm_target_io *alloc_tio(struct clone_info *ci,
1107                                       struct dm_target *ti,
1108                                       unsigned target_bio_nr)
1109 {
1110         struct dm_target_io *tio;
1111         struct bio *clone;
1112
1113         clone = bio_alloc_bioset(GFP_NOIO, 0, ci->md->bs);
1114         tio = container_of(clone, struct dm_target_io, clone);
1115
1116         tio->io = ci->io;
1117         tio->ti = ti;
1118         tio->target_bio_nr = target_bio_nr;
1119
1120         return tio;
1121 }
1122
1123 static void __clone_and_map_simple_bio(struct clone_info *ci,
1124                                        struct dm_target *ti,
1125                                        unsigned target_bio_nr, unsigned *len)
1126 {
1127         struct dm_target_io *tio = alloc_tio(ci, ti, target_bio_nr);
1128         struct bio *clone = &tio->clone;
1129
1130         tio->len_ptr = len;
1131
1132         __bio_clone_fast(clone, ci->bio);
1133         if (len)
1134                 bio_setup_sector(clone, ci->sector, *len);
1135
1136         __map_bio(tio);
1137 }
1138
1139 static void __send_duplicate_bios(struct clone_info *ci, struct dm_target *ti,
1140                                   unsigned num_bios, unsigned *len)
1141 {
1142         unsigned target_bio_nr;
1143
1144         for (target_bio_nr = 0; target_bio_nr < num_bios; target_bio_nr++)
1145                 __clone_and_map_simple_bio(ci, ti, target_bio_nr, len);
1146 }
1147
1148 static int __send_empty_flush(struct clone_info *ci)
1149 {
1150         unsigned target_nr = 0;
1151         struct dm_target *ti;
1152
1153         BUG_ON(bio_has_data(ci->bio));
1154         while ((ti = dm_table_get_target(ci->map, target_nr++)))
1155                 __send_duplicate_bios(ci, ti, ti->num_flush_bios, NULL);
1156
1157         return 0;
1158 }
1159
1160 static int __clone_and_map_data_bio(struct clone_info *ci, struct dm_target *ti,
1161                                      sector_t sector, unsigned *len)
1162 {
1163         struct bio *bio = ci->bio;
1164         struct dm_target_io *tio;
1165         unsigned target_bio_nr;
1166         unsigned num_target_bios = 1;
1167         int r = 0;
1168
1169         /*
1170          * Does the target want to receive duplicate copies of the bio?
1171          */
1172         if (bio_data_dir(bio) == WRITE && ti->num_write_bios)
1173                 num_target_bios = ti->num_write_bios(ti, bio);
1174
1175         for (target_bio_nr = 0; target_bio_nr < num_target_bios; target_bio_nr++) {
1176                 tio = alloc_tio(ci, ti, target_bio_nr);
1177                 tio->len_ptr = len;
1178                 r = clone_bio(tio, bio, sector, *len);
1179                 if (r < 0) {
1180                         free_tio(tio);
1181                         break;
1182                 }
1183                 __map_bio(tio);
1184         }
1185
1186         return r;
1187 }
1188
1189 typedef unsigned (*get_num_bios_fn)(struct dm_target *ti);
1190
1191 static unsigned get_num_discard_bios(struct dm_target *ti)
1192 {
1193         return ti->num_discard_bios;
1194 }
1195
1196 static unsigned get_num_write_same_bios(struct dm_target *ti)
1197 {
1198         return ti->num_write_same_bios;
1199 }
1200
1201 typedef bool (*is_split_required_fn)(struct dm_target *ti);
1202
1203 static bool is_split_required_for_discard(struct dm_target *ti)
1204 {
1205         return ti->split_discard_bios;
1206 }
1207
1208 static int __send_changing_extent_only(struct clone_info *ci,
1209                                        get_num_bios_fn get_num_bios,
1210                                        is_split_required_fn is_split_required)
1211 {
1212         struct dm_target *ti;
1213         unsigned len;
1214         unsigned num_bios;
1215
1216         do {
1217                 ti = dm_table_find_target(ci->map, ci->sector);
1218                 if (!dm_target_is_valid(ti))
1219                         return -EIO;
1220
1221                 /*
1222                  * Even though the device advertised support for this type of
1223                  * request, that does not mean every target supports it, and
1224                  * reconfiguration might also have changed that since the
1225                  * check was performed.
1226                  */
1227                 num_bios = get_num_bios ? get_num_bios(ti) : 0;
1228                 if (!num_bios)
1229                         return -EOPNOTSUPP;
1230
1231                 if (is_split_required && !is_split_required(ti))
1232                         len = min((sector_t)ci->sector_count, max_io_len_target_boundary(ci->sector, ti));
1233                 else
1234                         len = min((sector_t)ci->sector_count, max_io_len(ci->sector, ti));
1235
1236                 __send_duplicate_bios(ci, ti, num_bios, &len);
1237
1238                 ci->sector += len;
1239         } while (ci->sector_count -= len);
1240
1241         return 0;
1242 }
1243
1244 static int __send_discard(struct clone_info *ci)
1245 {
1246         return __send_changing_extent_only(ci, get_num_discard_bios,
1247                                            is_split_required_for_discard);
1248 }
1249
1250 static int __send_write_same(struct clone_info *ci)
1251 {
1252         return __send_changing_extent_only(ci, get_num_write_same_bios, NULL);
1253 }
1254
1255 /*
1256  * Select the correct strategy for processing a non-flush bio.
1257  */
1258 static int __split_and_process_non_flush(struct clone_info *ci)
1259 {
1260         struct bio *bio = ci->bio;
1261         struct dm_target *ti;
1262         unsigned len;
1263         int r;
1264
1265         if (unlikely(bio_op(bio) == REQ_OP_DISCARD))
1266                 return __send_discard(ci);
1267         else if (unlikely(bio_op(bio) == REQ_OP_WRITE_SAME))
1268                 return __send_write_same(ci);
1269
1270         ti = dm_table_find_target(ci->map, ci->sector);
1271         if (!dm_target_is_valid(ti))
1272                 return -EIO;
1273
1274         len = min_t(sector_t, max_io_len(ci->sector, ti), ci->sector_count);
1275
1276         r = __clone_and_map_data_bio(ci, ti, ci->sector, &len);
1277         if (r < 0)
1278                 return r;
1279
1280         ci->sector += len;
1281         ci->sector_count -= len;
1282
1283         return 0;
1284 }
1285
1286 /*
1287  * Entry point to split a bio into clones and submit them to the targets.
1288  */
1289 static void __split_and_process_bio(struct mapped_device *md,
1290                                     struct dm_table *map, struct bio *bio)
1291 {
1292         struct clone_info ci;
1293         int error = 0;
1294
1295         if (unlikely(!map)) {
1296                 bio_io_error(bio);
1297                 return;
1298         }
1299
1300         ci.map = map;
1301         ci.md = md;
1302         ci.io = alloc_io(md);
1303         ci.io->error = 0;
1304         atomic_set(&ci.io->io_count, 1);
1305         ci.io->bio = bio;
1306         ci.io->md = md;
1307         spin_lock_init(&ci.io->endio_lock);
1308         ci.sector = bio->bi_iter.bi_sector;
1309
1310         start_io_acct(ci.io);
1311
1312         if (bio->bi_opf & REQ_PREFLUSH) {
1313                 ci.bio = &ci.md->flush_bio;
1314                 ci.sector_count = 0;
1315                 error = __send_empty_flush(&ci);
1316                 /* dec_pending submits any data associated with flush */
1317         } else {
1318                 ci.bio = bio;
1319                 ci.sector_count = bio_sectors(bio);
1320                 while (ci.sector_count && !error)
1321                         error = __split_and_process_non_flush(&ci);
1322         }
1323
1324         /* drop the extra reference count */
1325         dec_pending(ci.io, error);
1326 }
1327 /*-----------------------------------------------------------------
1328  * CRUD END
1329  *---------------------------------------------------------------*/
1330
1331 /*
1332  * The request function that just remaps the bio built up by
1333  * dm_merge_bvec.
1334  */
1335 static blk_qc_t dm_make_request(struct request_queue *q, struct bio *bio)
1336 {
1337         int rw = bio_data_dir(bio);
1338         struct mapped_device *md = q->queuedata;
1339         int srcu_idx;
1340         struct dm_table *map;
1341
1342         map = dm_get_live_table(md, &srcu_idx);
1343
1344         generic_start_io_acct(rw, bio_sectors(bio), &dm_disk(md)->part0);
1345
1346         /* if we're suspended, we have to queue this io for later */
1347         if (unlikely(test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags))) {
1348                 dm_put_live_table(md, srcu_idx);
1349
1350                 if (!(bio->bi_opf & REQ_RAHEAD))
1351                         queue_io(md, bio);
1352                 else
1353                         bio_io_error(bio);
1354                 return BLK_QC_T_NONE;
1355         }
1356
1357         __split_and_process_bio(md, map, bio);
1358         dm_put_live_table(md, srcu_idx);
1359         return BLK_QC_T_NONE;
1360 }
1361
1362 static int dm_any_congested(void *congested_data, int bdi_bits)
1363 {
1364         int r = bdi_bits;
1365         struct mapped_device *md = congested_data;
1366         struct dm_table *map;
1367
1368         if (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) {
1369                 if (dm_request_based(md)) {
1370                         /*
1371                          * With request-based DM we only need to check the
1372                          * top-level queue for congestion.
1373                          */
1374                         r = md->queue->backing_dev_info->wb.state & bdi_bits;
1375                 } else {
1376                         map = dm_get_live_table_fast(md);
1377                         if (map)
1378                                 r = dm_table_any_congested(map, bdi_bits);
1379                         dm_put_live_table_fast(md);
1380                 }
1381         }
1382
1383         return r;
1384 }
1385
1386 /*-----------------------------------------------------------------
1387  * An IDR is used to keep track of allocated minor numbers.
1388  *---------------------------------------------------------------*/
1389 static void free_minor(int minor)
1390 {
1391         spin_lock(&_minor_lock);
1392         idr_remove(&_minor_idr, minor);
1393         spin_unlock(&_minor_lock);
1394 }
1395
1396 /*
1397  * See if the device with a specific minor # is free.
1398  */
1399 static int specific_minor(int minor)
1400 {
1401         int r;
1402
1403         if (minor >= (1 << MINORBITS))
1404                 return -EINVAL;
1405
1406         idr_preload(GFP_KERNEL);
1407         spin_lock(&_minor_lock);
1408
1409         r = idr_alloc(&_minor_idr, MINOR_ALLOCED, minor, minor + 1, GFP_NOWAIT);
1410
1411         spin_unlock(&_minor_lock);
1412         idr_preload_end();
1413         if (r < 0)
1414                 return r == -ENOSPC ? -EBUSY : r;
1415         return 0;
1416 }
1417
1418 static int next_free_minor(int *minor)
1419 {
1420         int r;
1421
1422         idr_preload(GFP_KERNEL);
1423         spin_lock(&_minor_lock);
1424
1425         r = idr_alloc(&_minor_idr, MINOR_ALLOCED, 0, 1 << MINORBITS, GFP_NOWAIT);
1426
1427         spin_unlock(&_minor_lock);
1428         idr_preload_end();
1429         if (r < 0)
1430                 return r;
1431         *minor = r;
1432         return 0;
1433 }
1434
1435 static const struct block_device_operations dm_blk_dops;
1436
1437 static void dm_wq_work(struct work_struct *work);
1438
1439 void dm_init_md_queue(struct mapped_device *md)
1440 {
1441         /*
1442          * Request-based dm devices cannot be stacked on top of bio-based dm
1443          * devices.  The type of this dm device may not have been decided yet.
1444          * The type is decided at the first table loading time.
1445          * To prevent problematic device stacking, clear the queue flag
1446          * for request stacking support until then.
1447          *
1448          * This queue is new, so no concurrency on the queue_flags.
1449          */
1450         queue_flag_clear_unlocked(QUEUE_FLAG_STACKABLE, md->queue);
1451
1452         /*
1453          * Initialize data that will only be used by a non-blk-mq DM queue
1454          * - must do so here (in alloc_dev callchain) before queue is used
1455          */
1456         md->queue->queuedata = md;
1457         md->queue->backing_dev_info->congested_data = md;
1458 }
1459
1460 void dm_init_normal_md_queue(struct mapped_device *md)
1461 {
1462         md->use_blk_mq = false;
1463         dm_init_md_queue(md);
1464
1465         /*
1466          * Initialize aspects of queue that aren't relevant for blk-mq
1467          */
1468         md->queue->backing_dev_info->congested_fn = dm_any_congested;
1469         blk_queue_bounce_limit(md->queue, BLK_BOUNCE_ANY);
1470 }
1471
1472 static void cleanup_mapped_device(struct mapped_device *md)
1473 {
1474         if (md->wq)
1475                 destroy_workqueue(md->wq);
1476         if (md->kworker_task)
1477                 kthread_stop(md->kworker_task);
1478         mempool_destroy(md->io_pool);
1479         if (md->bs)
1480                 bioset_free(md->bs);
1481
1482         if (md->disk) {
1483                 spin_lock(&_minor_lock);
1484                 md->disk->private_data = NULL;
1485                 spin_unlock(&_minor_lock);
1486                 del_gendisk(md->disk);
1487                 put_disk(md->disk);
1488         }
1489
1490         if (md->queue)
1491                 blk_cleanup_queue(md->queue);
1492
1493         cleanup_srcu_struct(&md->io_barrier);
1494
1495         if (md->bdev) {
1496                 bdput(md->bdev);
1497                 md->bdev = NULL;
1498         }
1499
1500         dm_mq_cleanup_mapped_device(md);
1501 }
1502
1503 /*
1504  * Allocate and initialise a blank device with a given minor.
1505  */
1506 static struct mapped_device *alloc_dev(int minor)
1507 {
1508         int r, numa_node_id = dm_get_numa_node();
1509         struct mapped_device *md;
1510         void *old_md;
1511
1512         md = kzalloc_node(sizeof(*md), GFP_KERNEL, numa_node_id);
1513         if (!md) {
1514                 DMWARN("unable to allocate device, out of memory.");
1515                 return NULL;
1516         }
1517
1518         if (!try_module_get(THIS_MODULE))
1519                 goto bad_module_get;
1520
1521         /* get a minor number for the dev */
1522         if (minor == DM_ANY_MINOR)
1523                 r = next_free_minor(&minor);
1524         else
1525                 r = specific_minor(minor);
1526         if (r < 0)
1527                 goto bad_minor;
1528
1529         r = init_srcu_struct(&md->io_barrier);
1530         if (r < 0)
1531                 goto bad_io_barrier;
1532
1533         md->numa_node_id = numa_node_id;
1534         md->use_blk_mq = dm_use_blk_mq_default();
1535         md->init_tio_pdu = false;
1536         md->type = DM_TYPE_NONE;
1537         mutex_init(&md->suspend_lock);
1538         mutex_init(&md->type_lock);
1539         mutex_init(&md->table_devices_lock);
1540         spin_lock_init(&md->deferred_lock);
1541         atomic_set(&md->holders, 1);
1542         atomic_set(&md->open_count, 0);
1543         atomic_set(&md->event_nr, 0);
1544         atomic_set(&md->uevent_seq, 0);
1545         INIT_LIST_HEAD(&md->uevent_list);
1546         INIT_LIST_HEAD(&md->table_devices);
1547         spin_lock_init(&md->uevent_lock);
1548
1549         md->queue = blk_alloc_queue_node(GFP_KERNEL, numa_node_id);
1550         if (!md->queue)
1551                 goto bad;
1552
1553         dm_init_md_queue(md);
1554
1555         md->disk = alloc_disk_node(1, numa_node_id);
1556         if (!md->disk)
1557                 goto bad;
1558
1559         atomic_set(&md->pending[0], 0);
1560         atomic_set(&md->pending[1], 0);
1561         init_waitqueue_head(&md->wait);
1562         INIT_WORK(&md->work, dm_wq_work);
1563         init_waitqueue_head(&md->eventq);
1564         init_completion(&md->kobj_holder.completion);
1565         md->kworker_task = NULL;
1566
1567         md->disk->major = _major;
1568         md->disk->first_minor = minor;
1569         md->disk->fops = &dm_blk_dops;
1570         md->disk->queue = md->queue;
1571         md->disk->private_data = md;
1572         sprintf(md->disk->disk_name, "dm-%d", minor);
1573         add_disk(md->disk);
1574         format_dev_t(md->name, MKDEV(_major, minor));
1575
1576         md->wq = alloc_workqueue("kdmflush", WQ_MEM_RECLAIM, 0);
1577         if (!md->wq)
1578                 goto bad;
1579
1580         md->bdev = bdget_disk(md->disk, 0);
1581         if (!md->bdev)
1582                 goto bad;
1583
1584         bio_init(&md->flush_bio, NULL, 0);
1585         md->flush_bio.bi_bdev = md->bdev;
1586         md->flush_bio.bi_opf = REQ_OP_WRITE | REQ_PREFLUSH;
1587
1588         dm_stats_init(&md->stats);
1589
1590         /* Populate the mapping, nobody knows we exist yet */
1591         spin_lock(&_minor_lock);
1592         old_md = idr_replace(&_minor_idr, md, minor);
1593         spin_unlock(&_minor_lock);
1594
1595         BUG_ON(old_md != MINOR_ALLOCED);
1596
1597         return md;
1598
1599 bad:
1600         cleanup_mapped_device(md);
1601 bad_io_barrier:
1602         free_minor(minor);
1603 bad_minor:
1604         module_put(THIS_MODULE);
1605 bad_module_get:
1606         kfree(md);
1607         return NULL;
1608 }
1609
1610 static void unlock_fs(struct mapped_device *md);
1611
1612 static void free_dev(struct mapped_device *md)
1613 {
1614         int minor = MINOR(disk_devt(md->disk));
1615
1616         unlock_fs(md);
1617
1618         cleanup_mapped_device(md);
1619
1620         free_table_devices(&md->table_devices);
1621         dm_stats_cleanup(&md->stats);
1622         free_minor(minor);
1623
1624         module_put(THIS_MODULE);
1625         kfree(md);
1626 }
1627
1628 static void __bind_mempools(struct mapped_device *md, struct dm_table *t)
1629 {
1630         struct dm_md_mempools *p = dm_table_get_md_mempools(t);
1631
1632         if (md->bs) {
1633                 /* The md already has necessary mempools. */
1634                 if (dm_table_bio_based(t)) {
1635                         /*
1636                          * Reload bioset because front_pad may have changed
1637                          * because a different table was loaded.
1638                          */
1639                         bioset_free(md->bs);
1640                         md->bs = p->bs;
1641                         p->bs = NULL;
1642                 }
1643                 /*
1644                  * There's no need to reload with request-based dm
1645                  * because the size of front_pad doesn't change.
1646                  * Note for future: If you are to reload bioset,
1647                  * prep-ed requests in the queue may refer
1648                  * to bio from the old bioset, so you must walk
1649                  * through the queue to unprep.
1650                  */
1651                 goto out;
1652         }
1653
1654         BUG_ON(!p || md->io_pool || md->bs);
1655
1656         md->io_pool = p->io_pool;
1657         p->io_pool = NULL;
1658         md->bs = p->bs;
1659         p->bs = NULL;
1660
1661 out:
1662         /* mempool bind completed, no longer need any mempools in the table */
1663         dm_table_free_md_mempools(t);
1664 }
1665
1666 /*
1667  * Bind a table to the device.
1668  */
1669 static void event_callback(void *context)
1670 {
1671         unsigned long flags;
1672         LIST_HEAD(uevents);
1673         struct mapped_device *md = (struct mapped_device *) context;
1674
1675         spin_lock_irqsave(&md->uevent_lock, flags);
1676         list_splice_init(&md->uevent_list, &uevents);
1677         spin_unlock_irqrestore(&md->uevent_lock, flags);
1678
1679         dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
1680
1681         atomic_inc(&md->event_nr);
1682         wake_up(&md->eventq);
1683 }
1684
1685 /*
1686  * Protected by md->suspend_lock obtained by dm_swap_table().
1687  */
1688 static void __set_size(struct mapped_device *md, sector_t size)
1689 {
1690         set_capacity(md->disk, size);
1691
1692         i_size_write(md->bdev->bd_inode, (loff_t)size << SECTOR_SHIFT);
1693 }
1694
1695 /*
1696  * Returns old map, which caller must destroy.
1697  */
1698 static struct dm_table *__bind(struct mapped_device *md, struct dm_table *t,
1699                                struct queue_limits *limits)
1700 {
1701         struct dm_table *old_map;
1702         struct request_queue *q = md->queue;
1703         sector_t size;
1704
1705         lockdep_assert_held(&md->suspend_lock);
1706
1707         size = dm_table_get_size(t);
1708
1709         /*
1710          * Wipe any geometry if the size of the table changed.
1711          */
1712         if (size != dm_get_size(md))
1713                 memset(&md->geometry, 0, sizeof(md->geometry));
1714
1715         __set_size(md, size);
1716
1717         dm_table_event_callback(t, event_callback, md);
1718
1719         /*
1720          * The queue hasn't been stopped yet, if the old table type wasn't
1721          * for request-based during suspension.  So stop it to prevent
1722          * I/O mapping before resume.
1723          * This must be done before setting the queue restrictions,
1724          * because request-based dm may be run just after the setting.
1725          */
1726         if (dm_table_request_based(t)) {
1727                 dm_stop_queue(q);
1728                 /*
1729                  * Leverage the fact that request-based DM targets are
1730                  * immutable singletons and establish md->immutable_target
1731                  * - used to optimize both dm_request_fn and dm_mq_queue_rq
1732                  */
1733                 md->immutable_target = dm_table_get_immutable_target(t);
1734         }
1735
1736         __bind_mempools(md, t);
1737
1738         old_map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock));
1739         rcu_assign_pointer(md->map, (void *)t);
1740         md->immutable_target_type = dm_table_get_immutable_target_type(t);
1741
1742         dm_table_set_restrictions(t, q, limits);
1743         if (old_map)
1744                 dm_sync_table(md);
1745
1746         return old_map;
1747 }
1748
1749 /*
1750  * Returns unbound table for the caller to free.
1751  */
1752 static struct dm_table *__unbind(struct mapped_device *md)
1753 {
1754         struct dm_table *map = rcu_dereference_protected(md->map, 1);
1755
1756         if (!map)
1757                 return NULL;
1758
1759         dm_table_event_callback(map, NULL, NULL);
1760         RCU_INIT_POINTER(md->map, NULL);
1761         dm_sync_table(md);
1762
1763         return map;
1764 }
1765
1766 /*
1767  * Constructor for a new device.
1768  */
1769 int dm_create(int minor, struct mapped_device **result)
1770 {
1771         struct mapped_device *md;
1772
1773         md = alloc_dev(minor);
1774         if (!md)
1775                 return -ENXIO;
1776
1777         dm_sysfs_init(md);
1778
1779         *result = md;
1780         return 0;
1781 }
1782
1783 /*
1784  * Functions to manage md->type.
1785  * All are required to hold md->type_lock.
1786  */
1787 void dm_lock_md_type(struct mapped_device *md)
1788 {
1789         mutex_lock(&md->type_lock);
1790 }
1791
1792 void dm_unlock_md_type(struct mapped_device *md)
1793 {
1794         mutex_unlock(&md->type_lock);
1795 }
1796
1797 void dm_set_md_type(struct mapped_device *md, unsigned type)
1798 {
1799         BUG_ON(!mutex_is_locked(&md->type_lock));
1800         md->type = type;
1801 }
1802
1803 unsigned dm_get_md_type(struct mapped_device *md)
1804 {
1805         return md->type;
1806 }
1807
1808 struct target_type *dm_get_immutable_target_type(struct mapped_device *md)
1809 {
1810         return md->immutable_target_type;
1811 }
1812
1813 /*
1814  * The queue_limits are only valid as long as you have a reference
1815  * count on 'md'.
1816  */
1817 struct queue_limits *dm_get_queue_limits(struct mapped_device *md)
1818 {
1819         BUG_ON(!atomic_read(&md->holders));
1820         return &md->queue->limits;
1821 }
1822 EXPORT_SYMBOL_GPL(dm_get_queue_limits);
1823
1824 /*
1825  * Setup the DM device's queue based on md's type
1826  */
1827 int dm_setup_md_queue(struct mapped_device *md, struct dm_table *t)
1828 {
1829         int r;
1830         unsigned type = dm_get_md_type(md);
1831
1832         switch (type) {
1833         case DM_TYPE_REQUEST_BASED:
1834                 r = dm_old_init_request_queue(md, t);
1835                 if (r) {
1836                         DMERR("Cannot initialize queue for request-based mapped device");
1837                         return r;
1838                 }
1839                 break;
1840         case DM_TYPE_MQ_REQUEST_BASED:
1841                 r = dm_mq_init_request_queue(md, t);
1842                 if (r) {
1843                         DMERR("Cannot initialize queue for request-based dm-mq mapped device");
1844                         return r;
1845                 }
1846                 break;
1847         case DM_TYPE_BIO_BASED:
1848         case DM_TYPE_DAX_BIO_BASED:
1849                 dm_init_normal_md_queue(md);
1850                 blk_queue_make_request(md->queue, dm_make_request);
1851                 /*
1852                  * DM handles splitting bios as needed.  Free the bio_split bioset
1853                  * since it won't be used (saves 1 process per bio-based DM device).
1854                  */
1855                 bioset_free(md->queue->bio_split);
1856                 md->queue->bio_split = NULL;
1857
1858                 if (type == DM_TYPE_DAX_BIO_BASED)
1859                         queue_flag_set_unlocked(QUEUE_FLAG_DAX, md->queue);
1860                 break;
1861         }
1862
1863         return 0;
1864 }
1865
1866 struct mapped_device *dm_get_md(dev_t dev)
1867 {
1868         struct mapped_device *md;
1869         unsigned minor = MINOR(dev);
1870
1871         if (MAJOR(dev) != _major || minor >= (1 << MINORBITS))
1872                 return NULL;
1873
1874         spin_lock(&_minor_lock);
1875
1876         md = idr_find(&_minor_idr, minor);
1877         if (md) {
1878                 if ((md == MINOR_ALLOCED ||
1879                      (MINOR(disk_devt(dm_disk(md))) != minor) ||
1880                      dm_deleting_md(md) ||
1881                      test_bit(DMF_FREEING, &md->flags))) {
1882                         md = NULL;
1883                         goto out;
1884                 }
1885                 dm_get(md);
1886         }
1887
1888 out:
1889         spin_unlock(&_minor_lock);
1890
1891         return md;
1892 }
1893 EXPORT_SYMBOL_GPL(dm_get_md);
1894
1895 void *dm_get_mdptr(struct mapped_device *md)
1896 {
1897         return md->interface_ptr;
1898 }
1899
1900 void dm_set_mdptr(struct mapped_device *md, void *ptr)
1901 {
1902         md->interface_ptr = ptr;
1903 }
1904
1905 void dm_get(struct mapped_device *md)
1906 {
1907         atomic_inc(&md->holders);
1908         BUG_ON(test_bit(DMF_FREEING, &md->flags));
1909 }
1910
1911 int dm_hold(struct mapped_device *md)
1912 {
1913         spin_lock(&_minor_lock);
1914         if (test_bit(DMF_FREEING, &md->flags)) {
1915                 spin_unlock(&_minor_lock);
1916                 return -EBUSY;
1917         }
1918         dm_get(md);
1919         spin_unlock(&_minor_lock);
1920         return 0;
1921 }
1922 EXPORT_SYMBOL_GPL(dm_hold);
1923
1924 const char *dm_device_name(struct mapped_device *md)
1925 {
1926         return md->name;
1927 }
1928 EXPORT_SYMBOL_GPL(dm_device_name);
1929
1930 static void __dm_destroy(struct mapped_device *md, bool wait)
1931 {
1932         struct request_queue *q = dm_get_md_queue(md);
1933         struct dm_table *map;
1934         int srcu_idx;
1935
1936         might_sleep();
1937
1938         spin_lock(&_minor_lock);
1939         idr_replace(&_minor_idr, MINOR_ALLOCED, MINOR(disk_devt(dm_disk(md))));
1940         set_bit(DMF_FREEING, &md->flags);
1941         spin_unlock(&_minor_lock);
1942
1943         blk_set_queue_dying(q);
1944
1945         if (dm_request_based(md) && md->kworker_task)
1946                 kthread_flush_worker(&md->kworker);
1947
1948         /*
1949          * Take suspend_lock so that presuspend and postsuspend methods
1950          * do not race with internal suspend.
1951          */
1952         mutex_lock(&md->suspend_lock);
1953         map = dm_get_live_table(md, &srcu_idx);
1954         if (!dm_suspended_md(md)) {
1955                 dm_table_presuspend_targets(map);
1956                 dm_table_postsuspend_targets(map);
1957         }
1958         /* dm_put_live_table must be before msleep, otherwise deadlock is possible */
1959         dm_put_live_table(md, srcu_idx);
1960         mutex_unlock(&md->suspend_lock);
1961
1962         /*
1963          * Rare, but there may be I/O requests still going to complete,
1964          * for example.  Wait for all references to disappear.
1965          * No one should increment the reference count of the mapped_device,
1966          * after the mapped_device state becomes DMF_FREEING.
1967          */
1968         if (wait)
1969                 while (atomic_read(&md->holders))
1970                         msleep(1);
1971         else if (atomic_read(&md->holders))
1972                 DMWARN("%s: Forcibly removing mapped_device still in use! (%d users)",
1973                        dm_device_name(md), atomic_read(&md->holders));
1974
1975         dm_sysfs_exit(md);
1976         dm_table_destroy(__unbind(md));
1977         free_dev(md);
1978 }
1979
1980 void dm_destroy(struct mapped_device *md)
1981 {
1982         __dm_destroy(md, true);
1983 }
1984
1985 void dm_destroy_immediate(struct mapped_device *md)
1986 {
1987         __dm_destroy(md, false);
1988 }
1989
1990 void dm_put(struct mapped_device *md)
1991 {
1992         atomic_dec(&md->holders);
1993 }
1994 EXPORT_SYMBOL_GPL(dm_put);
1995
1996 static int dm_wait_for_completion(struct mapped_device *md, long task_state)
1997 {
1998         int r = 0;
1999         DEFINE_WAIT(wait);
2000
2001         while (1) {
2002                 prepare_to_wait(&md->wait, &wait, task_state);
2003
2004                 if (!md_in_flight(md))
2005                         break;
2006
2007                 if (signal_pending_state(task_state, current)) {
2008                         r = -EINTR;
2009                         break;
2010                 }
2011
2012                 io_schedule();
2013         }
2014         finish_wait(&md->wait, &wait);
2015
2016         return r;
2017 }
2018
2019 /*
2020  * Process the deferred bios
2021  */
2022 static void dm_wq_work(struct work_struct *work)
2023 {
2024         struct mapped_device *md = container_of(work, struct mapped_device,
2025                                                 work);
2026         struct bio *c;
2027         int srcu_idx;
2028         struct dm_table *map;
2029
2030         map = dm_get_live_table(md, &srcu_idx);
2031
2032         while (!test_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags)) {
2033                 spin_lock_irq(&md->deferred_lock);
2034                 c = bio_list_pop(&md->deferred);
2035                 spin_unlock_irq(&md->deferred_lock);
2036
2037                 if (!c)
2038                         break;
2039
2040                 if (dm_request_based(md))
2041                         generic_make_request(c);
2042                 else
2043                         __split_and_process_bio(md, map, c);
2044         }
2045
2046         dm_put_live_table(md, srcu_idx);
2047 }
2048
2049 static void dm_queue_flush(struct mapped_device *md)
2050 {
2051         clear_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags);
2052         smp_mb__after_atomic();
2053         queue_work(md->wq, &md->work);
2054 }
2055
2056 /*
2057  * Swap in a new table, returning the old one for the caller to destroy.
2058  */
2059 struct dm_table *dm_swap_table(struct mapped_device *md, struct dm_table *table)
2060 {
2061         struct dm_table *live_map = NULL, *map = ERR_PTR(-EINVAL);
2062         struct queue_limits limits;
2063         int r;
2064
2065         mutex_lock(&md->suspend_lock);
2066
2067         /* device must be suspended */
2068         if (!dm_suspended_md(md))
2069                 goto out;
2070
2071         /*
2072          * If the new table has no data devices, retain the existing limits.
2073          * This helps multipath with queue_if_no_path if all paths disappear,
2074          * then new I/O is queued based on these limits, and then some paths
2075          * reappear.
2076          */
2077         if (dm_table_has_no_data_devices(table)) {
2078                 live_map = dm_get_live_table_fast(md);
2079                 if (live_map)
2080                         limits = md->queue->limits;
2081                 dm_put_live_table_fast(md);
2082         }
2083
2084         if (!live_map) {
2085                 r = dm_calculate_queue_limits(table, &limits);
2086                 if (r) {
2087                         map = ERR_PTR(r);
2088                         goto out;
2089                 }
2090         }
2091
2092         map = __bind(md, table, &limits);
2093
2094 out:
2095         mutex_unlock(&md->suspend_lock);
2096         return map;
2097 }
2098
2099 /*
2100  * Functions to lock and unlock any filesystem running on the
2101  * device.
2102  */
2103 static int lock_fs(struct mapped_device *md)
2104 {
2105         int r;
2106
2107         WARN_ON(md->frozen_sb);
2108
2109         md->frozen_sb = freeze_bdev(md->bdev);
2110         if (IS_ERR(md->frozen_sb)) {
2111                 r = PTR_ERR(md->frozen_sb);
2112                 md->frozen_sb = NULL;
2113                 return r;
2114         }
2115
2116         set_bit(DMF_FROZEN, &md->flags);
2117
2118         return 0;
2119 }
2120
2121 static void unlock_fs(struct mapped_device *md)
2122 {
2123         if (!test_bit(DMF_FROZEN, &md->flags))
2124                 return;
2125
2126         thaw_bdev(md->bdev, md->frozen_sb);
2127         md->frozen_sb = NULL;
2128         clear_bit(DMF_FROZEN, &md->flags);
2129 }
2130
2131 /*
2132  * @suspend_flags: DM_SUSPEND_LOCKFS_FLAG and/or DM_SUSPEND_NOFLUSH_FLAG
2133  * @task_state: e.g. TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE
2134  * @dmf_suspended_flag: DMF_SUSPENDED or DMF_SUSPENDED_INTERNALLY
2135  *
2136  * If __dm_suspend returns 0, the device is completely quiescent
2137  * now. There is no request-processing activity. All new requests
2138  * are being added to md->deferred list.
2139  *
2140  * Caller must hold md->suspend_lock
2141  */
2142 static int __dm_suspend(struct mapped_device *md, struct dm_table *map,
2143                         unsigned suspend_flags, long task_state,
2144                         int dmf_suspended_flag)
2145 {
2146         bool do_lockfs = suspend_flags & DM_SUSPEND_LOCKFS_FLAG;
2147         bool noflush = suspend_flags & DM_SUSPEND_NOFLUSH_FLAG;
2148         int r;
2149
2150         lockdep_assert_held(&md->suspend_lock);
2151
2152         /*
2153          * DMF_NOFLUSH_SUSPENDING must be set before presuspend.
2154          * This flag is cleared before dm_suspend returns.
2155          */
2156         if (noflush)
2157                 set_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
2158
2159         /*
2160          * This gets reverted if there's an error later and the targets
2161          * provide the .presuspend_undo hook.
2162          */
2163         dm_table_presuspend_targets(map);
2164
2165         /*
2166          * Flush I/O to the device.
2167          * Any I/O submitted after lock_fs() may not be flushed.
2168          * noflush takes precedence over do_lockfs.
2169          * (lock_fs() flushes I/Os and waits for them to complete.)
2170          */
2171         if (!noflush && do_lockfs) {
2172                 r = lock_fs(md);
2173                 if (r) {
2174                         dm_table_presuspend_undo_targets(map);
2175                         return r;
2176                 }
2177         }
2178
2179         /*
2180          * Here we must make sure that no processes are submitting requests
2181          * to target drivers i.e. no one may be executing
2182          * __split_and_process_bio. This is called from dm_request and
2183          * dm_wq_work.
2184          *
2185          * To get all processes out of __split_and_process_bio in dm_request,
2186          * we take the write lock. To prevent any process from reentering
2187          * __split_and_process_bio from dm_request and quiesce the thread
2188          * (dm_wq_work), we set BMF_BLOCK_IO_FOR_SUSPEND and call
2189          * flush_workqueue(md->wq).
2190          */
2191         set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags);
2192         if (map)
2193                 synchronize_srcu(&md->io_barrier);
2194
2195         /*
2196          * Stop md->queue before flushing md->wq in case request-based
2197          * dm defers requests to md->wq from md->queue.
2198          */
2199         if (dm_request_based(md)) {
2200                 dm_stop_queue(md->queue);
2201                 if (md->kworker_task)
2202                         kthread_flush_worker(&md->kworker);
2203         }
2204
2205         flush_workqueue(md->wq);
2206
2207         /*
2208          * At this point no more requests are entering target request routines.
2209          * We call dm_wait_for_completion to wait for all existing requests
2210          * to finish.
2211          */
2212         r = dm_wait_for_completion(md, task_state);
2213         if (!r)
2214                 set_bit(dmf_suspended_flag, &md->flags);
2215
2216         if (noflush)
2217                 clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
2218         if (map)
2219                 synchronize_srcu(&md->io_barrier);
2220
2221         /* were we interrupted ? */
2222         if (r < 0) {
2223                 dm_queue_flush(md);
2224
2225                 if (dm_request_based(md))
2226                         dm_start_queue(md->queue);
2227
2228                 unlock_fs(md);
2229                 dm_table_presuspend_undo_targets(map);
2230                 /* pushback list is already flushed, so skip flush */
2231         }
2232
2233         return r;
2234 }
2235
2236 /*
2237  * We need to be able to change a mapping table under a mounted
2238  * filesystem.  For example we might want to move some data in
2239  * the background.  Before the table can be swapped with
2240  * dm_bind_table, dm_suspend must be called to flush any in
2241  * flight bios and ensure that any further io gets deferred.
2242  */
2243 /*
2244  * Suspend mechanism in request-based dm.
2245  *
2246  * 1. Flush all I/Os by lock_fs() if needed.
2247  * 2. Stop dispatching any I/O by stopping the request_queue.
2248  * 3. Wait for all in-flight I/Os to be completed or requeued.
2249  *
2250  * To abort suspend, start the request_queue.
2251  */
2252 int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
2253 {
2254         struct dm_table *map = NULL;
2255         int r = 0;
2256
2257 retry:
2258         mutex_lock_nested(&md->suspend_lock, SINGLE_DEPTH_NESTING);
2259
2260         if (dm_suspended_md(md)) {
2261                 r = -EINVAL;
2262                 goto out_unlock;
2263         }
2264
2265         if (dm_suspended_internally_md(md)) {
2266                 /* already internally suspended, wait for internal resume */
2267                 mutex_unlock(&md->suspend_lock);
2268                 r = wait_on_bit(&md->flags, DMF_SUSPENDED_INTERNALLY, TASK_INTERRUPTIBLE);
2269                 if (r)
2270                         return r;
2271                 goto retry;
2272         }
2273
2274         map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock));
2275
2276         r = __dm_suspend(md, map, suspend_flags, TASK_INTERRUPTIBLE, DMF_SUSPENDED);
2277         if (r)
2278                 goto out_unlock;
2279
2280         dm_table_postsuspend_targets(map);
2281
2282 out_unlock:
2283         mutex_unlock(&md->suspend_lock);
2284         return r;
2285 }
2286
2287 static int __dm_resume(struct mapped_device *md, struct dm_table *map)
2288 {
2289         if (map) {
2290                 int r = dm_table_resume_targets(map);
2291                 if (r)
2292                         return r;
2293         }
2294
2295         dm_queue_flush(md);
2296
2297         /*
2298          * Flushing deferred I/Os must be done after targets are resumed
2299          * so that mapping of targets can work correctly.
2300          * Request-based dm is queueing the deferred I/Os in its request_queue.
2301          */
2302         if (dm_request_based(md))
2303                 dm_start_queue(md->queue);
2304
2305         unlock_fs(md);
2306
2307         return 0;
2308 }
2309
2310 int dm_resume(struct mapped_device *md)
2311 {
2312         int r;
2313         struct dm_table *map = NULL;
2314
2315 retry:
2316         r = -EINVAL;
2317         mutex_lock_nested(&md->suspend_lock, SINGLE_DEPTH_NESTING);
2318
2319         if (!dm_suspended_md(md))
2320                 goto out;
2321
2322         if (dm_suspended_internally_md(md)) {
2323                 /* already internally suspended, wait for internal resume */
2324                 mutex_unlock(&md->suspend_lock);
2325                 r = wait_on_bit(&md->flags, DMF_SUSPENDED_INTERNALLY, TASK_INTERRUPTIBLE);
2326                 if (r)
2327                         return r;
2328                 goto retry;
2329         }
2330
2331         map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock));
2332         if (!map || !dm_table_get_size(map))
2333                 goto out;
2334
2335         r = __dm_resume(md, map);
2336         if (r)
2337                 goto out;
2338
2339         clear_bit(DMF_SUSPENDED, &md->flags);
2340 out:
2341         mutex_unlock(&md->suspend_lock);
2342
2343         return r;
2344 }
2345
2346 /*
2347  * Internal suspend/resume works like userspace-driven suspend. It waits
2348  * until all bios finish and prevents issuing new bios to the target drivers.
2349  * It may be used only from the kernel.
2350  */
2351
2352 static void __dm_internal_suspend(struct mapped_device *md, unsigned suspend_flags)
2353 {
2354         struct dm_table *map = NULL;
2355
2356         if (md->internal_suspend_count++)
2357                 return; /* nested internal suspend */
2358
2359         if (dm_suspended_md(md)) {
2360                 set_bit(DMF_SUSPENDED_INTERNALLY, &md->flags);
2361                 return; /* nest suspend */
2362         }
2363
2364         map = rcu_dereference_protected(md->map, lockdep_is_held(&md->suspend_lock));
2365
2366         /*
2367          * Using TASK_UNINTERRUPTIBLE because only NOFLUSH internal suspend is
2368          * supported.  Properly supporting a TASK_INTERRUPTIBLE internal suspend
2369          * would require changing .presuspend to return an error -- avoid this
2370          * until there is a need for more elaborate variants of internal suspend.
2371          */
2372         (void) __dm_suspend(md, map, suspend_flags, TASK_UNINTERRUPTIBLE,
2373                             DMF_SUSPENDED_INTERNALLY);
2374
2375         dm_table_postsuspend_targets(map);
2376 }
2377
2378 static void __dm_internal_resume(struct mapped_device *md)
2379 {
2380         BUG_ON(!md->internal_suspend_count);
2381
2382         if (--md->internal_suspend_count)
2383                 return; /* resume from nested internal suspend */
2384
2385         if (dm_suspended_md(md))
2386                 goto done; /* resume from nested suspend */
2387
2388         /*
2389          * NOTE: existing callers don't need to call dm_table_resume_targets
2390          * (which may fail -- so best to avoid it for now by passing NULL map)
2391          */
2392         (void) __dm_resume(md, NULL);
2393
2394 done:
2395         clear_bit(DMF_SUSPENDED_INTERNALLY, &md->flags);
2396         smp_mb__after_atomic();
2397         wake_up_bit(&md->flags, DMF_SUSPENDED_INTERNALLY);
2398 }
2399
2400 void dm_internal_suspend_noflush(struct mapped_device *md)
2401 {
2402         mutex_lock(&md->suspend_lock);
2403         __dm_internal_suspend(md, DM_SUSPEND_NOFLUSH_FLAG);
2404         mutex_unlock(&md->suspend_lock);
2405 }
2406 EXPORT_SYMBOL_GPL(dm_internal_suspend_noflush);
2407
2408 void dm_internal_resume(struct mapped_device *md)
2409 {
2410         mutex_lock(&md->suspend_lock);
2411         __dm_internal_resume(md);
2412         mutex_unlock(&md->suspend_lock);
2413 }
2414 EXPORT_SYMBOL_GPL(dm_internal_resume);
2415
2416 /*
2417  * Fast variants of internal suspend/resume hold md->suspend_lock,
2418  * which prevents interaction with userspace-driven suspend.
2419  */
2420
2421 void dm_internal_suspend_fast(struct mapped_device *md)
2422 {
2423         mutex_lock(&md->suspend_lock);
2424         if (dm_suspended_md(md) || dm_suspended_internally_md(md))
2425                 return;
2426
2427         set_bit(DMF_BLOCK_IO_FOR_SUSPEND, &md->flags);
2428         synchronize_srcu(&md->io_barrier);
2429         flush_workqueue(md->wq);
2430         dm_wait_for_completion(md, TASK_UNINTERRUPTIBLE);
2431 }
2432 EXPORT_SYMBOL_GPL(dm_internal_suspend_fast);
2433
2434 void dm_internal_resume_fast(struct mapped_device *md)
2435 {
2436         if (dm_suspended_md(md) || dm_suspended_internally_md(md))
2437                 goto done;
2438
2439         dm_queue_flush(md);
2440
2441 done:
2442         mutex_unlock(&md->suspend_lock);
2443 }
2444 EXPORT_SYMBOL_GPL(dm_internal_resume_fast);
2445
2446 /*-----------------------------------------------------------------
2447  * Event notification.
2448  *---------------------------------------------------------------*/
2449 int dm_kobject_uevent(struct mapped_device *md, enum kobject_action action,
2450                        unsigned cookie)
2451 {
2452         char udev_cookie[DM_COOKIE_LENGTH];
2453         char *envp[] = { udev_cookie, NULL };
2454
2455         if (!cookie)
2456                 return kobject_uevent(&disk_to_dev(md->disk)->kobj, action);
2457         else {
2458                 snprintf(udev_cookie, DM_COOKIE_LENGTH, "%s=%u",
2459                          DM_COOKIE_ENV_VAR_NAME, cookie);
2460                 return kobject_uevent_env(&disk_to_dev(md->disk)->kobj,
2461                                           action, envp);
2462         }
2463 }
2464
2465 uint32_t dm_next_uevent_seq(struct mapped_device *md)
2466 {
2467         return atomic_add_return(1, &md->uevent_seq);
2468 }
2469
2470 uint32_t dm_get_event_nr(struct mapped_device *md)
2471 {
2472         return atomic_read(&md->event_nr);
2473 }
2474
2475 int dm_wait_event(struct mapped_device *md, int event_nr)
2476 {
2477         return wait_event_interruptible(md->eventq,
2478                         (event_nr != atomic_read(&md->event_nr)));
2479 }
2480
2481 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
2482 {
2483         unsigned long flags;
2484
2485         spin_lock_irqsave(&md->uevent_lock, flags);
2486         list_add(elist, &md->uevent_list);
2487         spin_unlock_irqrestore(&md->uevent_lock, flags);
2488 }
2489
2490 /*
2491  * The gendisk is only valid as long as you have a reference
2492  * count on 'md'.
2493  */
2494 struct gendisk *dm_disk(struct mapped_device *md)
2495 {
2496         return md->disk;
2497 }
2498 EXPORT_SYMBOL_GPL(dm_disk);
2499
2500 struct kobject *dm_kobject(struct mapped_device *md)
2501 {
2502         return &md->kobj_holder.kobj;
2503 }
2504
2505 struct mapped_device *dm_get_from_kobject(struct kobject *kobj)
2506 {
2507         struct mapped_device *md;
2508
2509         md = container_of(kobj, struct mapped_device, kobj_holder.kobj);
2510
2511         if (test_bit(DMF_FREEING, &md->flags) ||
2512             dm_deleting_md(md))
2513                 return NULL;
2514
2515         dm_get(md);
2516         return md;
2517 }
2518
2519 int dm_suspended_md(struct mapped_device *md)
2520 {
2521         return test_bit(DMF_SUSPENDED, &md->flags);
2522 }
2523
2524 int dm_suspended_internally_md(struct mapped_device *md)
2525 {
2526         return test_bit(DMF_SUSPENDED_INTERNALLY, &md->flags);
2527 }
2528
2529 int dm_test_deferred_remove_flag(struct mapped_device *md)
2530 {
2531         return test_bit(DMF_DEFERRED_REMOVE, &md->flags);
2532 }
2533
2534 int dm_suspended(struct dm_target *ti)
2535 {
2536         return dm_suspended_md(dm_table_get_md(ti->table));
2537 }
2538 EXPORT_SYMBOL_GPL(dm_suspended);
2539
2540 int dm_noflush_suspending(struct dm_target *ti)
2541 {
2542         return __noflush_suspending(dm_table_get_md(ti->table));
2543 }
2544 EXPORT_SYMBOL_GPL(dm_noflush_suspending);
2545
2546 struct dm_md_mempools *dm_alloc_md_mempools(struct mapped_device *md, unsigned type,
2547                                             unsigned integrity, unsigned per_io_data_size)
2548 {
2549         struct dm_md_mempools *pools = kzalloc_node(sizeof(*pools), GFP_KERNEL, md->numa_node_id);
2550         unsigned int pool_size = 0;
2551         unsigned int front_pad;
2552
2553         if (!pools)
2554                 return NULL;
2555
2556         switch (type) {
2557         case DM_TYPE_BIO_BASED:
2558         case DM_TYPE_DAX_BIO_BASED:
2559                 pool_size = dm_get_reserved_bio_based_ios();
2560                 front_pad = roundup(per_io_data_size, __alignof__(struct dm_target_io)) + offsetof(struct dm_target_io, clone);
2561         
2562                 pools->io_pool = mempool_create_slab_pool(pool_size, _io_cache);
2563                 if (!pools->io_pool)
2564                         goto out;
2565                 break;
2566         case DM_TYPE_REQUEST_BASED:
2567         case DM_TYPE_MQ_REQUEST_BASED:
2568                 pool_size = dm_get_reserved_rq_based_ios();
2569                 front_pad = offsetof(struct dm_rq_clone_bio_info, clone);
2570                 /* per_io_data_size is used for blk-mq pdu at queue allocation */
2571                 break;
2572         default:
2573                 BUG();
2574         }
2575
2576         pools->bs = bioset_create_nobvec(pool_size, front_pad);
2577         if (!pools->bs)
2578                 goto out;
2579
2580         if (integrity && bioset_integrity_create(pools->bs, pool_size))
2581                 goto out;
2582
2583         return pools;
2584
2585 out:
2586         dm_free_md_mempools(pools);
2587
2588         return NULL;
2589 }
2590
2591 void dm_free_md_mempools(struct dm_md_mempools *pools)
2592 {
2593         if (!pools)
2594                 return;
2595
2596         mempool_destroy(pools->io_pool);
2597
2598         if (pools->bs)
2599                 bioset_free(pools->bs);
2600
2601         kfree(pools);
2602 }
2603
2604 struct dm_pr {
2605         u64     old_key;
2606         u64     new_key;
2607         u32     flags;
2608         bool    fail_early;
2609 };
2610
2611 static int dm_call_pr(struct block_device *bdev, iterate_devices_callout_fn fn,
2612                       void *data)
2613 {
2614         struct mapped_device *md = bdev->bd_disk->private_data;
2615         struct dm_table *table;
2616         struct dm_target *ti;
2617         int ret = -ENOTTY, srcu_idx;
2618
2619         table = dm_get_live_table(md, &srcu_idx);
2620         if (!table || !dm_table_get_size(table))
2621                 goto out;
2622
2623         /* We only support devices that have a single target */
2624         if (dm_table_get_num_targets(table) != 1)
2625                 goto out;
2626         ti = dm_table_get_target(table, 0);
2627
2628         ret = -EINVAL;
2629         if (!ti->type->iterate_devices)
2630                 goto out;
2631
2632         ret = ti->type->iterate_devices(ti, fn, data);
2633 out:
2634         dm_put_live_table(md, srcu_idx);
2635         return ret;
2636 }
2637
2638 /*
2639  * For register / unregister we need to manually call out to every path.
2640  */
2641 static int __dm_pr_register(struct dm_target *ti, struct dm_dev *dev,
2642                             sector_t start, sector_t len, void *data)
2643 {
2644         struct dm_pr *pr = data;
2645         const struct pr_ops *ops = dev->bdev->bd_disk->fops->pr_ops;
2646
2647         if (!ops || !ops->pr_register)
2648                 return -EOPNOTSUPP;
2649         return ops->pr_register(dev->bdev, pr->old_key, pr->new_key, pr->flags);
2650 }
2651
2652 static int dm_pr_register(struct block_device *bdev, u64 old_key, u64 new_key,
2653                           u32 flags)
2654 {
2655         struct dm_pr pr = {
2656                 .old_key        = old_key,
2657                 .new_key        = new_key,
2658                 .flags          = flags,
2659                 .fail_early     = true,
2660         };
2661         int ret;
2662
2663         ret = dm_call_pr(bdev, __dm_pr_register, &pr);
2664         if (ret && new_key) {
2665                 /* unregister all paths if we failed to register any path */
2666                 pr.old_key = new_key;
2667                 pr.new_key = 0;
2668                 pr.flags = 0;
2669                 pr.fail_early = false;
2670                 dm_call_pr(bdev, __dm_pr_register, &pr);
2671         }
2672
2673         return ret;
2674 }
2675
2676 static int dm_pr_reserve(struct block_device *bdev, u64 key, enum pr_type type,
2677                          u32 flags)
2678 {
2679         struct mapped_device *md = bdev->bd_disk->private_data;
2680         const struct pr_ops *ops;
2681         fmode_t mode;
2682         int r;
2683
2684         r = dm_grab_bdev_for_ioctl(md, &bdev, &mode);
2685         if (r < 0)
2686                 return r;
2687
2688         ops = bdev->bd_disk->fops->pr_ops;
2689         if (ops && ops->pr_reserve)
2690                 r = ops->pr_reserve(bdev, key, type, flags);
2691         else
2692                 r = -EOPNOTSUPP;
2693
2694         bdput(bdev);
2695         return r;
2696 }
2697
2698 static int dm_pr_release(struct block_device *bdev, u64 key, enum pr_type type)
2699 {
2700         struct mapped_device *md = bdev->bd_disk->private_data;
2701         const struct pr_ops *ops;
2702         fmode_t mode;
2703         int r;
2704
2705         r = dm_grab_bdev_for_ioctl(md, &bdev, &mode);
2706         if (r < 0)
2707                 return r;
2708
2709         ops = bdev->bd_disk->fops->pr_ops;
2710         if (ops && ops->pr_release)
2711                 r = ops->pr_release(bdev, key, type);
2712         else
2713                 r = -EOPNOTSUPP;
2714
2715         bdput(bdev);
2716         return r;
2717 }
2718
2719 static int dm_pr_preempt(struct block_device *bdev, u64 old_key, u64 new_key,
2720                          enum pr_type type, bool abort)
2721 {
2722         struct mapped_device *md = bdev->bd_disk->private_data;
2723         const struct pr_ops *ops;
2724         fmode_t mode;
2725         int r;
2726
2727         r = dm_grab_bdev_for_ioctl(md, &bdev, &mode);
2728         if (r < 0)
2729                 return r;
2730
2731         ops = bdev->bd_disk->fops->pr_ops;
2732         if (ops && ops->pr_preempt)
2733                 r = ops->pr_preempt(bdev, old_key, new_key, type, abort);
2734         else
2735                 r = -EOPNOTSUPP;
2736
2737         bdput(bdev);
2738         return r;
2739 }
2740
2741 static int dm_pr_clear(struct block_device *bdev, u64 key)
2742 {
2743         struct mapped_device *md = bdev->bd_disk->private_data;
2744         const struct pr_ops *ops;
2745         fmode_t mode;
2746         int r;
2747
2748         r = dm_grab_bdev_for_ioctl(md, &bdev, &mode);
2749         if (r < 0)
2750                 return r;
2751
2752         ops = bdev->bd_disk->fops->pr_ops;
2753         if (ops && ops->pr_clear)
2754                 r = ops->pr_clear(bdev, key);
2755         else
2756                 r = -EOPNOTSUPP;
2757
2758         bdput(bdev);
2759         return r;
2760 }
2761
2762 static const struct pr_ops dm_pr_ops = {
2763         .pr_register    = dm_pr_register,
2764         .pr_reserve     = dm_pr_reserve,
2765         .pr_release     = dm_pr_release,
2766         .pr_preempt     = dm_pr_preempt,
2767         .pr_clear       = dm_pr_clear,
2768 };
2769
2770 static const struct block_device_operations dm_blk_dops = {
2771         .open = dm_blk_open,
2772         .release = dm_blk_close,
2773         .ioctl = dm_blk_ioctl,
2774         .direct_access = dm_blk_direct_access,
2775         .getgeo = dm_blk_getgeo,
2776         .pr_ops = &dm_pr_ops,
2777         .owner = THIS_MODULE
2778 };
2779
2780 /*
2781  * module hooks
2782  */
2783 module_init(dm_init);
2784 module_exit(dm_exit);
2785
2786 module_param(major, uint, 0);
2787 MODULE_PARM_DESC(major, "The major number of the device mapper");
2788
2789 module_param(reserved_bio_based_ios, uint, S_IRUGO | S_IWUSR);
2790 MODULE_PARM_DESC(reserved_bio_based_ios, "Reserved IOs in bio-based mempools");
2791
2792 module_param(dm_numa_node, int, S_IRUGO | S_IWUSR);
2793 MODULE_PARM_DESC(dm_numa_node, "NUMA node for DM device memory allocations");
2794
2795 MODULE_DESCRIPTION(DM_NAME " driver");
2796 MODULE_AUTHOR("Joe Thornber <dm-devel@redhat.com>");
2797 MODULE_LICENSE("GPL");