diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-21 19:30:10 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-21 19:30:10 +0200 |
commit | b7e6f62fe259187f2578d00960ef1b0e6ff6afd5 (patch) | |
tree | 796fd3c878a2f8d8d55ea1e52ef236742a48c3dd /drivers/md/dm-crypt.c | |
parent | Merge branch 'for-linus' of git://neil.brown.name/md (diff) | |
parent | dm crypt: add merge (diff) | |
download | linux-b7e6f62fe259187f2578d00960ef1b0e6ff6afd5.tar.xz linux-b7e6f62fe259187f2578d00960ef1b0e6ff6afd5.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm
* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:
dm crypt: add merge
dm table: remove merge_bvec sector restriction
dm: linear add merge
dm: introduce merge_bvec_fn
dm snapshot: use per device mempools
dm snapshot: fix race during exception creation
dm snapshot: track snapshot reads
dm mpath: fix test for reinstate_path
dm mpath: return parameter error
dm io: remove struct padding
dm log: make dm_dirty_log init and exit static
dm mpath: free path selector on invalid args
Diffstat (limited to 'drivers/md/dm-crypt.c')
-rw-r--r-- | drivers/md/dm-crypt.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index ab6a61db63ce..13956437bc81 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c @@ -1216,9 +1216,24 @@ error: return -EINVAL; } +static int crypt_merge(struct dm_target *ti, struct bvec_merge_data *bvm, + struct bio_vec *biovec, int max_size) +{ + struct crypt_config *cc = ti->private; + struct request_queue *q = bdev_get_queue(cc->dev->bdev); + + if (!q->merge_bvec_fn) + return max_size; + + bvm->bi_bdev = cc->dev->bdev; + bvm->bi_sector = cc->start + bvm->bi_sector - ti->begin; + + return min(max_size, q->merge_bvec_fn(q, bvm, biovec)); +} + static struct target_type crypt_target = { .name = "crypt", - .version= {1, 5, 0}, + .version= {1, 6, 0}, .module = THIS_MODULE, .ctr = crypt_ctr, .dtr = crypt_dtr, @@ -1228,6 +1243,7 @@ static struct target_type crypt_target = { .preresume = crypt_preresume, .resume = crypt_resume, .message = crypt_message, + .merge = crypt_merge, }; static int __init dm_crypt_init(void) |