summaryrefslogtreecommitdiffstats
path: root/sys/dev/aac
diff options
context:
space:
mode:
authorsbruno <sbruno@FreeBSD.org>2012-07-18 18:10:27 +0000
committersbruno <sbruno@FreeBSD.org>2012-07-18 18:10:27 +0000
commit58e28bb84cf11b37bc30d99e24c35d166a5fe23d (patch)
tree11de2147de4f87f3659cfaf4b0e03602825af161 /sys/dev/aac
parentc9ba4f7b25ec65c1aba9ca25cfd5978e43d00fba (diff)
downloadFreeBSD-src-58e28bb84cf11b37bc30d99e24c35d166a5fe23d.zip
FreeBSD-src-58e28bb84cf11b37bc30d99e24c35d166a5fe23d.tar.gz
On BIO_ERROR, set bio_resid to stop losing data in the error case.
Submitted by: Mark Johnston <markjdb@gmail.com> Reviewed by: scottl@freebsd.org MFC after: 2 weeks
Diffstat (limited to 'sys/dev/aac')
-rw-r--r--sys/dev/aac/aac_disk.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/aac/aac_disk.c b/sys/dev/aac/aac_disk.c
index e4042f7..f2f6636 100644
--- a/sys/dev/aac/aac_disk.c
+++ b/sys/dev/aac/aac_disk.c
@@ -334,8 +334,10 @@ aac_biodone(struct bio *bp)
{
fwprintf(NULL, HBA_FLAGS_DBG_FUNCTION_ENTRY_B, "");
- if (bp->bio_flags & BIO_ERROR)
+ if (bp->bio_flags & BIO_ERROR) {
+ bp->bio_resid = bp->bio_bcount;
disk_err(bp, "hard error", -1, 1);
+ }
biodone(bp);
}
OpenPOWER on IntegriCloud