diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 2003-11-02 22:24:47 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 2003-11-02 22:24:47 +0000 |
| commit | 12146c454be5b9124e28503e574b74888131fe05 (patch) | |
| tree | acbe34586972bea5627cea3659066503c4d33d3f /sys/dev | |
| parent | d7a606482c1013423812bb32fecfc99518a5e7d8 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ata/atapi-cd.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/sys/dev/ata/atapi-cd.c b/sys/dev/ata/atapi-cd.c index 88ea1cc905779..e5dcc9f719675 100644 --- a/sys/dev/ata/atapi-cd.c +++ b/sys/dev/ata/atapi-cd.c @@ -233,6 +233,7 @@ acd_init_lun(struct ata_device *atadev) cdp->device = atadev; cdp->lun = ata_get_lun(&acd_lun_map); cdp->block_size = 2048; + cdp->disk_size = -1; /* hack for GEOM SOS */ cdp->slot = -1; cdp->changer_info = NULL; return cdp; @@ -518,16 +519,11 @@ acd_geom_access(struct g_provider *pp, int dr, int dw, int de) acd_prevent_allow(cdp, 0); cdp->flags &= ~F_LOCKED; } - pp->mediasize = (off_t)cdp->disk_size * (off_t)cdp->block_size; - pp->sectorsize = cdp->block_size; - track = pp->index; - - if (track) { + if ((track = pp->index)) { pp->sectorsize = (cdp->toc.tab[track - 1].control & 4) ? 2048 : 2352; - pp->mediasize = - ntohl(cdp->toc.tab[track].addr.lba) - - ntohl(cdp->toc.tab[track - 1].addr.lba); + pp->mediasize = ntohl(cdp->toc.tab[track].addr.lba) - + ntohl(cdp->toc.tab[track - 1].addr.lba); } else { pp->sectorsize = cdp->block_size; @@ -950,6 +946,7 @@ acd_geom_ioctl(struct g_provider *pp, u_long cmd, void *addr, struct thread *td) case CDRIOCSETBLOCKSIZE: cdp->block_size = *(int *)addr; + pp->sectorsize = cdp->block_size; /* hack for GEOM SOS */ acd_set_ioparm(cdp); break; @@ -1013,7 +1010,6 @@ acd_geom_start(struct bio *bp) /* GEOM classes must do their own request limiting */ if (bp->bio_length <= cdp->iomax) { - mtx_lock(&cdp->queue_mtx); bp->bio_pblkno = bp->bio_offset / bp->bio_to->sectorsize; bioq_disksort(&cdp->queue, bp); |
