diff options
author | phk <phk@FreeBSD.org> | 1998-08-10 07:22:14 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1998-08-10 07:22:14 +0000 |
commit | 456dc60f9ac94813aa538e3067d728d3d1a76442 (patch) | |
tree | fa5e2199727c21bfaf84cb38cfc0de33319a1594 /sys/kern/subr_diskmbr.c | |
parent | 9ab6c5e5c1c363fc204f5ae068ec4038e6cfafe9 (diff) | |
download | FreeBSD-src-456dc60f9ac94813aa538e3067d728d3d1a76442.zip FreeBSD-src-456dc60f9ac94813aa538e3067d728d3d1a76442.tar.gz |
The machine dependent disk slice manager does not recognize
DOS partition type 15 (Extended DOS, LBA) as a container for
DOS logical volumes, so the appropriate slices (e.g. sd1s5)
are not initialized.
PR: 7549
PR: 4120
Reviewed by: phk
Submitted by: Jim Mattson <jmattson@sonic.net>
Diffstat (limited to 'sys/kern/subr_diskmbr.c')
-rw-r--r-- | sys/kern/subr_diskmbr.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/subr_diskmbr.c b/sys/kern/subr_diskmbr.c index 13afbdb..ab9d4ba 100644 --- a/sys/kern/subr_diskmbr.c +++ b/sys/kern/subr_diskmbr.c @@ -35,7 +35,7 @@ * * from: @(#)ufs_disksubr.c 7.16 (Berkeley) 5/4/91 * from: ufs_disksubr.c,v 1.8 1994/06/07 01:21:39 phk Exp $ - * $Id: diskslice_machdep.c,v 1.29 1998/07/20 13:39:43 bde Exp $ + * $Id: diskslice_machdep.c,v 1.30 1998/07/25 16:35:06 bde Exp $ */ #include <sys/param.h> @@ -43,6 +43,7 @@ #include <sys/conf.h> #include <sys/disklabel.h> #define DOSPTYP_EXTENDED 5 +#define DOSPTYP_EXTENDEDX 15 #define DOSPTYP_ONTRACK 84 #include <sys/diskslice.h> #include <sys/malloc.h> @@ -325,7 +326,8 @@ reread_mbr: /* Handle extended partitions. */ sp -= NDOSPART; for (dospart = 0; dospart < NDOSPART; dospart++, sp++) - if (sp->ds_type == DOSPTYP_EXTENDED) + if (sp->ds_type == DOSPTYP_EXTENDED || + sp->ds_type == DOSPTYP_EXTENDEDX) extended(dname, bp->b_dev, strat, lp, ssp, sp->ds_offset, sp->ds_size, sp->ds_offset, max_nsectors, max_ntracks, mbr_offset); @@ -397,7 +399,8 @@ extended(dname, dev, strat, lp, ssp, ext_offset, ext_size, base_ext_offset, if (dp->dp_scyl == 0 && dp->dp_shd == 0 && dp->dp_ssect == 0 && dp->dp_start == 0 && dp->dp_size == 0) continue; - if (dp->dp_typ == DOSPTYP_EXTENDED) { + if (dp->dp_typ == DOSPTYP_EXTENDED || + dp->dp_typ == DOSPTYP_EXTENDEDX) { char buf[32]; sname = dsname(dname, dkunit(dev), WHOLE_DISK_SLICE, |