diff options
author | Milan Broz <mbroz@redhat.com> | 2008-02-08 02:10:46 +0000 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2008-02-08 02:10:46 +0000 |
commit | ee7a491e62214bfd56c97c1fef3672c09e2a700d (patch) | |
tree | b17672c2216a93ec875da4b332b9c0d6e0348b82 /drivers/md | |
parent | 5742fd77757894ebb5e441afbdac1fb666e782f7 (diff) |
dm crypt: tidy crypt_endio
Simplify crypt_endio function.
Signed-off-by: Milan Broz <mbroz@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-crypt.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index cc189a2bc53..278659975d7 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c @@ -504,7 +504,7 @@ static void crypt_endio(struct bio *clone, int error) { struct dm_crypt_io *io = clone->bi_private; struct crypt_config *cc = io->target->private; - unsigned read_io = bio_data_dir(clone) == READ; + unsigned rw = bio_data_dir(clone); if (unlikely(!bio_flagged(clone, BIO_UPTODATE) && !error)) error = -EIO; @@ -512,20 +512,15 @@ static void crypt_endio(struct bio *clone, int error) /* * free the processed pages */ - if (!read_io) { + if (rw == WRITE) crypt_free_buffer_pages(cc, clone); - goto out; - } - - if (unlikely(error)) - goto out; bio_put(clone); - kcryptd_queue_crypt(io); - return; -out: - bio_put(clone); + if (rw == READ && !error) { + kcryptd_queue_crypt(io); + return; + } if (unlikely(error)) io->error = error; |