Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[cascardo/linux.git] / drivers / md / dm.c
index 8c53b09..455e649 100644 (file)
@@ -94,13 +94,6 @@ struct dm_rq_clone_bio_info {
        struct bio clone;
 };
 
-union map_info *dm_get_mapinfo(struct bio *bio)
-{
-       if (bio && bio->bi_private)
-               return &((struct dm_target_io *)bio->bi_private)->info;
-       return NULL;
-}
-
 union map_info *dm_get_rq_mapinfo(struct request *rq)
 {
        if (rq && rq->end_io_data)
@@ -475,6 +468,11 @@ sector_t dm_get_size(struct mapped_device *md)
        return get_capacity(md->disk);
 }
 
+struct request_queue *dm_get_md_queue(struct mapped_device *md)
+{
+       return md->queue;
+}
+
 struct dm_stats *dm_get_stats(struct mapped_device *md)
 {
        return &md->stats;
@@ -760,7 +758,7 @@ static void dec_pending(struct dm_io *io, int error)
 static void clone_endio(struct bio *bio, int error)
 {
        int r = 0;
-       struct dm_target_io *tio = bio->bi_private;
+       struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone);
        struct dm_io *io = tio->io;
        struct mapped_device *md = tio->io->md;
        dm_endio_fn endio = tio->ti->type->end_io;
@@ -794,7 +792,8 @@ static void clone_endio(struct bio *bio, int error)
  */
 static void end_clone_bio(struct bio *clone, int error)
 {
-       struct dm_rq_clone_bio_info *info = clone->bi_private;
+       struct dm_rq_clone_bio_info *info =
+               container_of(clone, struct dm_rq_clone_bio_info, clone);
        struct dm_rq_target_io *tio = info->tio;
        struct bio *bio = info->orig;
        unsigned int nr_bytes = info->orig->bi_iter.bi_size;
@@ -1120,7 +1119,6 @@ static void __map_bio(struct dm_target_io *tio)
        struct dm_target *ti = tio->ti;
 
        clone->bi_end_io = clone_endio;
-       clone->bi_private = tio;
 
        /*
         * Map the clone.  If r == 0 we don't need to do
@@ -1195,7 +1193,6 @@ static struct dm_target_io *alloc_tio(struct clone_info *ci,
 
        tio->io = ci->io;
        tio->ti = ti;
-       memset(&tio->info, 0, sizeof(tio->info));
        tio->target_bio_nr = target_bio_nr;
 
        return tio;
@@ -1530,7 +1527,6 @@ static int dm_rq_bio_constructor(struct bio *bio, struct bio *bio_orig,
        info->orig = bio_orig;
        info->tio = tio;
        bio->bi_end_io = end_clone_bio;
-       bio->bi_private = info;
 
        return 0;
 }
@@ -2172,7 +2168,7 @@ static struct dm_table *__unbind(struct mapped_device *md)
                return NULL;
 
        dm_table_event_callback(map, NULL, NULL);
-       rcu_assign_pointer(md->map, NULL);
+       RCU_INIT_POINTER(md->map, NULL);
        dm_sync_table(md);
 
        return map;
@@ -2873,8 +2869,6 @@ static const struct block_device_operations dm_blk_dops = {
        .owner = THIS_MODULE
 };
 
-EXPORT_SYMBOL(dm_get_mapinfo);
-
 /*
  * module hooks
  */