2  * Copyright (C) 2001, 2002 Sistina Software (UK) Limited.
 
   3  * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
 
   5  * This file is released under the GPL.
 
   9 #include "dm-bio-list.h"
 
  10 #include "dm-uevent.h"
 
  12 #include <linux/init.h>
 
  13 #include <linux/module.h>
 
  14 #include <linux/mutex.h>
 
  15 #include <linux/moduleparam.h>
 
  16 #include <linux/blkpg.h>
 
  17 #include <linux/bio.h>
 
  18 #include <linux/buffer_head.h>
 
  19 #include <linux/mempool.h>
 
  20 #include <linux/slab.h>
 
  21 #include <linux/idr.h>
 
  22 #include <linux/hdreg.h>
 
  23 #include <linux/blktrace_api.h>
 
  24 #include <linux/smp_lock.h>
 
  26 #define DM_MSG_PREFIX "core"
 
  28 static const char *_name = DM_NAME;
 
  30 static unsigned int major = 0;
 
  31 static unsigned int _major = 0;
 
  33 static DEFINE_SPINLOCK(_minor_lock);
 
  35  * One of these is allocated per bio.
 
  38         struct mapped_device *md;
 
  42         unsigned long start_time;
 
  46  * One of these is allocated per target within a bio.  Hopefully
 
  47  * this will be simplified out one day.
 
  55 union map_info *dm_get_mapinfo(struct bio *bio)
 
  57         if (bio && bio->bi_private)
 
  58                 return &((struct dm_target_io *)bio->bi_private)->info;
 
  62 #define MINOR_ALLOCED ((void *)-1)
 
  65  * Bits for the md->flags field.
 
  67 #define DMF_BLOCK_IO 0
 
  68 #define DMF_SUSPENDED 1
 
  71 #define DMF_DELETING 4
 
  72 #define DMF_NOFLUSH_SUSPENDING 5
 
  75  * Work processed by per-device workqueue.
 
  82         struct work_struct work;
 
  83         struct mapped_device *md;
 
  87 struct mapped_device {
 
  88         struct rw_semaphore io_lock;
 
  89         struct mutex suspend_lock;
 
  90         spinlock_t pushback_lock;
 
  97         struct request_queue *queue;
 
 104          * A list of ios that arrived while we were suspended.
 
 107         wait_queue_head_t wait;
 
 108         struct bio_list deferred;
 
 109         struct bio_list pushback;
 
 112          * Processing queue (flush/barriers)
 
 114         struct workqueue_struct *wq;
 
 117          * The current mapping.
 
 119         struct dm_table *map;
 
 122          * io objects are allocated from here.
 
 133         wait_queue_head_t eventq;
 
 135         struct list_head uevent_list;
 
 136         spinlock_t uevent_lock; /* Protect access to uevent_list */
 
 139          * freeze/thaw support require holding onto a super block
 
 141         struct super_block *frozen_sb;
 
 142         struct block_device *suspended_bdev;
 
 144         /* forced geometry settings */
 
 145         struct hd_geometry geometry;
 
 149 static struct kmem_cache *_io_cache;
 
 150 static struct kmem_cache *_tio_cache;
 
 152 static int __init local_init(void)
 
 156         /* allocate a slab for the dm_ios */
 
 157         _io_cache = KMEM_CACHE(dm_io, 0);
 
 161         /* allocate a slab for the target ios */
 
 162         _tio_cache = KMEM_CACHE(dm_target_io, 0);
 
 164                 kmem_cache_destroy(_io_cache);
 
 168         r = dm_uevent_init();
 
 170                 kmem_cache_destroy(_tio_cache);
 
 171                 kmem_cache_destroy(_io_cache);
 
 176         r = register_blkdev(_major, _name);
 
 178                 kmem_cache_destroy(_tio_cache);
 
 179                 kmem_cache_destroy(_io_cache);
 
 190 static void local_exit(void)
 
 192         kmem_cache_destroy(_tio_cache);
 
 193         kmem_cache_destroy(_io_cache);
 
 194         unregister_blkdev(_major, _name);
 
 199         DMINFO("cleaned up");
 
 202 static int (*_inits[])(void) __initdata = {
 
 211 static void (*_exits[])(void) = {
 
 220 static int __init dm_init(void)
 
 222         const int count = ARRAY_SIZE(_inits);
 
 226         for (i = 0; i < count; i++) {
 
 241 static void __exit dm_exit(void)
 
 243         int i = ARRAY_SIZE(_exits);
 
 250  * Block device functions
 
 252 static int dm_blk_open(struct inode *inode, struct file *file)
 
 254         struct mapped_device *md;
 
 256         spin_lock(&_minor_lock);
 
 258         md = inode->i_bdev->bd_disk->private_data;
 
 262         if (test_bit(DMF_FREEING, &md->flags) ||
 
 263             test_bit(DMF_DELETING, &md->flags)) {
 
 269         atomic_inc(&md->open_count);
 
 272         spin_unlock(&_minor_lock);
 
 274         return md ? 0 : -ENXIO;
 
 277 static int dm_blk_close(struct inode *inode, struct file *file)
 
 279         struct mapped_device *md;
 
 281         md = inode->i_bdev->bd_disk->private_data;
 
 282         atomic_dec(&md->open_count);
 
 287 int dm_open_count(struct mapped_device *md)
 
 289         return atomic_read(&md->open_count);
 
 293  * Guarantees nothing is using the device before it's deleted.
 
 295 int dm_lock_for_deletion(struct mapped_device *md)
 
 299         spin_lock(&_minor_lock);
 
 301         if (dm_open_count(md))
 
 304                 set_bit(DMF_DELETING, &md->flags);
 
 306         spin_unlock(&_minor_lock);
 
 311 static int dm_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo)
 
 313         struct mapped_device *md = bdev->bd_disk->private_data;
 
 315         return dm_get_geometry(md, geo);
 
 318 static int dm_blk_ioctl(struct inode *inode, struct file *file,
 
 319                         unsigned int cmd, unsigned long arg)
 
 321         struct mapped_device *md;
 
 322         struct dm_table *map;
 
 323         struct dm_target *tgt;
 
 326         /* We don't really need this lock, but we do need 'inode'. */
 
 329         md = inode->i_bdev->bd_disk->private_data;
 
 331         map = dm_get_table(md);
 
 333         if (!map || !dm_table_get_size(map))
 
 336         /* We only support devices that have a single target */
 
 337         if (dm_table_get_num_targets(map) != 1)
 
 340         tgt = dm_table_get_target(map, 0);
 
 342         if (dm_suspended(md)) {
 
 347         if (tgt->type->ioctl)
 
 348                 r = tgt->type->ioctl(tgt, inode, file, cmd, arg);
 
 357 static struct dm_io *alloc_io(struct mapped_device *md)
 
 359         return mempool_alloc(md->io_pool, GFP_NOIO);
 
 362 static void free_io(struct mapped_device *md, struct dm_io *io)
 
 364         mempool_free(io, md->io_pool);
 
 367 static struct dm_target_io *alloc_tio(struct mapped_device *md)
 
 369         return mempool_alloc(md->tio_pool, GFP_NOIO);
 
 372 static void free_tio(struct mapped_device *md, struct dm_target_io *tio)
 
 374         mempool_free(tio, md->tio_pool);
 
 377 static void start_io_acct(struct dm_io *io)
 
 379         struct mapped_device *md = io->md;
 
 382         io->start_time = jiffies;
 
 384         cpu = part_stat_lock();
 
 385         part_round_stats(cpu, &dm_disk(md)->part0);
 
 387         dm_disk(md)->part0.in_flight = atomic_inc_return(&md->pending);
 
 390 static int end_io_acct(struct dm_io *io)
 
 392         struct mapped_device *md = io->md;
 
 393         struct bio *bio = io->bio;
 
 394         unsigned long duration = jiffies - io->start_time;
 
 396         int rw = bio_data_dir(bio);
 
 398         cpu = part_stat_lock();
 
 399         part_round_stats(cpu, &dm_disk(md)->part0);
 
 400         part_stat_add(cpu, &dm_disk(md)->part0, ticks[rw], duration);
 
 403         dm_disk(md)->part0.in_flight = pending =
 
 404                 atomic_dec_return(&md->pending);
 
 410  * Add the bio to the list of deferred io.
 
 412 static int queue_io(struct mapped_device *md, struct bio *bio)
 
 414         down_write(&md->io_lock);
 
 416         if (!test_bit(DMF_BLOCK_IO, &md->flags)) {
 
 417                 up_write(&md->io_lock);
 
 421         bio_list_add(&md->deferred, bio);
 
 423         up_write(&md->io_lock);
 
 424         return 0;               /* deferred successfully */
 
 428  * Everyone (including functions in this file), should use this
 
 429  * function to access the md->map field, and make sure they call
 
 430  * dm_table_put() when finished.
 
 432 struct dm_table *dm_get_table(struct mapped_device *md)
 
 436         read_lock(&md->map_lock);
 
 440         read_unlock(&md->map_lock);
 
 446  * Get the geometry associated with a dm device
 
 448 int dm_get_geometry(struct mapped_device *md, struct hd_geometry *geo)
 
 456  * Set the geometry of a device.
 
 458 int dm_set_geometry(struct mapped_device *md, struct hd_geometry *geo)
 
 460         sector_t sz = (sector_t)geo->cylinders * geo->heads * geo->sectors;
 
 462         if (geo->start > sz) {
 
 463                 DMWARN("Start sector is beyond the geometry limits.");
 
 472 /*-----------------------------------------------------------------
 
 474  *   A more elegant soln is in the works that uses the queue
 
 475  *   merge fn, unfortunately there are a couple of changes to
 
 476  *   the block layer that I want to make for this.  So in the
 
 477  *   interests of getting something for people to use I give
 
 478  *   you this clearly demarcated crap.
 
 479  *---------------------------------------------------------------*/
 
 481 static int __noflush_suspending(struct mapped_device *md)
 
 483         return test_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
 
 487  * Decrements the number of outstanding ios that a bio has been
 
 488  * cloned into, completing the original io if necc.
 
 490 static void dec_pending(struct dm_io *io, int error)
 
 494         /* Push-back supersedes any I/O errors */
 
 495         if (error && !(io->error > 0 && __noflush_suspending(io->md)))
 
 498         if (atomic_dec_and_test(&io->io_count)) {
 
 499                 if (io->error == DM_ENDIO_REQUEUE) {
 
 501                          * Target requested pushing back the I/O.
 
 502                          * This must be handled before the sleeper on
 
 503                          * suspend queue merges the pushback list.
 
 505                         spin_lock_irqsave(&io->md->pushback_lock, flags);
 
 506                         if (__noflush_suspending(io->md))
 
 507                                 bio_list_add(&io->md->pushback, io->bio);
 
 509                                 /* noflush suspend was interrupted. */
 
 511                         spin_unlock_irqrestore(&io->md->pushback_lock, flags);
 
 515                         /* nudge anyone waiting on suspend queue */
 
 516                         wake_up(&io->md->wait);
 
 518                 if (io->error != DM_ENDIO_REQUEUE) {
 
 519                         blk_add_trace_bio(io->md->queue, io->bio,
 
 522                         bio_endio(io->bio, io->error);
 
 529 static void clone_endio(struct bio *bio, int error)
 
 532         struct dm_target_io *tio = bio->bi_private;
 
 533         struct mapped_device *md = tio->io->md;
 
 534         dm_endio_fn endio = tio->ti->type->end_io;
 
 536         if (!bio_flagged(bio, BIO_UPTODATE) && !error)
 
 540                 r = endio(tio->ti, bio, error, &tio->info);
 
 541                 if (r < 0 || r == DM_ENDIO_REQUEUE)
 
 543                          * error and requeue request are handled
 
 547                 else if (r == DM_ENDIO_INCOMPLETE)
 
 548                         /* The target will handle the io */
 
 551                         DMWARN("unimplemented target endio return value: %d", r);
 
 556         dec_pending(tio->io, error);
 
 559          * Store md for cleanup instead of tio which is about to get freed.
 
 561         bio->bi_private = md->bs;
 
 567 static sector_t max_io_len(struct mapped_device *md,
 
 568                            sector_t sector, struct dm_target *ti)
 
 570         sector_t offset = sector - ti->begin;
 
 571         sector_t len = ti->len - offset;
 
 574          * Does the target need to split even further ?
 
 578                 boundary = ((offset + ti->split_io) & ~(ti->split_io - 1))
 
 587 static void __map_bio(struct dm_target *ti, struct bio *clone,
 
 588                       struct dm_target_io *tio)
 
 592         struct mapped_device *md;
 
 597         BUG_ON(!clone->bi_size);
 
 599         clone->bi_end_io = clone_endio;
 
 600         clone->bi_private = tio;
 
 603          * Map the clone.  If r == 0 we don't need to do
 
 604          * anything, the target has assumed ownership of
 
 607         atomic_inc(&tio->io->io_count);
 
 608         sector = clone->bi_sector;
 
 609         r = ti->type->map(ti, clone, &tio->info);
 
 610         if (r == DM_MAPIO_REMAPPED) {
 
 611                 /* the bio has been remapped so dispatch it */
 
 613                 blk_add_trace_remap(bdev_get_queue(clone->bi_bdev), clone,
 
 614                                     tio->io->bio->bi_bdev->bd_dev,
 
 615                                     clone->bi_sector, sector);
 
 617                 generic_make_request(clone);
 
 618         } else if (r < 0 || r == DM_MAPIO_REQUEUE) {
 
 619                 /* error the io and bail out, or requeue it if needed */
 
 621                 dec_pending(tio->io, r);
 
 623                  * Store bio_set for cleanup.
 
 625                 clone->bi_private = md->bs;
 
 629                 DMWARN("unimplemented target map return value: %d", r);
 
 635         struct mapped_device *md;
 
 636         struct dm_table *map;
 
 640         sector_t sector_count;
 
 644 static void dm_bio_destructor(struct bio *bio)
 
 646         struct bio_set *bs = bio->bi_private;
 
 652  * Creates a little bio that is just does part of a bvec.
 
 654 static struct bio *split_bvec(struct bio *bio, sector_t sector,
 
 655                               unsigned short idx, unsigned int offset,
 
 656                               unsigned int len, struct bio_set *bs)
 
 659         struct bio_vec *bv = bio->bi_io_vec + idx;
 
 661         clone = bio_alloc_bioset(GFP_NOIO, 1, bs);
 
 662         clone->bi_destructor = dm_bio_destructor;
 
 663         *clone->bi_io_vec = *bv;
 
 665         clone->bi_sector = sector;
 
 666         clone->bi_bdev = bio->bi_bdev;
 
 667         clone->bi_rw = bio->bi_rw;
 
 669         clone->bi_size = to_bytes(len);
 
 670         clone->bi_io_vec->bv_offset = offset;
 
 671         clone->bi_io_vec->bv_len = clone->bi_size;
 
 677  * Creates a bio that consists of range of complete bvecs.
 
 679 static struct bio *clone_bio(struct bio *bio, sector_t sector,
 
 680                              unsigned short idx, unsigned short bv_count,
 
 681                              unsigned int len, struct bio_set *bs)
 
 685         clone = bio_alloc_bioset(GFP_NOIO, bio->bi_max_vecs, bs);
 
 686         __bio_clone(clone, bio);
 
 687         clone->bi_destructor = dm_bio_destructor;
 
 688         clone->bi_sector = sector;
 
 690         clone->bi_vcnt = idx + bv_count;
 
 691         clone->bi_size = to_bytes(len);
 
 692         clone->bi_flags &= ~(1 << BIO_SEG_VALID);
 
 697 static int __clone_and_map(struct clone_info *ci)
 
 699         struct bio *clone, *bio = ci->bio;
 
 700         struct dm_target *ti;
 
 701         sector_t len = 0, max;
 
 702         struct dm_target_io *tio;
 
 704         ti = dm_table_find_target(ci->map, ci->sector);
 
 705         if (!dm_target_is_valid(ti))
 
 708         max = max_io_len(ci->md, ci->sector, ti);
 
 711          * Allocate a target io object.
 
 713         tio = alloc_tio(ci->md);
 
 716         memset(&tio->info, 0, sizeof(tio->info));
 
 718         if (ci->sector_count <= max) {
 
 720                  * Optimise for the simple case where we can do all of
 
 721                  * the remaining io with a single clone.
 
 723                 clone = clone_bio(bio, ci->sector, ci->idx,
 
 724                                   bio->bi_vcnt - ci->idx, ci->sector_count,
 
 726                 __map_bio(ti, clone, tio);
 
 727                 ci->sector_count = 0;
 
 729         } else if (to_sector(bio->bi_io_vec[ci->idx].bv_len) <= max) {
 
 731                  * There are some bvecs that don't span targets.
 
 732                  * Do as many of these as possible.
 
 735                 sector_t remaining = max;
 
 738                 for (i = ci->idx; remaining && (i < bio->bi_vcnt); i++) {
 
 739                         bv_len = to_sector(bio->bi_io_vec[i].bv_len);
 
 741                         if (bv_len > remaining)
 
 748                 clone = clone_bio(bio, ci->sector, ci->idx, i - ci->idx, len,
 
 750                 __map_bio(ti, clone, tio);
 
 753                 ci->sector_count -= len;
 
 758                  * Handle a bvec that must be split between two or more targets.
 
 760                 struct bio_vec *bv = bio->bi_io_vec + ci->idx;
 
 761                 sector_t remaining = to_sector(bv->bv_len);
 
 762                 unsigned int offset = 0;
 
 766                                 ti = dm_table_find_target(ci->map, ci->sector);
 
 767                                 if (!dm_target_is_valid(ti))
 
 770                                 max = max_io_len(ci->md, ci->sector, ti);
 
 772                                 tio = alloc_tio(ci->md);
 
 775                                 memset(&tio->info, 0, sizeof(tio->info));
 
 778                         len = min(remaining, max);
 
 780                         clone = split_bvec(bio, ci->sector, ci->idx,
 
 781                                            bv->bv_offset + offset, len,
 
 784                         __map_bio(ti, clone, tio);
 
 787                         ci->sector_count -= len;
 
 788                         offset += to_bytes(len);
 
 789                 } while (remaining -= len);
 
 798  * Split the bio into several clones.
 
 800 static int __split_bio(struct mapped_device *md, struct bio *bio)
 
 802         struct clone_info ci;
 
 805         ci.map = dm_get_table(md);
 
 806         if (unlikely(!ci.map))
 
 811         ci.io = alloc_io(md);
 
 813         atomic_set(&ci.io->io_count, 1);
 
 816         ci.sector = bio->bi_sector;
 
 817         ci.sector_count = bio_sectors(bio);
 
 818         ci.idx = bio->bi_idx;
 
 820         start_io_acct(ci.io);
 
 821         while (ci.sector_count && !error)
 
 822                 error = __clone_and_map(&ci);
 
 824         /* drop the extra reference count */
 
 825         dec_pending(ci.io, error);
 
 826         dm_table_put(ci.map);
 
 830 /*-----------------------------------------------------------------
 
 832  *---------------------------------------------------------------*/
 
 834 static int dm_merge_bvec(struct request_queue *q,
 
 835                          struct bvec_merge_data *bvm,
 
 836                          struct bio_vec *biovec)
 
 838         struct mapped_device *md = q->queuedata;
 
 839         struct dm_table *map = dm_get_table(md);
 
 840         struct dm_target *ti;
 
 841         sector_t max_sectors;
 
 847         ti = dm_table_find_target(map, bvm->bi_sector);
 
 848         if (!dm_target_is_valid(ti))
 
 852          * Find maximum amount of I/O that won't need splitting
 
 854         max_sectors = min(max_io_len(md, bvm->bi_sector, ti),
 
 855                           (sector_t) BIO_MAX_SECTORS);
 
 856         max_size = (max_sectors << SECTOR_SHIFT) - bvm->bi_size;
 
 861          * merge_bvec_fn() returns number of bytes
 
 862          * it can accept at this offset
 
 863          * max is precomputed maximal io size
 
 865         if (max_size && ti->type->merge)
 
 866                 max_size = ti->type->merge(ti, bvm, biovec, max_size);
 
 873          * Always allow an entire first page
 
 875         if (max_size <= biovec->bv_len && !(bvm->bi_size >> SECTOR_SHIFT))
 
 876                 max_size = biovec->bv_len;
 
 882  * The request function that just remaps the bio built up by
 
 885 static int dm_request(struct request_queue *q, struct bio *bio)
 
 888         int rw = bio_data_dir(bio);
 
 889         struct mapped_device *md = q->queuedata;
 
 893          * There is no use in forwarding any barrier request since we can't
 
 894          * guarantee it is (or can be) handled by the targets correctly.
 
 896         if (unlikely(bio_barrier(bio))) {
 
 897                 bio_endio(bio, -EOPNOTSUPP);
 
 901         down_read(&md->io_lock);
 
 903         cpu = part_stat_lock();
 
 904         part_stat_inc(cpu, &dm_disk(md)->part0, ios[rw]);
 
 905         part_stat_add(cpu, &dm_disk(md)->part0, sectors[rw], bio_sectors(bio));
 
 909          * If we're suspended we have to queue
 
 912         while (test_bit(DMF_BLOCK_IO, &md->flags)) {
 
 913                 up_read(&md->io_lock);
 
 915                 if (bio_rw(bio) != READA)
 
 916                         r = queue_io(md, bio);
 
 922                  * We're in a while loop, because someone could suspend
 
 923                  * before we get to the following read lock.
 
 925                 down_read(&md->io_lock);
 
 928         r = __split_bio(md, bio);
 
 929         up_read(&md->io_lock);
 
 938 static void dm_unplug_all(struct request_queue *q)
 
 940         struct mapped_device *md = q->queuedata;
 
 941         struct dm_table *map = dm_get_table(md);
 
 944                 dm_table_unplug_all(map);
 
 949 static int dm_any_congested(void *congested_data, int bdi_bits)
 
 952         struct mapped_device *md = (struct mapped_device *) congested_data;
 
 953         struct dm_table *map = dm_get_table(md);
 
 955         if (!map || test_bit(DMF_BLOCK_IO, &md->flags))
 
 958                 r = dm_table_any_congested(map, bdi_bits);
 
 964 /*-----------------------------------------------------------------
 
 965  * An IDR is used to keep track of allocated minor numbers.
 
 966  *---------------------------------------------------------------*/
 
 967 static DEFINE_IDR(_minor_idr);
 
 969 static void free_minor(int minor)
 
 971         spin_lock(&_minor_lock);
 
 972         idr_remove(&_minor_idr, minor);
 
 973         spin_unlock(&_minor_lock);
 
 977  * See if the device with a specific minor # is free.
 
 979 static int specific_minor(int minor)
 
 983         if (minor >= (1 << MINORBITS))
 
 986         r = idr_pre_get(&_minor_idr, GFP_KERNEL);
 
 990         spin_lock(&_minor_lock);
 
 992         if (idr_find(&_minor_idr, minor)) {
 
 997         r = idr_get_new_above(&_minor_idr, MINOR_ALLOCED, minor, &m);
 
1002                 idr_remove(&_minor_idr, m);
 
1008         spin_unlock(&_minor_lock);
 
1012 static int next_free_minor(int *minor)
 
1016         r = idr_pre_get(&_minor_idr, GFP_KERNEL);
 
1020         spin_lock(&_minor_lock);
 
1022         r = idr_get_new(&_minor_idr, MINOR_ALLOCED, &m);
 
1026         if (m >= (1 << MINORBITS)) {
 
1027                 idr_remove(&_minor_idr, m);
 
1035         spin_unlock(&_minor_lock);
 
1039 static struct block_device_operations dm_blk_dops;
 
1042  * Allocate and initialise a blank device with a given minor.
 
1044 static struct mapped_device *alloc_dev(int minor)
 
1047         struct mapped_device *md = kzalloc(sizeof(*md), GFP_KERNEL);
 
1051                 DMWARN("unable to allocate device, out of memory.");
 
1055         if (!try_module_get(THIS_MODULE))
 
1056                 goto bad_module_get;
 
1058         /* get a minor number for the dev */
 
1059         if (minor == DM_ANY_MINOR)
 
1060                 r = next_free_minor(&minor);
 
1062                 r = specific_minor(minor);
 
1066         init_rwsem(&md->io_lock);
 
1067         mutex_init(&md->suspend_lock);
 
1068         spin_lock_init(&md->pushback_lock);
 
1069         rwlock_init(&md->map_lock);
 
1070         atomic_set(&md->holders, 1);
 
1071         atomic_set(&md->open_count, 0);
 
1072         atomic_set(&md->event_nr, 0);
 
1073         atomic_set(&md->uevent_seq, 0);
 
1074         INIT_LIST_HEAD(&md->uevent_list);
 
1075         spin_lock_init(&md->uevent_lock);
 
1077         md->queue = blk_alloc_queue(GFP_KERNEL);
 
1081         md->queue->queuedata = md;
 
1082         md->queue->backing_dev_info.congested_fn = dm_any_congested;
 
1083         md->queue->backing_dev_info.congested_data = md;
 
1084         blk_queue_make_request(md->queue, dm_request);
 
1085         blk_queue_bounce_limit(md->queue, BLK_BOUNCE_ANY);
 
1086         md->queue->unplug_fn = dm_unplug_all;
 
1087         blk_queue_merge_bvec(md->queue, dm_merge_bvec);
 
1089         md->io_pool = mempool_create_slab_pool(MIN_IOS, _io_cache);
 
1093         md->tio_pool = mempool_create_slab_pool(MIN_IOS, _tio_cache);
 
1097         md->bs = bioset_create(16, 16);
 
1101         md->disk = alloc_disk(1);
 
1105         atomic_set(&md->pending, 0);
 
1106         init_waitqueue_head(&md->wait);
 
1107         init_waitqueue_head(&md->eventq);
 
1109         md->disk->major = _major;
 
1110         md->disk->first_minor = minor;
 
1111         md->disk->fops = &dm_blk_dops;
 
1112         md->disk->queue = md->queue;
 
1113         md->disk->private_data = md;
 
1114         sprintf(md->disk->disk_name, "dm-%d", minor);
 
1116         format_dev_t(md->name, MKDEV(_major, minor));
 
1118         md->wq = create_singlethread_workqueue("kdmflush");
 
1122         /* Populate the mapping, nobody knows we exist yet */
 
1123         spin_lock(&_minor_lock);
 
1124         old_md = idr_replace(&_minor_idr, md, minor);
 
1125         spin_unlock(&_minor_lock);
 
1127         BUG_ON(old_md != MINOR_ALLOCED);
 
1134         bioset_free(md->bs);
 
1136         mempool_destroy(md->tio_pool);
 
1138         mempool_destroy(md->io_pool);
 
1140         blk_cleanup_queue(md->queue);
 
1144         module_put(THIS_MODULE);
 
1150 static void unlock_fs(struct mapped_device *md);
 
1152 static void free_dev(struct mapped_device *md)
 
1154         int minor = MINOR(disk_devt(md->disk));
 
1156         if (md->suspended_bdev) {
 
1158                 bdput(md->suspended_bdev);
 
1160         destroy_workqueue(md->wq);
 
1161         mempool_destroy(md->tio_pool);
 
1162         mempool_destroy(md->io_pool);
 
1163         bioset_free(md->bs);
 
1164         del_gendisk(md->disk);
 
1167         spin_lock(&_minor_lock);
 
1168         md->disk->private_data = NULL;
 
1169         spin_unlock(&_minor_lock);
 
1172         blk_cleanup_queue(md->queue);
 
1173         module_put(THIS_MODULE);
 
1178  * Bind a table to the device.
 
1180 static void event_callback(void *context)
 
1182         unsigned long flags;
 
1184         struct mapped_device *md = (struct mapped_device *) context;
 
1186         spin_lock_irqsave(&md->uevent_lock, flags);
 
1187         list_splice_init(&md->uevent_list, &uevents);
 
1188         spin_unlock_irqrestore(&md->uevent_lock, flags);
 
1190         dm_send_uevents(&uevents, &disk_to_dev(md->disk)->kobj);
 
1192         atomic_inc(&md->event_nr);
 
1193         wake_up(&md->eventq);
 
1196 static void __set_size(struct mapped_device *md, sector_t size)
 
1198         set_capacity(md->disk, size);
 
1200         mutex_lock(&md->suspended_bdev->bd_inode->i_mutex);
 
1201         i_size_write(md->suspended_bdev->bd_inode, (loff_t)size << SECTOR_SHIFT);
 
1202         mutex_unlock(&md->suspended_bdev->bd_inode->i_mutex);
 
1205 static int __bind(struct mapped_device *md, struct dm_table *t)
 
1207         struct request_queue *q = md->queue;
 
1210         size = dm_table_get_size(t);
 
1213          * Wipe any geometry if the size of the table changed.
 
1215         if (size != get_capacity(md->disk))
 
1216                 memset(&md->geometry, 0, sizeof(md->geometry));
 
1218         if (md->suspended_bdev)
 
1219                 __set_size(md, size);
 
1224         dm_table_event_callback(t, event_callback, md);
 
1226         write_lock(&md->map_lock);
 
1228         dm_table_set_restrictions(t, q);
 
1229         write_unlock(&md->map_lock);
 
1234 static void __unbind(struct mapped_device *md)
 
1236         struct dm_table *map = md->map;
 
1241         dm_table_event_callback(map, NULL, NULL);
 
1242         write_lock(&md->map_lock);
 
1244         write_unlock(&md->map_lock);
 
1249  * Constructor for a new device.
 
1251 int dm_create(int minor, struct mapped_device **result)
 
1253         struct mapped_device *md;
 
1255         md = alloc_dev(minor);
 
1263 static struct mapped_device *dm_find_md(dev_t dev)
 
1265         struct mapped_device *md;
 
1266         unsigned minor = MINOR(dev);
 
1268         if (MAJOR(dev) != _major || minor >= (1 << MINORBITS))
 
1271         spin_lock(&_minor_lock);
 
1273         md = idr_find(&_minor_idr, minor);
 
1274         if (md && (md == MINOR_ALLOCED ||
 
1275                    (MINOR(disk_devt(dm_disk(md))) != minor) ||
 
1276                    test_bit(DMF_FREEING, &md->flags))) {
 
1282         spin_unlock(&_minor_lock);
 
1287 struct mapped_device *dm_get_md(dev_t dev)
 
1289         struct mapped_device *md = dm_find_md(dev);
 
1297 void *dm_get_mdptr(struct mapped_device *md)
 
1299         return md->interface_ptr;
 
1302 void dm_set_mdptr(struct mapped_device *md, void *ptr)
 
1304         md->interface_ptr = ptr;
 
1307 void dm_get(struct mapped_device *md)
 
1309         atomic_inc(&md->holders);
 
1312 const char *dm_device_name(struct mapped_device *md)
 
1316 EXPORT_SYMBOL_GPL(dm_device_name);
 
1318 void dm_put(struct mapped_device *md)
 
1320         struct dm_table *map;
 
1322         BUG_ON(test_bit(DMF_FREEING, &md->flags));
 
1324         if (atomic_dec_and_lock(&md->holders, &_minor_lock)) {
 
1325                 map = dm_get_table(md);
 
1326                 idr_replace(&_minor_idr, MINOR_ALLOCED,
 
1327                             MINOR(disk_devt(dm_disk(md))));
 
1328                 set_bit(DMF_FREEING, &md->flags);
 
1329                 spin_unlock(&_minor_lock);
 
1330                 if (!dm_suspended(md)) {
 
1331                         dm_table_presuspend_targets(map);
 
1332                         dm_table_postsuspend_targets(map);
 
1339 EXPORT_SYMBOL_GPL(dm_put);
 
1341 static int dm_wait_for_completion(struct mapped_device *md)
 
1346                 set_current_state(TASK_INTERRUPTIBLE);
 
1349                 if (!atomic_read(&md->pending))
 
1352                 if (signal_pending(current)) {
 
1359         set_current_state(TASK_RUNNING);
 
1365  * Process the deferred bios
 
1367 static void __flush_deferred_io(struct mapped_device *md)
 
1371         while ((c = bio_list_pop(&md->deferred))) {
 
1372                 if (__split_bio(md, c))
 
1376         clear_bit(DMF_BLOCK_IO, &md->flags);
 
1379 static void __merge_pushback_list(struct mapped_device *md)
 
1381         unsigned long flags;
 
1383         spin_lock_irqsave(&md->pushback_lock, flags);
 
1384         clear_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
 
1385         bio_list_merge_head(&md->deferred, &md->pushback);
 
1386         bio_list_init(&md->pushback);
 
1387         spin_unlock_irqrestore(&md->pushback_lock, flags);
 
1390 static void dm_wq_work(struct work_struct *work)
 
1392         struct dm_wq_req *req = container_of(work, struct dm_wq_req, work);
 
1393         struct mapped_device *md = req->md;
 
1395         down_write(&md->io_lock);
 
1396         switch (req->type) {
 
1397         case DM_WQ_FLUSH_ALL:
 
1398                 __merge_pushback_list(md);
 
1400         case DM_WQ_FLUSH_DEFERRED:
 
1401                 __flush_deferred_io(md);
 
1404                 DMERR("dm_wq_work: unrecognised work type %d", req->type);
 
1407         up_write(&md->io_lock);
 
1410 static void dm_wq_queue(struct mapped_device *md, int type, void *context,
 
1411                         struct dm_wq_req *req)
 
1415         req->context = context;
 
1416         INIT_WORK(&req->work, dm_wq_work);
 
1417         queue_work(md->wq, &req->work);
 
1420 static void dm_queue_flush(struct mapped_device *md, int type, void *context)
 
1422         struct dm_wq_req req;
 
1424         dm_wq_queue(md, type, context, &req);
 
1425         flush_workqueue(md->wq);
 
1429  * Swap in a new table (destroying old one).
 
1431 int dm_swap_table(struct mapped_device *md, struct dm_table *table)
 
1435         mutex_lock(&md->suspend_lock);
 
1437         /* device must be suspended */
 
1438         if (!dm_suspended(md))
 
1441         /* without bdev, the device size cannot be changed */
 
1442         if (!md->suspended_bdev)
 
1443                 if (get_capacity(md->disk) != dm_table_get_size(table))
 
1447         r = __bind(md, table);
 
1450         mutex_unlock(&md->suspend_lock);
 
1455  * Functions to lock and unlock any filesystem running on the
 
1458 static int lock_fs(struct mapped_device *md)
 
1462         WARN_ON(md->frozen_sb);
 
1464         md->frozen_sb = freeze_bdev(md->suspended_bdev);
 
1465         if (IS_ERR(md->frozen_sb)) {
 
1466                 r = PTR_ERR(md->frozen_sb);
 
1467                 md->frozen_sb = NULL;
 
1471         set_bit(DMF_FROZEN, &md->flags);
 
1473         /* don't bdput right now, we don't want the bdev
 
1474          * to go away while it is locked.
 
1479 static void unlock_fs(struct mapped_device *md)
 
1481         if (!test_bit(DMF_FROZEN, &md->flags))
 
1484         thaw_bdev(md->suspended_bdev, md->frozen_sb);
 
1485         md->frozen_sb = NULL;
 
1486         clear_bit(DMF_FROZEN, &md->flags);
 
1490  * We need to be able to change a mapping table under a mounted
 
1491  * filesystem.  For example we might want to move some data in
 
1492  * the background.  Before the table can be swapped with
 
1493  * dm_bind_table, dm_suspend must be called to flush any in
 
1494  * flight bios and ensure that any further io gets deferred.
 
1496 int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
 
1498         struct dm_table *map = NULL;
 
1499         DECLARE_WAITQUEUE(wait, current);
 
1501         int do_lockfs = suspend_flags & DM_SUSPEND_LOCKFS_FLAG ? 1 : 0;
 
1502         int noflush = suspend_flags & DM_SUSPEND_NOFLUSH_FLAG ? 1 : 0;
 
1504         mutex_lock(&md->suspend_lock);
 
1506         if (dm_suspended(md)) {
 
1511         map = dm_get_table(md);
 
1514          * DMF_NOFLUSH_SUSPENDING must be set before presuspend.
 
1515          * This flag is cleared before dm_suspend returns.
 
1518                 set_bit(DMF_NOFLUSH_SUSPENDING, &md->flags);
 
1520         /* This does not get reverted if there's an error later. */
 
1521         dm_table_presuspend_targets(map);
 
1523         /* bdget() can stall if the pending I/Os are not flushed */
 
1525                 md->suspended_bdev = bdget_disk(md->disk, 0);
 
1526                 if (!md->suspended_bdev) {
 
1527                         DMWARN("bdget failed in dm_suspend");
 
1533                  * Flush I/O to the device. noflush supersedes do_lockfs,
 
1534                  * because lock_fs() needs to flush I/Os.
 
1544          * First we set the BLOCK_IO flag so no more ios will be mapped.
 
1546         down_write(&md->io_lock);
 
1547         set_bit(DMF_BLOCK_IO, &md->flags);
 
1549         add_wait_queue(&md->wait, &wait);
 
1550         up_write(&md->io_lock);
 
1554                 dm_table_unplug_all(map);
 
1557          * Wait for the already-mapped ios to complete.
 
1559         r = dm_wait_for_completion(md);
 
1561         down_write(&md->io_lock);
 
1562         remove_wait_queue(&md->wait, &wait);
 
1565                 __merge_pushback_list(md);
 
1566         up_write(&md->io_lock);
 
1568         /* were we interrupted ? */
 
1570                 dm_queue_flush(md, DM_WQ_FLUSH_DEFERRED, NULL);
 
1573                 goto out; /* pushback list is already flushed, so skip flush */
 
1576         dm_table_postsuspend_targets(map);
 
1578         set_bit(DMF_SUSPENDED, &md->flags);
 
1583                  * Because there may be already I/Os in the pushback list,
 
1584                  * flush them before return.
 
1586                 dm_queue_flush(md, DM_WQ_FLUSH_ALL, NULL);
 
1589         if (r && md->suspended_bdev) {
 
1590                 bdput(md->suspended_bdev);
 
1591                 md->suspended_bdev = NULL;
 
1597         mutex_unlock(&md->suspend_lock);
 
1601 int dm_resume(struct mapped_device *md)
 
1604         struct dm_table *map = NULL;
 
1606         mutex_lock(&md->suspend_lock);
 
1607         if (!dm_suspended(md))
 
1610         map = dm_get_table(md);
 
1611         if (!map || !dm_table_get_size(map))
 
1614         r = dm_table_resume_targets(map);
 
1618         dm_queue_flush(md, DM_WQ_FLUSH_DEFERRED, NULL);
 
1622         if (md->suspended_bdev) {
 
1623                 bdput(md->suspended_bdev);
 
1624                 md->suspended_bdev = NULL;
 
1627         clear_bit(DMF_SUSPENDED, &md->flags);
 
1629         dm_table_unplug_all(map);
 
1631         dm_kobject_uevent(md);
 
1637         mutex_unlock(&md->suspend_lock);
 
1642 /*-----------------------------------------------------------------
 
1643  * Event notification.
 
1644  *---------------------------------------------------------------*/
 
1645 void dm_kobject_uevent(struct mapped_device *md)
 
1647         kobject_uevent(&disk_to_dev(md->disk)->kobj, KOBJ_CHANGE);
 
1650 uint32_t dm_next_uevent_seq(struct mapped_device *md)
 
1652         return atomic_add_return(1, &md->uevent_seq);
 
1655 uint32_t dm_get_event_nr(struct mapped_device *md)
 
1657         return atomic_read(&md->event_nr);
 
1660 int dm_wait_event(struct mapped_device *md, int event_nr)
 
1662         return wait_event_interruptible(md->eventq,
 
1663                         (event_nr != atomic_read(&md->event_nr)));
 
1666 void dm_uevent_add(struct mapped_device *md, struct list_head *elist)
 
1668         unsigned long flags;
 
1670         spin_lock_irqsave(&md->uevent_lock, flags);
 
1671         list_add(elist, &md->uevent_list);
 
1672         spin_unlock_irqrestore(&md->uevent_lock, flags);
 
1676  * The gendisk is only valid as long as you have a reference
 
1679 struct gendisk *dm_disk(struct mapped_device *md)
 
1684 int dm_suspended(struct mapped_device *md)
 
1686         return test_bit(DMF_SUSPENDED, &md->flags);
 
1689 int dm_noflush_suspending(struct dm_target *ti)
 
1691         struct mapped_device *md = dm_table_get_md(ti->table);
 
1692         int r = __noflush_suspending(md);
 
1698 EXPORT_SYMBOL_GPL(dm_noflush_suspending);
 
1700 static struct block_device_operations dm_blk_dops = {
 
1701         .open = dm_blk_open,
 
1702         .release = dm_blk_close,
 
1703         .ioctl = dm_blk_ioctl,
 
1704         .getgeo = dm_blk_getgeo,
 
1705         .owner = THIS_MODULE
 
1708 EXPORT_SYMBOL(dm_get_mapinfo);
 
1713 module_init(dm_init);
 
1714 module_exit(dm_exit);
 
1716 module_param(major, uint, 0);
 
1717 MODULE_PARM_DESC(major, "The major number of the device mapper");
 
1718 MODULE_DESCRIPTION(DM_NAME " driver");
 
1719 MODULE_AUTHOR("Joe Thornber <dm-devel@redhat.com>");
 
1720 MODULE_LICENSE("GPL");