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