diff options
| author | Scott Long <scottl@FreeBSD.org> | 2020-02-07 09:22:08 +0000 |
|---|---|---|
| committer | Scott Long <scottl@FreeBSD.org> | 2020-02-07 09:22:08 +0000 |
| commit | d176b8039e91164cd25271ff6191a4fb1a03fe97 (patch) | |
| tree | d1382f2fb54cb240d3aeda803ae80070bf8ecf13 /sys/dev/altera | |
| parent | a2abae8dc92a5778b3405cfbc1f20eaf7a067074 (diff) | |
Notes
Diffstat (limited to 'sys/dev/altera')
| -rw-r--r-- | sys/dev/altera/avgen/altera_avgen.c | 10 | ||||
| -rw-r--r-- | sys/dev/altera/sdcard/altera_sdcard_io.c | 22 |
2 files changed, 17 insertions, 15 deletions
diff --git a/sys/dev/altera/avgen/altera_avgen.c b/sys/dev/altera/avgen/altera_avgen.c index 86f45ea42f4a..d7dd7d29b1e0 100644 --- a/sys/dev/altera/avgen/altera_avgen.c +++ b/sys/dev/altera/avgen/altera_avgen.c @@ -252,11 +252,13 @@ altera_avgen_disk_strategy(struct bio *bp) void *data; long bcount; daddr_t pblkno; + int error; sc = bp->bio_disk->d_drv1; data = bp->bio_data; bcount = bp->bio_bcount; pblkno = bp->bio_pblkno; + error = 0; /* * Serialize block reads / writes. @@ -265,7 +267,7 @@ altera_avgen_disk_strategy(struct bio *bp) switch (bp->bio_cmd) { case BIO_READ: if (!(sc->avg_flags & ALTERA_AVALON_FLAG_GEOM_READ)) { - biofinish(bp, NULL, EIO); + error = EROFS; break; } switch (sc->avg_width) { @@ -324,11 +326,11 @@ altera_avgen_disk_strategy(struct bio *bp) break; default: - panic("%s: unsupported I/O operation %d", __func__, - bp->bio_cmd); + error = EOPNOTSUPP; + break; } mtx_unlock(&sc->avg_disk_mtx); - biofinish(bp, NULL, 0); + biofinish(bp, NULL, error); } static int diff --git a/sys/dev/altera/sdcard/altera_sdcard_io.c b/sys/dev/altera/sdcard/altera_sdcard_io.c index dc1b615bd60a..546e0af2b907 100644 --- a/sys/dev/altera/sdcard/altera_sdcard_io.c +++ b/sys/dev/altera/sdcard/altera_sdcard_io.c @@ -293,27 +293,27 @@ recheck: } static void -altera_sdcard_io_start_internal(struct altera_sdcard_softc *sc, struct bio *bp) +altera_sdcard_io_start_internal(struct altera_sdcard_softc *sc, struct bio **bp) { - switch (bp->bio_cmd) { + switch (*bp->bio_cmd) { case BIO_READ: - altera_sdcard_write_cmd_arg(sc, bp->bio_pblkno * + altera_sdcard_write_cmd_arg(sc, *bp->bio_pblkno * ALTERA_SDCARD_SECTORSIZE); altera_sdcard_write_cmd(sc, ALTERA_SDCARD_CMD_READ_BLOCK); break; case BIO_WRITE: - altera_sdcard_write_rxtx_buffer(sc, bp->bio_data, - bp->bio_bcount); - altera_sdcard_write_cmd_arg(sc, bp->bio_pblkno * + altera_sdcard_write_rxtx_buffer(sc, *bp->bio_data, + *bp->bio_bcount); + altera_sdcard_write_cmd_arg(sc, *bp->bio_pblkno * ALTERA_SDCARD_SECTORSIZE); altera_sdcard_write_cmd(sc, ALTERA_SDCARD_CMD_WRITE_BLOCK); break; default: - panic("%s: unsupported I/O operation %d", __func__, - bp->bio_cmd); + biofinish(*bp, NULL, EOPNOTSUPP); + *bp = NULL; } } @@ -332,8 +332,8 @@ altera_sdcard_io_start(struct altera_sdcard_softc *sc, struct bio *bp) */ KASSERT(bp->bio_bcount == ALTERA_SDCARD_SECTORSIZE, ("%s: I/O size not %d", __func__, ALTERA_SDCARD_SECTORSIZE)); - altera_sdcard_io_start_internal(sc, bp); - sc->as_currentbio = bp; + altera_sdcard_io_start_internal(sc, &bp); + sc->as_currentbio = *bp; sc->as_retriesleft = ALTERA_SDCARD_RETRY_LIMIT; } @@ -406,7 +406,7 @@ altera_sdcard_io_complete(struct altera_sdcard_softc *sc, uint16_t asr) */ if (sc->as_retriesleft != 0) { sc->as_flags |= ALTERA_SDCARD_FLAG_IOERROR; - altera_sdcard_io_start_internal(sc, bp); + altera_sdcard_io_start_internal(sc, &bp); return (0); } sc->as_flags &= ~ALTERA_SDCARD_FLAG_IOERROR; |
