diff options
| author | Scott Long <scottl@FreeBSD.org> | 2004-02-28 19:14:41 +0000 |
|---|---|---|
| committer | Scott Long <scottl@FreeBSD.org> | 2004-02-28 19:14:41 +0000 |
| commit | b234a120c867ff3291e66666644af78f7a894095 (patch) | |
| tree | 9838032cf77c78cc90c2abba229573c0ab89c327 /sys/dev/ips/ips_disk.c | |
| parent | 46a51869c20086348059fae18ac57492f2d061bf (diff) | |
Notes
Diffstat (limited to 'sys/dev/ips/ips_disk.c')
| -rw-r--r-- | sys/dev/ips/ips_disk.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/ips/ips_disk.c b/sys/dev/ips/ips_disk.c index f20a8f8f40c8..87b848e60dea 100644 --- a/sys/dev/ips/ips_disk.c +++ b/sys/dev/ips/ips_disk.c @@ -79,6 +79,9 @@ static int ipsd_close(struct disk *dp) /* ipsd_finish is called to clean up and return a completed IO request */ void ipsd_finish(struct bio *iobuf) { + ipsdisk_softc_t *dsc; + dsc = iobuf->bio_disk->d_drv1; + if (iobuf->bio_flags & BIO_ERROR) { ipsdisk_softc_t *dsc; dsc = iobuf->bio_disk->d_drv1; @@ -87,6 +90,7 @@ void ipsd_finish(struct bio *iobuf) iobuf->bio_resid = 0; biodone(iobuf); + ips_start_io_request(dsc->sc); } @@ -97,7 +101,10 @@ static void ipsd_strategy(struct bio *iobuf) dsc = iobuf->bio_disk->d_drv1; DEVICE_PRINTF(8,dsc->dev,"in strategy\n"); iobuf->bio_driver1 = (void *)(uintptr_t)dsc->sc->drives[dsc->disk_number].drivenum; - ips_start_io_request(dsc->sc, iobuf); + mtx_lock(&dsc->sc->queue_mtx); + bioq_disksort(&dsc->sc->queue, iobuf); + mtx_unlock(&dsc->sc->queue_mtx); + ips_start_io_request(dsc->sc); } static int ipsd_probe(device_t dev) @@ -161,4 +168,3 @@ static int ipsd_detach(device_t dev) disk_destroy(dsc->ipsd_disk); return 0; } - |
