diff options
author | Mikulas Patocka <mpatocka@redhat.com> | 2014-03-04 18:24:49 -0500 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2014-03-27 16:56:24 -0400 |
commit | bfc6d41cee53b2d02edc469fa459000a448a90ab (patch) | |
tree | 240bde16ddcfcf33fc3cda54a9228641e1fe42b0 /drivers/md | |
parent | d70ab4fb723cf7acfa656cb2ad1e75be7ed94bef (diff) |
dm: stop using bi_private
Device mapper uses the bio structure's bi_private field as a pointer
to dm_target_io or dm_rq_clone_bio_info. But a bio structure is
embedded in the dm_target_io and dm_rq_clone_bio_info structures, so the
pointer to the structure that contains the bio can be found with the
container_of() macro.
Remove the use of bi_private and use container_of() instead.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index ef5750d21235..0d52f6ff2a1e 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c | |||
@@ -753,7 +753,7 @@ static void dec_pending(struct dm_io *io, int error) | |||
753 | static void clone_endio(struct bio *bio, int error) | 753 | static void clone_endio(struct bio *bio, int error) |
754 | { | 754 | { |
755 | int r = 0; | 755 | int r = 0; |
756 | struct dm_target_io *tio = bio->bi_private; | 756 | struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone); |
757 | struct dm_io *io = tio->io; | 757 | struct dm_io *io = tio->io; |
758 | struct mapped_device *md = tio->io->md; | 758 | struct mapped_device *md = tio->io->md; |
759 | dm_endio_fn endio = tio->ti->type->end_io; | 759 | dm_endio_fn endio = tio->ti->type->end_io; |
@@ -787,7 +787,8 @@ static void clone_endio(struct bio *bio, int error) | |||
787 | */ | 787 | */ |
788 | static void end_clone_bio(struct bio *clone, int error) | 788 | static void end_clone_bio(struct bio *clone, int error) |
789 | { | 789 | { |
790 | struct dm_rq_clone_bio_info *info = clone->bi_private; | 790 | struct dm_rq_clone_bio_info *info = |
791 | container_of(clone, struct dm_rq_clone_bio_info, clone); | ||
791 | struct dm_rq_target_io *tio = info->tio; | 792 | struct dm_rq_target_io *tio = info->tio; |
792 | struct bio *bio = info->orig; | 793 | struct bio *bio = info->orig; |
793 | unsigned int nr_bytes = info->orig->bi_iter.bi_size; | 794 | unsigned int nr_bytes = info->orig->bi_iter.bi_size; |
@@ -1113,7 +1114,6 @@ static void __map_bio(struct dm_target_io *tio) | |||
1113 | struct dm_target *ti = tio->ti; | 1114 | struct dm_target *ti = tio->ti; |
1114 | 1115 | ||
1115 | clone->bi_end_io = clone_endio; | 1116 | clone->bi_end_io = clone_endio; |
1116 | clone->bi_private = tio; | ||
1117 | 1117 | ||
1118 | /* | 1118 | /* |
1119 | * Map the clone. If r == 0 we don't need to do | 1119 | * Map the clone. If r == 0 we don't need to do |
@@ -1522,7 +1522,6 @@ static int dm_rq_bio_constructor(struct bio *bio, struct bio *bio_orig, | |||
1522 | info->orig = bio_orig; | 1522 | info->orig = bio_orig; |
1523 | info->tio = tio; | 1523 | info->tio = tio; |
1524 | bio->bi_end_io = end_clone_bio; | 1524 | bio->bi_end_io = end_clone_bio; |
1525 | bio->bi_private = info; | ||
1526 | 1525 | ||
1527 | return 0; | 1526 | return 0; |
1528 | } | 1527 | } |