diff options
author | Milan Broz <mbroz@redhat.com> | 2007-12-13 14:43:05 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-02-08 12:01:08 -0800 |
commit | 7a22cdb2f5ca86983f433d26a3aa9449c0671a2d (patch) | |
tree | f8c5831ab987156d4708fc012f4c738aa0f548a6 /drivers | |
parent | 3fb754b906d44263625e8bbf4e53a694af181f0a (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.c | 7 |
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; |