Merge branch 'release-2.6.27' of git://git.kernel.org/pub/scm/linux/kernel/git/ak...
[pandora-kernel.git] / drivers / md / dm-crypt.c
index ab6a61d..1395643 100644 (file)
@@ -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)