bin/165789: bsdlabel(8): partition c doesn't cover the whole
unit!
Andrey V. Elsukov
ae at FreeBSD.org
Fri Apr 6 04:36:47 UTC 2012
On 06.04.2012 2:10, Bengt Ahlgren wrote:
> bsdlabel: partition c doesn't cover the whole unit!
> bsdlabel: An incorrect partition c may cause problems for standard system utilities
>
> I added a printout of the value bsdlabel compares with:
>
> bsdlabel: partition c doesn't cover the whole unit! 1953525168
>
> This number corresponds to the size of the whole disk, not the size of
> the slice, so lp->d_secperunit is not the right variable to use, or is
> incorrectly set.
>
> Finally, I stepped back to r220455 (in stable/8). That version of
> bsdlabel did not complain, so it seems that r227564 by ae (cc:d) is
> causing, or making visible, this problem.
Hi,
Thank you for your report. Yes, r227564 has made visible a known sysinstall's bug.
GEOM_PART_BSD already has quirk that automatically fixes it, can you try attached patch?
--
WBR, Andrey V. Elsukov
-------------- next part --------------
Index: head/sbin/bsdlabel/bsdlabel.c
===================================================================
--- head/sbin/bsdlabel/bsdlabel.c (revision 233932)
+++ head/sbin/bsdlabel/bsdlabel.c (working copy)
@@ -1194,7 +1194,8 @@ checklabel(struct disklabel *lp)
lp->d_interleave = vl->d_interleave;
if (lp->d_secpercyl == 0)
lp->d_secpercyl = vl->d_secpercyl;
- if (lp->d_secperunit == 0)
+ if (lp->d_secperunit == 0 || /* Fix-up a sysinstall bug. */
+ lp->d_secperunit > vl->d_secperunit)
lp->d_secperunit = vl->d_secperunit;
if (lp->d_bbsize == 0)
lp->d_bbsize = vl->d_bbsize;
More information about the freebsd-geom
mailing list