diff options
author | Christopher Pascoe <pascoe@cvs.openbsd.org> | 2007-03-20 06:43:07 +0000 |
---|---|---|
committer | Christopher Pascoe <pascoe@cvs.openbsd.org> | 2007-03-20 06:43:07 +0000 |
commit | 8bc35427c85f9cb47dc71adb5000381458fcb44e (patch) | |
tree | 032bd9caf6661dedce1254a7412fb2a26381b09b | |
parent | 086c081ce27fb3ac2c00b0c859d2260dd689752e (diff) |
Calculate the residual and copy it back to the scsi_xfer, so that RW actually
works.
From dlg@
-rw-r--r-- | sys/dev/ata/atascsi.c | 3 | ||||
-rw-r--r-- | sys/dev/pci/ahci.c | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/ata/atascsi.c b/sys/dev/ata/atascsi.c index 19d9864fe8e..f30594ef693 100644 --- a/sys/dev/ata/atascsi.c +++ b/sys/dev/ata/atascsi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: atascsi.c,v 1.18 2007/03/20 06:41:38 pascoe Exp $ */ +/* $OpenBSD: atascsi.c,v 1.19 2007/03/20 06:43:06 pascoe Exp $ */ /* * Copyright (c) 2007 David Gwynne <dlg@openbsd.org> @@ -461,6 +461,7 @@ atascsi_disk_cmd_done(struct ata_xfer *xa) xa->state); } + xs->resid = xa->resid; ata_put_xfer(xa); xs->flags |= ITSDONE; diff --git a/sys/dev/pci/ahci.c b/sys/dev/pci/ahci.c index d440f544de6..0252a72157e 100644 --- a/sys/dev/pci/ahci.c +++ b/sys/dev/pci/ahci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ahci.c,v 1.80 2007/03/20 05:46:50 pascoe Exp $ */ +/* $OpenBSD: ahci.c,v 1.81 2007/03/20 06:43:06 pascoe Exp $ */ /* * Copyright (c) 2006 David Gwynne <dlg@openbsd.org> @@ -1267,6 +1267,8 @@ ahci_unload_prdt(struct ahci_ccb *ccb) BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(sc->sc_dmat, dmap); + + xa->resid = xa->datalen - letoh32(ccb->ccb_cmd_hdr->prdbc); } } |