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