summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMilan Broz <mbroz@redhat.com>2007-12-13 14:43:05 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2008-02-08 12:01:08 -0800
commit7a22cdb2f5ca86983f433d26a3aa9449c0671a2d (patch)
treef8c5831ab987156d4708fc012f4c738aa0f548a6 /drivers
parent3fb754b906d44263625e8bbf4e53a694af181f0a (diff)
dm crypt: fix write endio
patch adfe47702c4726b3e045f9f83178def02833be4c in mainline. Fix BIO_UPTODATE test for write io. Signed-off-by: Milan Broz <mbroz@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/md/dm-crypt.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index bdc52d6922b7..b3fcee0fea5a 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -515,6 +515,9 @@ static int crypt_endio(struct bio *clone, unsigned int done, int error)
struct crypt_config *cc = io->target->private;
unsigned read_io = bio_data_dir(clone) == READ;
+ if (unlikely(!bio_flagged(clone, BIO_UPTODATE) && !error))
+ error = -EIO;
+
/*
* free the processed pages, even if
* it's only a partially completed write
@@ -529,10 +532,8 @@ static int crypt_endio(struct bio *clone, unsigned int done, int error)
if (!read_io)
goto out;
- if (unlikely(!bio_flagged(clone, BIO_UPTODATE))) {
- error = -EIO;
+ if (unlikely(error))
goto out;
- }
bio_put(clone);
io->post_process = 1;