DragonFly-2.3.0.337.gd64b2 master lib/libstand hammerread.c sys/boot/common boot2.h dinode.h ufsread.c sys/boot/pc32/boot2 Makefile boot1.S boot2.c sys/boot/pc32 bootasm.h sys/sys types.h
Matthew Dillon
dillon at apollo.backplane.com
Sun Mar 1 22:19:26 PST 2009
:
: disklabel64 UFS+HAMMER boot support (was previously just HAMMER boot support)
Simon, if you have a HAMMER-only boot system you can test these
boot1/boot2 changes on, just to make sure it still boots, I'd
appreciate it. I have to do a fresh install on a test box to test
it in that configuration and won't get it done by tonight.
The test sequence on a pre-existing 64 bit disklabel would
be something like:
cd /usr/src/sys/boot
make clean
make obj
make
make install
disklabel64 -B /dev/blahblahs1
I did as much UFS testing as I could, and it seems to have worked without
me breaking anything.
The boot1 code was using an 8086 copy loop to copy the boot2 code to its
target origin. I don't see how it could possibly have EVER worked
properly for any boot2 code over 16K due to a 64K wrap off the end
of the 8086 segment. And yet, it seemed to, so I am somewhat at a loss.
I tried making boot2 really big, 32K, and boot1 faulted out, so there
was definitely a wrap issue before these fixes.
In anycase, I changed the boot2 origin and the code size limit is now
16KB (0xC000-0xFFFF). It was 8KB before. Only disklabel64 has enough
boot2 space to hold that much (the disklabel64 can hold a 32K boot2).
disklabel32 is still restricted to an 8K boot2 and there is nothing
we can do about that.
These changes will allow us to use 64 bit disklabels with either UFS
or HAMMER boot partitions.
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Commits
mailing list