diff options
author | Milan Broz <mbroz@redhat.com> | 2008-02-08 02:10:59 +0000 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2008-02-08 02:10:59 +0000 |
commit | 84131db689ab86409315c15a3ea5daf732cb04e1 (patch) | |
tree | e7ba3d1c2b7ddb38ed14725aab699e07776627b0 /drivers/md/dm-crypt.c | |
parent | dec1cedf9d4eabe43f3c7d6af095eff40c139a89 (diff) | |
download | lwn-84131db689ab86409315c15a3ea5daf732cb04e1.tar.gz lwn-84131db689ab86409315c15a3ea5daf732cb04e1.zip |
dm crypt: introduce crypt_write_io_loop
Introduce crypt_write_io_loop().
Signed-off-by: Milan Broz <mbroz@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md/dm-crypt.c')
-rw-r--r-- | drivers/md/dm-crypt.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index 4df7d2f782d8..986283c5332f 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c @@ -595,17 +595,13 @@ static void kcryptd_crypt_write_io_submit(struct dm_crypt_io *io, int error) io->sector += bio_sectors(clone); } -static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) +static void kcryptd_crypt_write_convert_loop(struct dm_crypt_io *io) { struct crypt_config *cc = io->target->private; struct bio *clone; unsigned remaining = io->base_bio->bi_size; int r; - atomic_inc(&io->pending); - - crypt_convert_init(cc, &io->ctx, NULL, io->base_bio, io->sector); - /* * The allocated buffers can be smaller than the whole bio, * so repeat the whole process until all the data can be handled. @@ -645,6 +641,16 @@ static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) } } +static void kcryptd_crypt_write_convert(struct dm_crypt_io *io) +{ + struct crypt_config *cc = io->target->private; + + atomic_inc(&io->pending); + + crypt_convert_init(cc, &io->ctx, NULL, io->base_bio, io->sector); + kcryptd_crypt_write_convert_loop(io); +} + static void kcryptd_crypt_read_done(struct dm_crypt_io *io, int error) { if (unlikely(error < 0)) |