summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormsmith <msmith@FreeBSD.org>1998-03-08 15:06:55 +0000
committermsmith <msmith@FreeBSD.org>1998-03-08 15:06:55 +0000
commitec2ad300ade18a8fa3d718105856a9909fdb6b58 (patch)
tree64ebb318243877c7ba338f99dbfde362f1b43cd1
parent7cef76ad6e820b6a5539aba44b281b4da19ea33b (diff)
downloadFreeBSD-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.c18
-rw-r--r--sys/i386/i386/autoconf.c18
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');
}
OpenPOWER on IntegriCloud