diff options
author | 2000-04-18 22:40:15 +0000 | |
---|---|---|
committer | 2000-04-18 22:40:15 +0000 | |
commit | 46a98bd3e9084700eb71ee66e32f996cc0b9e601 (patch) | |
tree | c3ce777f53db3a83f3da4277e1021175113776a8 | |
parent | strip htdigest and htpasswd before installing. (diff) | |
download | wireguard-openbsd-46a98bd3e9084700eb71ee66e32f996cc0b9e601.tar.xz wireguard-openbsd-46a98bd3e9084700eb71ee66e32f996cc0b9e601.zip |
Favor BIOS geometry over physical. This should fix MANY problems with
hard drives >8G sharing partitions with other operating systems.
Also, support extended partition type 0x0F, which is quite common now.
-rw-r--r-- | sbin/fdisk/cmd.c | 5 | ||||
-rw-r--r-- | sbin/fdisk/disk.c | 21 |
2 files changed, 11 insertions, 15 deletions
diff --git a/sbin/fdisk/cmd.c b/sbin/fdisk/cmd.c index 418b65285c3..ad799fe4677 100644 --- a/sbin/fdisk/cmd.c +++ b/sbin/fdisk/cmd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd.c,v 1.24 2000/02/04 18:09:36 kjell Exp $ */ +/* $OpenBSD: cmd.c,v 1.25 2000/04/18 22:40:15 kjell Exp $ */ /* * Copyright (c) 1997 Tobias Weingartner @@ -213,7 +213,8 @@ Xselect(cmd, disk, mbr, tt, offset) off = mbr->part[pn].bs; /* Sanity checks */ - if (mbr->part[pn].id != DOSPTYP_EXTEND) { + if ((mbr->part[pn].id != DOSPTYP_EXTEND) && + (mbr->part[pn].id != DOSPTYP_EXTENDL)) { printf("Partition %d is not an extended partition.\n", pn); return (CMD_CONT); } diff --git a/sbin/fdisk/disk.c b/sbin/fdisk/disk.c index 9dccf8fdd32..08da0227d6f 100644 --- a/sbin/fdisk/disk.c +++ b/sbin/fdisk/disk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disk.c,v 1.10 2000/01/08 04:51:16 deraadt Exp $ */ +/* $OpenBSD: disk.c,v 1.11 2000/04/18 22:40:15 kjell Exp $ */ /* * Copyright (c) 1997 Tobias Weingartner @@ -195,6 +195,13 @@ DISK_getmetrics(disk, user) return (0); } + /* If we have BIOS geometry, use that */ + if (disk->bios) { + disk->real = disk->bios; + return (0); + } + + /* If we have a label, use that */ if (!disk->real && disk->label) disk->real = disk->label; @@ -203,18 +210,6 @@ DISK_getmetrics(disk, user) if (disk->real == NULL) return (1); - /* If we have a bios, use that (if label looks bogus) - * - * XXX - This needs to be fixed!!!! - * Currently machdep.bios.biosdev is USELESS - * It needs to be, at least, a BSD device. - * Or we need a mapping from biosdev -> BSD universe. - */ - if (disk->bios) - if (disk->real->cylinders > 262144 || disk->real->heads > 256 || - disk->real->sectors > 63) - disk->real = disk->bios; - return (0); } |