diff options
author | msmith <msmith@FreeBSD.org> | 1998-03-08 15:06:55 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 1998-03-08 15:06:55 +0000 |
commit | ec2ad300ade18a8fa3d718105856a9909fdb6b58 (patch) | |
tree | 64ebb318243877c7ba338f99dbfde362f1b43cd1 | |
parent | 7cef76ad6e820b6a5539aba44b281b4da19ea33b (diff) | |
download | FreeBSD-src-ec2ad300ade18a8fa3d718105856a9909fdb6b58.zip FreeBSD-src-ec2ad300ade18a8fa3d718105856a9909fdb6b58.tar.gz |
Construct the minor number for the root device taking into account the
slice number passed in by the bootblocks. This means the kernel will
not use the compatability slice to obtain the root filesystem when
booting from a sliced disk.
Use the extraction macros from reboot.h rather than stating them in full
again.
-rw-r--r-- | sys/amd64/amd64/autoconf.c | 18 | ||||
-rw-r--r-- | sys/i386/i386/autoconf.c | 18 |
2 files changed, 20 insertions, 16 deletions
diff --git a/sys/amd64/amd64/autoconf.c b/sys/amd64/amd64/autoconf.c index e40bda1..c520e5b 100644 --- a/sys/amd64/amd64/autoconf.c +++ b/sys/amd64/amd64/autoconf.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)autoconf.c 7.1 (Berkeley) 5/9/91 - * $Id: autoconf.c,v 1.84 1998/01/24 02:54:12 eivind Exp $ + * $Id: autoconf.c,v 1.85 1998/01/30 11:32:39 phk Exp $ */ /* @@ -443,25 +443,26 @@ static char devname[][2] = { static void setroot() { - int majdev, mindev, unit, part, adaptor; + int majdev, mindev, unit, part, adaptor, slice; dev_t orootdev; /*printf("howto %x bootdev %x ", boothowto, bootdev);*/ if (boothowto & RB_DFLTROOT || (bootdev & B_MAGICMASK) != (u_long)B_DEVMAGIC) return; - majdev = (bootdev >> B_TYPESHIFT) & B_TYPEMASK; + majdev = B_TYPE(bootdev); + adaptor = B_ADAPTOR(bootdev); + unit = B_UNIT(bootdev); + slice = B_SLICE(bootdev); if (majdev > sizeof(devname) / sizeof(devname[0])) return; - adaptor = (bootdev >> B_ADAPTORSHIFT) & B_ADAPTORMASK; - unit = (bootdev >> B_UNITSHIFT) & B_UNITMASK; if (majdev == FDMAJOR) { part = RAW_PART; mindev = unit << FDUNITSHIFT; } else { part = (bootdev >> B_PARTITIONSHIFT) & B_PARTITIONMASK; - mindev = (unit << PARTITIONSHIFT) + part; + mindev = (slice << 16) + (unit << PARTITIONSHIFT) + part; } orootdev = rootdev; rootdev = makedev(majdev, mindev); @@ -471,9 +472,10 @@ setroot() */ if (rootdev == orootdev) return; - printf("changing root device to %c%c%d%c\n", + printf("changing root device to %c%c%ds%d%c\n", devname[majdev][0], devname[majdev][1], - mindev >> (majdev == FDMAJOR ? FDUNITSHIFT : PARTITIONSHIFT), + (mindev & 0xf) >> (majdev == FDMAJOR ? FDUNITSHIFT : PARTITIONSHIFT), + slice, part + 'a'); } diff --git a/sys/i386/i386/autoconf.c b/sys/i386/i386/autoconf.c index e40bda1..c520e5b 100644 --- a/sys/i386/i386/autoconf.c +++ b/sys/i386/i386/autoconf.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)autoconf.c 7.1 (Berkeley) 5/9/91 - * $Id: autoconf.c,v 1.84 1998/01/24 02:54:12 eivind Exp $ + * $Id: autoconf.c,v 1.85 1998/01/30 11:32:39 phk Exp $ */ /* @@ -443,25 +443,26 @@ static char devname[][2] = { static void setroot() { - int majdev, mindev, unit, part, adaptor; + int majdev, mindev, unit, part, adaptor, slice; dev_t orootdev; /*printf("howto %x bootdev %x ", boothowto, bootdev);*/ if (boothowto & RB_DFLTROOT || (bootdev & B_MAGICMASK) != (u_long)B_DEVMAGIC) return; - majdev = (bootdev >> B_TYPESHIFT) & B_TYPEMASK; + majdev = B_TYPE(bootdev); + adaptor = B_ADAPTOR(bootdev); + unit = B_UNIT(bootdev); + slice = B_SLICE(bootdev); if (majdev > sizeof(devname) / sizeof(devname[0])) return; - adaptor = (bootdev >> B_ADAPTORSHIFT) & B_ADAPTORMASK; - unit = (bootdev >> B_UNITSHIFT) & B_UNITMASK; if (majdev == FDMAJOR) { part = RAW_PART; mindev = unit << FDUNITSHIFT; } else { part = (bootdev >> B_PARTITIONSHIFT) & B_PARTITIONMASK; - mindev = (unit << PARTITIONSHIFT) + part; + mindev = (slice << 16) + (unit << PARTITIONSHIFT) + part; } orootdev = rootdev; rootdev = makedev(majdev, mindev); @@ -471,9 +472,10 @@ setroot() */ if (rootdev == orootdev) return; - printf("changing root device to %c%c%d%c\n", + printf("changing root device to %c%c%ds%d%c\n", devname[majdev][0], devname[majdev][1], - mindev >> (majdev == FDMAJOR ? FDUNITSHIFT : PARTITIONSHIFT), + (mindev & 0xf) >> (majdev == FDMAJOR ? FDUNITSHIFT : PARTITIONSHIFT), + slice, part + 'a'); } |