--- drivers/md/dm-crypt.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) Index: linux-3.2-fast/drivers/md/dm-crypt.c =================================================================== --- linux-3.2-fast.orig/drivers/md/dm-crypt.c 2012-01-31 02:30:38.000000000 +0100 +++ linux-3.2-fast/drivers/md/dm-crypt.c 2012-01-31 02:30:39.000000000 +0100 @@ -1084,13 +1084,7 @@ static void kcryptd_io(struct work_struc { struct dm_crypt_io *io = container_of(work, struct dm_crypt_io, work); - if (bio_data_dir(io->base_bio) == READ) { - crypt_inc_pending(io); - if (kcryptd_io_read(io, GFP_NOIO)) - io->error = -ENOMEM; - crypt_dec_pending(io); - } else - kcryptd_io_write(io); + kcryptd_io_write(io); } static void kcryptd_queue_io(struct dm_crypt_io *io) @@ -1831,8 +1825,7 @@ static int crypt_map(struct dm_target *t io = crypt_io_alloc(ti, bio, dm_target_offset(ti, bio->bi_sector)); if (bio_data_dir(io->base_bio) == READ) { - if (kcryptd_io_read(io, GFP_NOWAIT)) - kcryptd_queue_io(io); + kcryptd_io_read(io, GFP_NOIO); } else { kcryptd_crypt_write_convert(io); }