diff options
author | Mike Snitzer <snitzer@redhat.com> | 2015-04-09 22:53:24 +0200 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2015-04-15 18:10:25 +0200 |
commit | 5977907937afa2b5584a874d44ba6c0f56aeaa9c (patch) | |
tree | 804a59300745efce20cacd1a79fbff035bf409ab /drivers/md/dm-crypt.c | |
parent | dm crypt: update URLs to new cryptsetup project page (diff) | |
download | linux-5977907937afa2b5584a874d44ba6c0f56aeaa9c.tar.xz linux-5977907937afa2b5584a874d44ba6c0f56aeaa9c.zip |
dm crypt: leverage immutable biovecs when decrypting on read
Commit 003b5c571 ("block: Convert drivers to immutable biovecs")
stopped short of changing dm-crypt to leverage the fact that the biovec
array of a bio will no longer be modified.
Switch to using bio_clone_fast() when cloning bios for decryption after
read.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-crypt.c')
-rw-r--r-- | drivers/md/dm-crypt.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index ea09d5464a9f..aa1238facbeb 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c @@ -1124,15 +1124,15 @@ static void clone_init(struct dm_crypt_io *io, struct bio *clone) static int kcryptd_io_read(struct dm_crypt_io *io, gfp_t gfp) { struct crypt_config *cc = io->cc; - struct bio *base_bio = io->base_bio; struct bio *clone; /* - * The block layer might modify the bvec array, so always - * copy the required bvecs because we need the original - * one in order to decrypt the whole bio data *afterwards*. + * We need the original biovec array in order to decrypt + * the whole bio data *afterwards* -- thanks to immutable + * biovecs we don't need to worry about the block layer + * modifying the biovec array; so leverage bio_clone_fast(). */ - clone = bio_clone_bioset(base_bio, gfp, cc->bs); + clone = bio_clone_fast(io->base_bio, gfp, cc->bs); if (!clone) return 1; |