Mercurial > illumos > illumos-gate
changeset 11161:a6839d90563b
6893587 findroot entry in grub gets wrong partition number during install w/ osol-125
author | Sheshadri Vasudevan <Sheshadri.Vasudevan@Sun.COM> |
---|---|
date | Mon, 23 Nov 2009 07:23:59 +0530 |
parents | 334d14d98fd2 |
children | 591186e7cb56 |
files | usr/src/cmd/boot/bootadm/bootadm.c |
diffstat | 1 files changed, 13 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/cmd/boot/bootadm/bootadm.c Mon Nov 09 12:07:46 2009 +0100 +++ b/usr/src/cmd/boot/bootadm/bootadm.c Mon Nov 23 07:23:59 2009 +0530 @@ -4890,7 +4890,7 @@ #ifdef i386 ext_part_t *epp; uint32_t secnum, numsec; - int rval, pno; + int rval, pno, ext_partno = -1; #endif /* form whole disk (p0) */ @@ -4943,15 +4943,6 @@ partno = i; break; } -#ifdef i386 - } else if (fdisk_is_dos_extended(part->systid)) { - rval = fdisk_get_solaris_part(epp, &pno, &secnum, - &numsec); - if (rval == FDISK_SUCCESS) { - partno = pno - 1; - break; - } -#endif } else { /* look for solaris partition, old and new */ #ifdef i386 if ((part->systid == SUNIXOS && @@ -4964,9 +4955,21 @@ partno = i; break; } + +#ifdef i386 + if (fdisk_is_dos_extended(part->systid)) + ext_partno = i; +#endif } } #ifdef i386 + /* If no primary solaris partition, check extended partition */ + if ((partno == -1) && (ext_partno != -1)) { + rval = fdisk_get_solaris_part(epp, &pno, &secnum, &numsec); + if (rval == FDISK_SUCCESS) { + partno = pno - 1; + } + } libfdisk_fini(&epp); #endif return (partno);