DragonFly commits List (threaded) for 2009-03
DragonFly BSD
DragonFly commits List (threaded) for 2009-03
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: DragonFly- 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

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Sun, 1 Mar 2009 22:17:29 -0800 (PST)

:    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 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.

					Matthew Dillon 

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]