dm.c (5af8c4e0fac9838428bd718040b664043a05f37c) dm.c (9c47008d13add50ec4597a8b9eee200c515282c8)
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"

--- 686 unchanged lines hidden (view full) ---

695 clone->bi_bdev = bio->bi_bdev;
696 clone->bi_rw = bio->bi_rw;
697 clone->bi_vcnt = 1;
698 clone->bi_size = to_bytes(len);
699 clone->bi_io_vec->bv_offset = offset;
700 clone->bi_io_vec->bv_len = clone->bi_size;
701 clone->bi_flags |= 1 << BIO_CLONED;
702
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"

--- 686 unchanged lines hidden (view full) ---

695 clone->bi_bdev = bio->bi_bdev;
696 clone->bi_rw = bio->bi_rw;
697 clone->bi_vcnt = 1;
698 clone->bi_size = to_bytes(len);
699 clone->bi_io_vec->bv_offset = offset;
700 clone->bi_io_vec->bv_len = clone->bi_size;
701 clone->bi_flags |= 1 << BIO_CLONED;
702
703 if (bio_integrity(bio)) {
704 bio_integrity_clone(clone, bio, GFP_NOIO);
705 bio_integrity_trim(clone,
706 bio_sector_offset(bio, idx, offset), len);
707 }
708
703 return clone;
704}
705
706/*
707 * Creates a bio that consists of range of complete bvecs.
708 */
709static struct bio *clone_bio(struct bio *bio, sector_t sector,
710 unsigned short idx, unsigned short bv_count,

--- 5 unchanged lines hidden (view full) ---

716 __bio_clone(clone, bio);
717 clone->bi_destructor = dm_bio_destructor;
718 clone->bi_sector = sector;
719 clone->bi_idx = idx;
720 clone->bi_vcnt = idx + bv_count;
721 clone->bi_size = to_bytes(len);
722 clone->bi_flags &= ~(1 << BIO_SEG_VALID);
723
709 return clone;
710}
711
712/*
713 * Creates a bio that consists of range of complete bvecs.
714 */
715static struct bio *clone_bio(struct bio *bio, sector_t sector,
716 unsigned short idx, unsigned short bv_count,

--- 5 unchanged lines hidden (view full) ---

722 __bio_clone(clone, bio);
723 clone->bi_destructor = dm_bio_destructor;
724 clone->bi_sector = sector;
725 clone->bi_idx = idx;
726 clone->bi_vcnt = idx + bv_count;
727 clone->bi_size = to_bytes(len);
728 clone->bi_flags &= ~(1 << BIO_SEG_VALID);
729
730 if (bio_integrity(bio)) {
731 bio_integrity_clone(clone, bio, GFP_NOIO);
732
733 if (idx != bio->bi_idx || clone->bi_size < bio->bi_size)
734 bio_integrity_trim(clone,
735 bio_sector_offset(bio, idx, 0), len);
736 }
737
724 return clone;
725}
726
727static int __clone_and_map(struct clone_info *ci)
728{
729 struct bio *clone, *bio = ci->bio;
730 struct dm_target *ti;
731 sector_t len = 0, max;

--- 456 unchanged lines hidden (view full) ---

1188 if (md->suspended_bdev) {
1189 unlock_fs(md);
1190 bdput(md->suspended_bdev);
1191 }
1192 destroy_workqueue(md->wq);
1193 mempool_destroy(md->tio_pool);
1194 mempool_destroy(md->io_pool);
1195 bioset_free(md->bs);
738 return clone;
739}
740
741static int __clone_and_map(struct clone_info *ci)
742{
743 struct bio *clone, *bio = ci->bio;
744 struct dm_target *ti;
745 sector_t len = 0, max;

--- 456 unchanged lines hidden (view full) ---

1202 if (md->suspended_bdev) {
1203 unlock_fs(md);
1204 bdput(md->suspended_bdev);
1205 }
1206 destroy_workqueue(md->wq);
1207 mempool_destroy(md->tio_pool);
1208 mempool_destroy(md->io_pool);
1209 bioset_free(md->bs);
1210 blk_integrity_unregister(md->disk);
1196 del_gendisk(md->disk);
1197 free_minor(minor);
1198
1199 spin_lock(&_minor_lock);
1200 md->disk->private_data = NULL;
1201 spin_unlock(&_minor_lock);
1202
1203 put_disk(md->disk);

--- 536 unchanged lines hidden ---
1211 del_gendisk(md->disk);
1212 free_minor(minor);
1213
1214 spin_lock(&_minor_lock);
1215 md->disk->private_data = NULL;
1216 spin_unlock(&_minor_lock);
1217
1218 put_disk(md->disk);

--- 536 unchanged lines hidden ---