Index: disksubr.c =================================================================== RCS file: /cvsroot/src/sys/arch/macppc/macppc/disksubr.c,v retrieving revision 1.34 diff -d -u -r1.34 disksubr.c --- disksubr.c 8 Nov 2004 17:36:07 -0000 1.34 +++ disksubr.c 4 Jan 2005 17:01:20 -0000 @@ -444,9 +444,11 @@ switch (dp->mbrp_type) { case MBR_PTYPE_NETBSD: bsdp = dp; +/* printf(" NetBSD MBR partition found at #%x ", i);*/ break; case MBR_PTYPE_OPENBSD: case MBR_PTYPE_386BSD: +/* printf(" {Open|386}BSD MBR partition found at #%x ", i); */ if (!bsdp) bsdp = dp; break; @@ -542,6 +544,8 @@ *lp = *dlp; osdep->cd_labeloffset = (caddr_t)dlp - bp->b_data; brelse(bp); +/* printf("\nNetBSD label at %x\n", */ +/* osdep->cd_labeloffset); */ return 1; } } @@ -614,6 +618,10 @@ msg = read_dos_label(dev, strat, lp, osdep); if (!msg) osdep->cd_start = 0; + /* not all returned messages indicate an error */ + else if (osdep->cd_labelsector != LABELSECTOR) + osdep->cd_start = 0; + } else { msg = "no disk label -- NetBSD or Macintosh"; osdep->cd_start = 0; /* XXX for now */ @@ -634,6 +642,14 @@ u_long openmask; struct cpu_disklabel *osdep; { + +#if 0 + printf("\nnlp->d_secpercyl: %x, nlp->d_secsize: %x\n", + nlp->d_secpercyl, nlp->d_secsize); + printf("DEV_BSIZE: %x, nlp->d_secsize mod DEV_BSIZE: %x\n", + DEV_BSIZE, nlp->d_secsize % DEV_BSIZE); +#endif + /* sanity clause */ if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 || (nlp->d_secsize % DEV_BSIZE) != 0) @@ -645,6 +661,12 @@ return 0; } +#if 0 + printf("nlp->d_magic (%x): %x, nlp->d_magic2: %x, dkcksum: %x\n", + DISKMAGIC, nlp->d_magic, nlp->d_magic2, dkcksum(nlp)); + +#endif + if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC || dkcksum(nlp) != 0) return EINVAL; @@ -670,7 +692,7 @@ struct disklabel label; /* - * Try to re-read a disklabel, in case he changed the MBR. + * Try to re-read a disklabel, in case of changed MBR. */ label = *lp; readdisklabel(dev, strat, &label, osdep);