Try to use the "right" CHS translations of a LBA device.
Drives bigger than 8.4G is still in question until I get a drive to test on...
This commit is contained in:
parent
c839c3ace3
commit
44779c5a1c
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=35110
@ -34,7 +34,7 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
|
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
|
||||||
* $Id: wd.c,v 1.152 1998/04/02 02:10:47 eivind Exp $
|
* $Id: wd.c,v 1.153 1998/04/08 20:04:36 sos Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* TODO:
|
/* TODO:
|
||||||
@ -1901,9 +1901,26 @@ wdgetctlr(struct disk *du)
|
|||||||
du->dk_dd.d_secsize = DEV_BSIZE;
|
du->dk_dd.d_secsize = DEV_BSIZE;
|
||||||
if ((du->cfg_flags & WDOPT_LBA) && wp->wdp_lbasize) {
|
if ((du->cfg_flags & WDOPT_LBA) && wp->wdp_lbasize) {
|
||||||
du->dk_dd.d_nsectors = 63;
|
du->dk_dd.d_nsectors = 63;
|
||||||
|
if (wp->wdp_lbasize < 16*63*1024) { /* <=528.4 MB */
|
||||||
|
du->dk_dd.d_ntracks = 16;
|
||||||
|
}
|
||||||
|
else if (wp->wdp_lbasize < 32*63*1024) { /* <=1.057 GB */
|
||||||
|
du->dk_dd.d_ntracks = 32;
|
||||||
|
}
|
||||||
|
else if (wp->wdp_lbasize < 64*63*1024) { /* <=2.114 GB */
|
||||||
du->dk_dd.d_ntracks = 64;
|
du->dk_dd.d_ntracks = 64;
|
||||||
du->dk_dd.d_ncylinders = wp->wdp_lbasize / (63*64);
|
}
|
||||||
du->dk_dd.d_secpercyl= 63*64;
|
else if (wp->wdp_lbasize < 128*63*1024) { /* <=4.228 GB */
|
||||||
|
du->dk_dd.d_ntracks = 128;
|
||||||
|
}
|
||||||
|
else if (wp->wdp_lbasize < 128*63*1024) { /* <=8.422 GB */
|
||||||
|
du->dk_dd.d_ntracks = 255;
|
||||||
|
}
|
||||||
|
else { /* >8.422 GB */
|
||||||
|
du->dk_dd.d_ntracks = 255; /* XXX */
|
||||||
|
}
|
||||||
|
du->dk_dd.d_secpercyl= du->dk_dd.d_ntracks*du->dk_dd.d_nsectors;
|
||||||
|
du->dk_dd.d_ncylinders = wp->wdp_lbasize/du->dk_dd.d_secpercyl;
|
||||||
du->dk_dd.d_secperunit = wp->wdp_lbasize;
|
du->dk_dd.d_secperunit = wp->wdp_lbasize;
|
||||||
du->dk_flags |= DKFL_LBA;
|
du->dk_flags |= DKFL_LBA;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user