diff options
author | sos <sos@FreeBSD.org> | 2004-01-08 19:17:16 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2004-01-08 19:17:16 +0000 |
commit | c87939ff3b0d7321c03632991a1435fd009a8763 (patch) | |
tree | ce95d9cc1cd61ebab57818278abb926a05ad0ffc /sys/dev/ata/ata-disk.c | |
parent | 4dc1839cca3b1b5992930e9b0f9e04394a878746 (diff) | |
download | FreeBSD-src-c87939ff3b0d7321c03632991a1435fd009a8763.zip FreeBSD-src-c87939ff3b0d7321c03632991a1435fd009a8763.tar.gz |
Use the saved params for LBA-CHS conversion. Fixes PC98 bug.
Diffstat (limited to 'sys/dev/ata/ata-disk.c')
-rw-r--r-- | sys/dev/ata/ata-disk.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c index 353ee6b..5c056ff 100644 --- a/sys/dev/ata/ata-disk.c +++ b/sys/dev/ata/ata-disk.c @@ -250,11 +250,10 @@ ad_start(struct ata_device *atadev) /* convert LBA contents if this is an old non-LBA device */ if (atadev->flags & ATA_D_USE_CHS) { - struct ata_params *param = atadev->param; - int sector = (bp->bio_pblkno % param->sectors) + 1; - int cylinder = bp->bio_pblkno / (param->sectors * param->heads); + int sector = (bp->bio_pblkno % adp->sectors) + 1; + int cylinder = bp->bio_pblkno / (adp->sectors * adp->heads); int head = (bp->bio_pblkno % - (param->sectors * param->heads)) / param->sectors; + (adp->sectors * adp->heads)) / adp->sectors; request->u.ata.lba = (sector & 0xff) | (cylinder & 0xffff) << 8 | (head & 0xf) << 24; |