From: Milan Broz Date: Thu, 13 Dec 2007 14:43:05 +0000 (+0000) Subject: dm crypt: fix write endio X-Git-Tag: v2.6.23.15~72 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a22cdb2f5ca86983f433d26a3aa9449c0671a2d;p=thirdparty%2Fkernel%2Fstable.git dm crypt: fix write endio patch adfe47702c4726b3e045f9f83178def02833be4c in mainline. Fix BIO_UPTODATE test for write io. Signed-off-by: Milan Broz Signed-off-by: Alasdair G Kergon Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index bdc52d6922b7d..b3fcee0fea5a3 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;