head	1.18;
access;
symbols
	RELENG_8_4:1.18.0.2
	RELENG_9_1_0_RELEASE:1.16.2.2.2.2
	RELENG_9_1:1.16.2.2.0.2
	RELENG_9_1_BP:1.16.2.2
	RELENG_8_3_0_RELEASE:1.2.4.4.2.1
	RELENG_8_3:1.2.4.4.0.2
	RELENG_8_3_BP:1.2.4.4
	RELENG_9_0_0_RELEASE:1.16.2.1.2.1
	RELENG_9_0:1.16.2.1.0.2
	RELENG_9_0_BP:1.16.2.1
	RELENG_9:1.16.0.2
	RELENG_9_BP:1.16
	RELENG_7_4_0_RELEASE:1.2.2.1.4.1
	RELENG_8_2_0_RELEASE:1.2.4.2.2.1
	RELENG_7_4:1.2.2.1.0.4
	RELENG_7_4_BP:1.2.2.1
	RELENG_8_2:1.2.4.2.0.2
	RELENG_8_2_BP:1.2.4.2
	RELENG_8_1_0_RELEASE:1.2.4.1.4.1
	RELENG_8_1:1.2.4.1.0.4
	RELENG_8_1_BP:1.2.4.1
	RELENG_7_3_0_RELEASE:1.2.2.1.2.1
	RELENG_7_3:1.2.2.1.0.2
	RELENG_7_3_BP:1.2.2.1
	RELENG_8_0_0_RELEASE:1.2.4.1.2.1
	RELENG_8_0:1.2.4.1.0.2
	RELENG_8_0_BP:1.2.4.1
	RELENG_8:1.2.0.4
	RELENG_8_BP:1.2
	RELENG_7:1.2.0.2;
locks; strict;
comment	@# @;


1.18
date	2012.11.17.01.51.18;	author svnexp;	state Exp;
branches
	1.18.2.1;
next	1.17;

1.17
date	2012.02.28.18.30.18;	author dim;	state Exp;
branches;
next	1.16;

1.16
date	2011.09.13.14.03.55;	author avg;	state Exp;
branches
	1.16.2.1;
next	1.15;

1.15
date	2011.07.17.13.50.21;	author dim;	state Exp;
branches;
next	1.14;

1.14
date	2011.06.27.21.43.56;	author jhb;	state Exp;
branches;
next	1.13;

1.13
date	2011.06.27.13.58.24;	author jhb;	state Exp;
branches;
next	1.12;

1.12
date	2011.06.12.18.01.31;	author dim;	state Exp;
branches;
next	1.11;

1.11
date	2011.04.28.17.44.24;	author jhb;	state Exp;
branches;
next	1.10;

1.10
date	2011.04.21.14.17.36;	author ae;	state Exp;
branches;
next	1.9;

1.9
date	2011.03.16.20.19.48;	author ae;	state Exp;
branches;
next	1.8;

1.8
date	2011.02.27.19.41.40;	author pjd;	state Exp;
branches;
next	1.7;

1.7
date	2011.02.27.02.06.09;	author dim;	state Exp;
branches;
next	1.6;

1.6
date	2011.02.20.19.33.47;	author dim;	state Exp;
branches;
next	1.5;

1.5
date	2011.01.05.21.46.08;	author dim;	state Exp;
branches;
next	1.4;

1.4
date	2010.09.24.19.49.12;	author pjd;	state Exp;
branches;
next	1.3;

1.3
date	2010.08.23.01.42.09;	author imp;	state Exp;
branches;
next	1.2;

1.2
date	2008.12.17.18.12.01;	author dfr;	state Exp;
branches
	1.2.2.1
	1.2.4.1;
next	1.1;

1.1
date	2008.11.17.20.49.29;	author pjd;	state Exp;
branches;
next	;

1.18.2.1
date	2012.11.17.01.51.18;	author svnexp;	state dead;
branches;
next	1.18.2.2;

1.18.2.2
date	2013.03.28.13.04.02;	author svnexp;	state Exp;
branches;
next	;

1.16.2.1
date	2011.09.23.00.51.37;	author kensmith;	state Exp;
branches
	1.16.2.1.2.1;
next	1.16.2.2;

1.16.2.2
date	2012.03.13.18.39.57;	author dim;	state Exp;
branches
	1.16.2.2.2.1;
next	1.16.2.3;

1.16.2.3
date	2012.11.17.11.36.47;	author svnexp;	state Exp;
branches;
next	1.16.2.4;

1.16.2.4
date	2014.01.04.22.05.08;	author svnexp;	state Exp;
branches;
next	1.16.2.5;

1.16.2.5
date	2014.01.10.00.01.45;	author svnexp;	state Exp;
branches;
next	;

1.16.2.1.2.1
date	2011.11.11.04.20.22;	author kensmith;	state Exp;
branches;
next	1.16.2.1.2.2;

1.16.2.1.2.2
date	2012.11.17.08.36.46;	author svnexp;	state Exp;
branches;
next	;

1.16.2.2.2.1
date	2012.08.05.23.54.33;	author kensmith;	state Exp;
branches;
next	1.16.2.2.2.2;

1.16.2.2.2.2
date	2012.11.17.08.47.36;	author svnexp;	state Exp;
branches;
next	;

1.2.2.1
date	2009.05.23.19.54.18;	author kmacy;	state Exp;
branches
	1.2.2.1.2.1
	1.2.2.1.4.1;
next	1.2.2.2;

1.2.2.2
date	2012.11.17.08.04.54;	author svnexp;	state Exp;
branches;
next	;

1.2.2.1.2.1
date	2010.02.10.00.26.20;	author kensmith;	state Exp;
branches;
next	;

1.2.2.1.4.1
date	2010.12.21.17.10.29;	author kensmith;	state Exp;
branches;
next	1.2.2.1.4.2;

1.2.2.1.4.2
date	2012.11.17.08.17.05;	author svnexp;	state Exp;
branches;
next	;

1.2.4.1
date	2009.08.03.08.13.06;	author kensmith;	state Exp;
branches
	1.2.4.1.2.1
	1.2.4.1.4.1;
next	1.2.4.2;

1.2.4.2
date	2010.10.17.20.10.00;	author pjd;	state Exp;
branches
	1.2.4.2.2.1;
next	1.2.4.3;

1.2.4.3
date	2011.06.06.09.36.46;	author mm;	state Exp;
branches;
next	1.2.4.4;

1.2.4.4
date	2012.01.15.21.43.24;	author avg;	state Exp;
branches
	1.2.4.4.2.1;
next	1.2.4.5;

1.2.4.5
date	2012.11.17.10.36.27;	author svnexp;	state Exp;
branches;
next	1.2.4.6;

1.2.4.6
date	2014.01.04.22.23.27;	author svnexp;	state Exp;
branches;
next	;

1.2.4.1.2.1
date	2009.10.25.01.10.29;	author kensmith;	state Exp;
branches;
next	;

1.2.4.1.4.1
date	2010.06.14.02.09.06;	author kensmith;	state Exp;
branches;
next	;

1.2.4.2.2.1
date	2010.12.21.17.09.25;	author kensmith;	state Exp;
branches;
next	;

1.2.4.4.2.1
date	2012.03.03.06.15.13;	author kensmith;	state Exp;
branches;
next	1.2.4.4.2.2;

1.2.4.4.2.2
date	2012.11.17.08.25.07;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.18
log
@Switching exporter and resync
@
text
@# $FreeBSD: head/sys/boot/i386/zfsboot/Makefile 232263 2012-02-28 18:30:18Z dim $

.PATH:		${.CURDIR}/../boot2 ${.CURDIR}/../common ${.CURDIR}/../../common

FILES=		zfsboot

NM?=		nm

BOOT_COMCONSOLE_PORT?= 0x3f8
BOOT_COMCONSOLE_SPEED?= 9600
B2SIOFMT?=	0x3

REL1=	0x700
ORG1=	0x7c00
ORG2=	0x2000

CFLAGS=	-DBOOTPROG=\"zfsboot\" \
	-O1 \
	-DBOOT2 \
	-DSIOPRT=${BOOT_COMCONSOLE_PORT} \
	-DSIOFMT=${B2SIOFMT} \
	-DSIOSPD=${BOOT_COMCONSOLE_SPEED} \
	-I${.CURDIR}/../../common \
	-I${.CURDIR}/../common \
	-I${.CURDIR}/../../zfs \
	-I${.CURDIR}/../../../cddl/boot/zfs \
	-I${.CURDIR}/../btx/lib -I. \
	-I${.CURDIR}/../boot2 \
	-Wall -Waggregate-return -Wbad-function-cast -Wcast-align \
	-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
	-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \
	-Winline --param max-inline-insns-single=100

LDFLAGS=-static -N --gc-sections

# Pick up ../Makefile.inc early.
.include <bsd.init.mk>

CLEANFILES=	zfsboot

zfsboot: zfsboot1 zfsboot2
	cat zfsboot1 zfsboot2 > zfsboot

CLEANFILES+=	zfsboot1 zfsldr.out zfsldr.o

zfsboot1: zfsldr.out
	objcopy -S -O binary zfsldr.out ${.TARGET}

zfsldr.out: zfsldr.o
	${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o

CLEANFILES+=	zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \
		zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o util.o

# We currently allow 65536 bytes for zfsboot - in practice it could be
# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr.
# 
BOOT2SIZE=	65536

zfsboot2: zfsboot.ld
	@@set -- `ls -l zfsboot.ld`; x=$$((${BOOT2SIZE}-$$5)); \
	    echo "$$x bytes available"; test $$x -ge 0
	dd if=zfsboot.ld of=${.TARGET} obs=${BOOT2SIZE} conv=osync

zfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN}
	btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \
	    -o ${.TARGET} -P 1 zfsboot.bin

zfsboot.ldr:
	cp /dev/null ${.TARGET}

zfsboot.bin: zfsboot.out
	objcopy -S -O binary zfsboot.out ${.TARGET}

zfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o util.o
	${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND}

SRCS=	zfsboot.c

.if ${MACHINE_CPUARCH} == "amd64"
beforedepend zfsboot.o: machine
CLEANFILES+=	machine
machine:
	ln -sf ${.CURDIR}/../../../i386/include machine
.endif

.include <bsd.prog.mk>

# XXX: clang integrated-as doesn't grok .codeNN directives yet
CFLAGS.zfsldr.S=	${CLANG_NO_IAS}
CFLAGS+=		${CFLAGS.${.IMPSRC:T}}
@


1.18.2.1
log
@file Makefile was added on branch RELENG_8_4 on 2013-03-28 13:04:02 +0000
@
text
@d1 91
@


1.18.2.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 88
# $FreeBSD: releng/8.4/sys/boot/i386/zfsboot/Makefile 230162 2012-01-15 21:43:24Z avg $

.PATH:		${.CURDIR}/../boot2 ${.CURDIR}/../common ${.CURDIR}/../../common

FILES=		zfsboot

NM?=		nm

BOOT_COMCONSOLE_PORT?= 0x3f8
BOOT_COMCONSOLE_SPEED?= 9600
B2SIOFMT?=	0x3

REL1=	0x700
ORG1=	0x7c00
ORG2=	0x2000

CFLAGS=	-DBOOTPROG=\"zfsboot\" \
	-O1 \
	-mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 \
	-DBOOT2 \
	-DSIOPRT=${BOOT_COMCONSOLE_PORT} \
	-DSIOFMT=${B2SIOFMT} \
	-DSIOSPD=${BOOT_COMCONSOLE_SPEED} \
	-I${.CURDIR}/../../common \
	-I${.CURDIR}/../common \
	-I${.CURDIR}/../../zfs \
	-I${.CURDIR}/../../../cddl/boot/zfs \
	-I${.CURDIR}/../btx/lib -I. \
	-I${.CURDIR}/../boot2 \
	-Wall -Waggregate-return -Wbad-function-cast -Wcast-align \
	-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
	-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \
	-Winline --param max-inline-insns-single=100

LDFLAGS=-static -N --gc-sections

# Pick up ../Makefile.inc early.
.include <bsd.init.mk>

CLEANFILES=	zfsboot

zfsboot: zfsboot1 zfsboot2
	cat zfsboot1 zfsboot2 > zfsboot

CLEANFILES+=	zfsboot1 zfsldr.out zfsldr.o

zfsboot1: zfsldr.out
	objcopy -S -O binary zfsldr.out ${.TARGET}

zfsldr.out: zfsldr.o
	${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o

CLEANFILES+=	zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \
		zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o util.o

# We currently allow 65536 bytes for zfsboot - in practice it could be
# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr.
# 
BOOT2SIZE=	65536

zfsboot2: zfsboot.ld
	@@set -- `ls -l zfsboot.ld`; x=$$((${BOOT2SIZE}-$$5)); \
	    echo "$$x bytes available"; test $$x -ge 0
	dd if=zfsboot.ld of=${.TARGET} obs=${BOOT2SIZE} conv=osync

zfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN}
	btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \
	    -o ${.TARGET} -P 1 zfsboot.bin

zfsboot.ldr:
	cp /dev/null ${.TARGET}

zfsboot.bin: zfsboot.out
	objcopy -S -O binary zfsboot.out ${.TARGET}

zfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o util.o
	${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND}

SRCS=	zfsboot.c

.if ${MACHINE_ARCH} == "amd64"
beforedepend zfsboot.o: machine
CLEANFILES+=	machine
machine:
	ln -sf ${.CURDIR}/../../../i386/include machine
.endif

.include <bsd.prog.mk>
@


1.17
log
@SVN rev 232263 on 2012-02-28 18:30:18Z by dim

Define several extra macros in bsd.sys.mk and sys/conf/kern.pre.mk, to
get rid of testing explicitly for clang (using ${CC:T:Mclang}) in
individual Makefiles.

Instead, use the following extra macros, for use with clang:
- NO_WERROR.clang       (disables -Werror)
- NO_WCAST_ALIGN.clang  (disables -Wcast-align)
- NO_WFORMAT.clang	(disables -Wformat and friends)
- CLANG_NO_IAS		(disables integrated assembler)
- CLANG_OPT_SMALL	(adds flags for extra small size optimizations)

As a side effect, this enables setting CC/CXX/CPP in src.conf instead of
make.conf!  For clang, use the following:

CC=clang
CXX=clang++
CPP=clang-cpp

MFC after:	2 weeks
@
text
@d1 1
a1 1
# $FreeBSD$
@


1.16
log
@SVN rev 225530 on 2011-09-13 14:03:55Z by avg

gpt/zfs boot blocks: reduce optimizing CFLAGS to -O1

gpt and zfs boot blocks are not nearly as size-constrained as boot2
from which they inherited their current optimization and anti-optimization
options.  As such the current options do not provide any benefit, but
make debugging of the code much harder.
Also, it has been demonstrated that combination of -mrtd and
-fno-unit-at-a-time may result in mis-compilation of the boot code
with the current base gcc.

Additionally, intermediate assembly file filtering is removed for
zfsboot.

The new boot blocks are all compile- and boot- tested using qemu.
gptzfsboot is tested with real hardware.

Reported by:	Peter Jeremy <peterjeremy@@acm.org> [miscompilation]
Discussed with:	bde, jhb
Tested by:	Sebastian Chmielewski <chmielsster@@gmail.com> [gptzfsboot]
Approved by:	re (kib)
MFC after:	3 weeks
@
text
@a33 5
.if ${CC:T:Mclang} == "clang"
# XXX: clang integrated-as doesn't grok .codeNN directives yet
CFLAGS+=	${.IMPSRC:T:Mzfsldr.S:C/^.+$/-no-integrated-as/}
.endif

d88 4
@


1.16.2.1
log
@SVN rev 225736 on 2011-09-23 00:51:37Z by kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.16.2.2
log
@SVN rev 232930 on 2012-03-13 18:39:57Z by dim

MFC r232263:

Define several extra macros in bsd.sys.mk and sys/conf/kern.pre.mk, to
get rid of testing explicitly for clang (using ${CC:T:Mclang}) in
individual Makefiles.

Instead, use the following extra macros, for use with clang:
- NO_WERROR.clang       (disables -Werror)
- NO_WCAST_ALIGN.clang  (disables -Wcast-align)
- NO_WFORMAT.clang	(disables -Wformat and friends)
- CLANG_NO_IAS		(disables integrated assembler)
- CLANG_OPT_SMALL	(adds flags for extra small size optimizations)

As a side effect, this enables setting CC/CXX/CPP in src.conf instead of
make.conf!  For clang, use the following:

CC=clang
CXX=clang++
CPP=clang-cpp
@
text
@d34 5
a92 4

# XXX: clang integrated-as doesn't grok .codeNN directives yet
CFLAGS.zfsldr.S=	${CLANG_NO_IAS}
CFLAGS+=		${CFLAGS.${.IMPSRC:T}}
@


1.16.2.3
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242902
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242902 | dteske | 2012-11-11 23:29:45 +0000 (Sun, 11 Nov 2012) | 10 lines
## SVN ##
## SVN ## Fix a regression introduced by SVN r211417 that saw the breakage of a feature
## SVN ## documented in usr.sbin/sysinstall/help/shortcuts.hlp (reproduced below):
## SVN ##
## SVN ## If /usr/sbin/sysinstall is linked to another filename, say
## SVN ## `/usr/local/bin/configPackages', then the basename will be used
## SVN ## as an implicit command name.
## SVN ##
## SVN ## Reviewed by:	adrian (co-mentor)
## SVN ## Approved by:	adrian (co-mentor)
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
# $FreeBSD: stable/9/sys/boot/i386/zfsboot/Makefile 232930 2012-03-13 18:39:57Z dim $
@


1.16.2.4
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/260291
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@d1 1
a1 1
# $FreeBSD: stable/9/sys/boot/i386/zfsboot/Makefile 260291 2014-01-04 22:00:07Z dim $
d34 1
a34 1
LD_FLAGS=-static -N --gc-sections
d50 1
a50 1
	${LD} ${LD_FLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o
d76 1
a76 1
	${LD} ${LD_FLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND}
@


1.16.2.5
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/260497
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@d1 1
a1 1
# $FreeBSD: stable/9/sys/boot/i386/zfsboot/Makefile 260497 2014-01-09 23:08:56Z dim $
d32 1
a32 3
	-Winline

CFLAGS.gcc+=	--param max-inline-insns-single=100
@


1.16.2.2.2.1
log
@SVN rev 239080 on 2012-08-05 23:54:33Z by kensmith

Copy stable/9 to releng/9.1 as part of the 9.1-RELEASE release process.

Approved by:	re (implicit)
@
text
@@


1.16.2.2.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/9.1/sys/boot/i386/zfsboot/Makefile 232930 2012-03-13 18:39:57Z dim $
@


1.16.2.1.2.1
log
@SVN rev 227445 on 2011-11-11 04:20:22Z by kensmith

Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
cycle.

Approved by:	re (implicit)
@
text
@@


1.16.2.1.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/9.0/sys/boot/i386/zfsboot/Makefile 225530 2011-09-13 14:03:55Z avg $
@


1.15
log
@SVN rev 224131 on 2011-07-17 13:50:21Z by dim

When building some of the boot loaders with clang, and DEBUG_FLAGS or
CFLAGS having '-g' in it, clang outputs several assembly directives that
are too new for our version of binutils.

Therefore, assemble the resulting .s files with clang instead.  A more
general solution can be implemented when a GNU as-compatible driver for
clang's integrated assembler appears.

Reported by:	dougb
@
text
@d18 1
a18 6
	-Os \
	-fno-guess-branch-probability \
	-fomit-frame-pointer \
	-fno-unit-at-a-time \
	-mno-align-long-strings \
	-mrtd \
a82 5
zfsboot.o: zfsboot.s
.if ${CC:T:Mclang} == "clang"
	${CC} ${ACFLAGS} -c zfsboot.s
.endif

a84 5
zfsboot.s: zfsboot.c ${.CURDIR}/../../zfs/zfsimpl.c
	${CC} ${CFLAGS} -S -o zfsboot.s.tmp ${.CURDIR}/zfsboot.c
	sed -e '/align/d' -e '/nop/d' < zfsboot.s.tmp > zfsboot.s
	rm -f zfsboot.s.tmp

d86 1
a86 1
beforedepend zfsboot.s: machine
@


1.14
log
@SVN rev 223611 on 2011-06-27 21:43:56Z by jhb

Revert the entry point label to 'start' to unbreak the build.

Pointy hat to:	jhb
@
text
@d89 3
@


1.13
log
@SVN rev 223597 on 2011-06-27 13:58:24Z by jhb

- Remove the fake BPB from zfsldr.  zfsldr doesn't support booting from
  floppies, so it will not be used as the start of an emulated floppy
  image on a bootable CD which is what the fake BPB was used for.
- Only check that EDD packet mode is available once at the start of
  zfsldr rather than for each disk sector now that we read data in one
  sector at a time.  As a result, collapse the remaining bits of read
  up into nread and rename nread to read.
- Restore a return at the end of putstr that I removed in the previous
  revision.

Tested by:	Henri Hennebert (earlier version)
MFC after:	1 week
@
text
@d60 1
a60 1
	${LD} ${LDFLAGS} -e main -Ttext ${ORG1} -o ${.TARGET} zfsldr.o
@


1.12
log
@SVN rev 223017 on 2011-06-12 18:01:31Z by dim

Upgrade our copy of llvm/clang to r132879, from upstream's trunk.
@
text
@d60 1
a60 1
	${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o
@


1.11
log
@SVN rev 221177 on 2011-04-28 17:44:24Z by jhb

Due to space constraints, the UFS boot2 and boot1 use an evil hack where
boot2 calls back into boot1 to perform disk reads.  The ZFS MBR boot blocks
do not have the same space constraints, so remove this hack for ZFS.
While here, remove commented out code to support C/H/S addressing from
zfsldr.  The ZFS and GPT bootstraps always just use EDD LBA addressing.

MFC after:	2 weeks
@
text
@d18 1
a18 1
	-Os -g \
@


1.10
log
@SVN rev 220924 on 2011-04-21 14:17:36Z by ae

Remove all object files during 'make clean'.

MFC after:	1 week
@
text
@a8 3
# A value of 0x80 enables LBA support.
BOOT_BOOT1_FLAGS?=	0x80

a24 1
	-DFLAGS=${BOOT_BOOT1_FLAGS} \
d63 1
a63 2
		zfsboot.o zfsboot.s zfsboot.s.tmp xreadorg.h sio.o cons.o \
		drv.o util.o
d90 1
a90 1
SRCS=	zfsboot.c xreadorg.h
d92 1
a92 1
zfsboot.s: zfsboot.c xreadorg.h ${.CURDIR}/../../zfs/zfsimpl.c
a96 7
xreadorg.h: zfsldr.out
	${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \
	    { x = $$1 - ORG1; \
	    printf("#define XREADORG %#x\n", REL1 + x) }' \
	    ORG1=`printf "%d" ${ORG1}` \
	    REL1=`printf "%d" ${REL1}` > ${.TARGET}

@


1.9
log
@SVN rev 219703 on 2011-03-16 20:19:48Z by ae

The size of zfsboot2 grown up to 64 Kbytes in r219089.
Increase NSECT up to 128 sectors too.

Reviewed by:	jhb, pjd
@
text
@d67 2
a68 1
		zfsboot.o zfsboot.s zfsboot.s.tmp xreadorg.h sio.o
@


1.8
log
@SVN rev 219089 on 2011-02-27 19:41:40Z by pjd

Finally... Import the latest open-source ZFS version - (SPA) 28.

Few new things available from now on:

- Data deduplication.
- Triple parity RAIDZ (RAIDZ3).
- zfs diff.
- zpool split.
- Snapshot holds.
- zpool import -F. Allows to rewind corrupted pool to earlier
  transaction group.
- Possibility to import pool in read-only mode.

MFC after:	1 month
@
text
@d69 1
a69 1
# We currently allow 32768 bytes for zfsboot - in practice it could be
@


1.7
log
@SVN rev 219079 on 2011-02-27 02:06:09Z by dim

Clang's integrated assembler can now handle sys/boot/i386/boot2/sio.S.
It used to choke on the notation "inb (%dx),%al" for "inb %dx,%al"; GNU
as accepts both forms.  Which notation is more 'correct' is an open
question. :)
@
text
@d72 1
a72 1
BOOT2SIZE=	32768
@


1.6
log
@SVN rev 218893 on 2011-02-20 19:33:47Z by dim

Upgrade our copy of llvm/clang to r126079, from upstream's trunk.

This contains many improvements, primarily better C++ support, an
integrated assembler for x86 and support for -pg.
@
text
@a43 2
# XXX: clang integrated-as doesn't grok some 16-bit instructions yet
CFLAGS+=	${.IMPSRC:T:Msio.S:C/^.+$/-no-integrated-as/}
@


1.5
log
@SVN rev 217028 on 2011-01-05 21:46:08Z by dim

Remove superfluous -mno-(mmx|3dnow|sse|sse2|sse3) flags in Makefiles
under sys/boot/{i386,pc98}, since these are already added via
sys/boot/{i386,pc98}/Makefile.inc.

Submitted by:	arundel
@
text
@d43 7
@


1.4
log
@SVN rev 213136 on 2010-09-24 19:49:12Z by pjd

- Split code shared by almost any boot loader into separate files and
  clean up most layering violations:

	sys/boot/i386/common/rbx.h:

		RBX_* defines
		OPT_SET()
		OPT_CHECK()

	sys/boot/common/util.[ch]:

		memcpy()
		memset()
		memcmp()
		bcpy()
		bzero()
		bcmp()
		strcmp()
		strncmp() [new]
		strcpy()
		strcat()
		strchr()
		strlen()
		printf()

	sys/boot/i386/common/cons.[ch]:

		ioctrl
		putc()
		xputc()
		putchar()
		getc()
		xgetc()
		keyhit() [now takes number of seconds as an argument]
		getstr()

	sys/boot/i386/common/drv.[ch]:

		struct dsk
		drvread()
		drvwrite() [new]
		drvsize() [new]

	sys/boot/common/crc32.[ch] [new]

	sys/boot/common/gpt.[ch] [new]

- Teach gptboot and gptzfsboot about new files. I haven't touched the
  rest, but there is still a lot of code duplication to be removed.

- Implement full GPT support. Currently we just read primary header and
  partition table and don't care about checksums, etc. After this change we
  verify checksums of primary header and primary partition table and if
  there is a problem we fall back to backup header and backup partition
  table.

- Clean up most messages to use prefix of boot program, so in case of an
  error we know where the error comes from, eg.:

	gptboot: unable to read primary GPT header

- If we can't boot, print boot prompt only once and not every five
  seconds.

- Honour newly added GPT attributes:

	bootme - this is bootable partition
	bootonce - try to boot from this partition only once
	bootfailed - we failed to boot from this partition

- Change boot order of gptboot to the following:

	1. Try to boot from all the partitions that have both 'bootme'
	   and 'bootonce' attributes one by one.
	2. Try to boot from all the partitions that have only 'bootme'
	   attribute one by one.
	3. If there are no partitions with 'bootme' attribute, boot from
	   the first UFS partition.

- The 'bootonce' functionality is implemented in the following way:

	1. Walk through all the partitions and when 'bootonce'
	   attribute is found without 'bootme' attribute, remove
	   'bootonce' attribute and set 'bootfailed' attribute.
	   'bootonce' attribute alone means that we tried to boot from
	   this partition, but boot failed after leaving gptboot and
	   machine was restarted.
	2. Find partition with both 'bootme' and 'bootonce' attributes.
	3. Remove 'bootme' attribute.
	4. Try to execute /boot/loader or /boot/kernel/kernel from that
	   partition. If succeeded we stop here.
	5. If execution failed, remove 'bootonce' and set 'bootfailed'.
	6. Go to 2.

   If whole boot succeeded there is new /etc/rc.d/gptboot script coming
   that will log all partitions that we failed to boot from (the ones with
   'bootfailed' attribute) and will remove this attribute. It will also
   find partition with 'bootonce' attribute - this is the partition we
   booted from successfully. The script will log success and remove the
   attribute.

   All the GPT updates we do here goes to both primary and backup GPT if
   they are valid. We don't touch headers or partition tables when
   checksum doesn't match.

Reviewed by:	arch (Message-ID: <20100917234542.GE1902@@garage.freebsd.pl>)
Obtained from:	Wheel Systems Sp. z o.o. http://www.wheelsystems.com
MFC after:	2 weeks
@
text
@a26 1
	-mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 \
@


1.3
log
@SVN rev 211677 on 2010-08-23 01:42:09Z by imp

MF tbemd: Minor tweaks, prefer MACHINE_CPUARCH generally to MACHINE_ARCH
@
text
@d3 1
a3 1
.PATH:		${.CURDIR}/../boot2
d20 2
a21 1
CFLAGS=	-Os -g \
d33 2
d63 1
a63 1
		zfsboot.o zfsboot.s zfsboot.s.tmp zfsboot.h sio.o
d85 1
a85 1
zfsboot.out: ${BTXCRT} zfsboot.o sio.o
d90 1
a90 1
SRCS=	zfsboot.c zfsboot.h
d92 1
a92 1
zfsboot.s: zfsboot.c zfsboot.h ${.CURDIR}/../../zfs/zfsimpl.c
d97 1
a97 1
zfsboot.h: zfsldr.out
@


1.2
log
@SVN rev 186243 on 2008-12-17 18:12:01Z by dfr

Use full 64bit arithmetic when converting file offsets to block numbers - fixes
booting on filesystems with inode numbers with values above 4194304.

Submitted by:	ps
@
text
@d101 1
a101 1
.if ${MACHINE_ARCH} == "amd64"
@


1.2.4.1
log
@SVN rev 196045 on 2009-08-03 08:13:06Z by kensmith

Copy head to stable/8 as part of 8.0 Release cycle.

Approved by:	re (Implicit)
@
text
@@


1.2.4.2
log
@SVN rev 213994 on 2010-10-17 20:10:00Z by pjd

MFC r213133,r213135,r213136,r213137,r213245:

r213133:

Add three GPT attributes:

GPT_ENT_ATTR_BOOTME - this is bootable partition

GPT_ENT_ATTR_BOOTONCE - try to boot only once from this partition

GPT_ENT_ATTR_BOOTFAILED - set this flag if we cannot boot from partition
	containing GPT_ENT_ATTR_BOOTONCE flag; note that if we cannot
	boot from partition that contains only GPT_ENT_ATTR_BOOTME flag,
	the GPT_ENT_ATTR_BOOTFAILED flag won't be set

According to wikipedia Microsoft TechNet says that attributes are divided into
two halves: the lower 4 bytes representing partition independent attributes,
and the upper 4 bytes are partition type dependent. Microsoft is already using
bits 60 (read-only), 62 (hidden) and 63 (do not automount) and I'd like to not
collide with those, so we are using bit 59 (bootme), 58 (bootonce) and 57
(bootfailed).

Reviewed by:	arch (Message-ID: <20100917234542.GE1902@@garage.freebsd.pl>)

r213135:

Allow to configure GPT attributes. It shouldn't be allowed to set bootfailed
attribute (it should be allowed only to unset it), but for test purposes it
might be useful, so the current code allows it.

Reviewed by:	arch@@ (Message-ID: <20100917234542.GE1902@@garage.freebsd.pl>)

r213136:

- Split code shared by almost any boot loader into separate files and
  clean up most layering violations:

	sys/boot/i386/common/rbx.h:

		RBX_* defines
		OPT_SET()
		OPT_CHECK()

	sys/boot/common/util.[ch]:

		memcpy()
		memset()
		memcmp()
		bcpy()
		bzero()
		bcmp()
		strcmp()
		strncmp() [new]
		strcpy()
		strcat()
		strchr()
		strlen()
		printf()

	sys/boot/i386/common/cons.[ch]:

		ioctrl
		putc()
		xputc()
		putchar()
		getc()
		xgetc()
		keyhit() [now takes number of seconds as an argument]
		getstr()

	sys/boot/i386/common/drv.[ch]:

		struct dsk
		drvread()
		drvwrite() [new]
		drvsize() [new]

	sys/boot/common/crc32.[ch] [new]

	sys/boot/common/gpt.[ch] [new]

- Teach gptboot and gptzfsboot about new files. I haven't touched the
  rest, but there is still a lot of code duplication to be removed.

- Implement full GPT support. Currently we just read primary header and
  partition table and don't care about checksums, etc. After this change we
  verify checksums of primary header and primary partition table and if
  there is a problem we fall back to backup header and backup partition
  table.

- Clean up most messages to use prefix of boot program, so in case of an
  error we know where the error comes from, eg.:

	gptboot: unable to read primary GPT header

- If we can't boot, print boot prompt only once and not every five
  seconds.

- Honour newly added GPT attributes:

	bootme - this is bootable partition
	bootonce - try to boot from this partition only once
	bootfailed - we failed to boot from this partition

- Change boot order of gptboot to the following:

	1. Try to boot from all the partitions that have both 'bootme'
	   and 'bootonce' attributes one by one.
	2. Try to boot from all the partitions that have only 'bootme'
	   attribute one by one.
	3. If there are no partitions with 'bootme' attribute, boot from
	   the first UFS partition.

- The 'bootonce' functionality is implemented in the following way:

	1. Walk through all the partitions and when 'bootonce'
	   attribute is found without 'bootme' attribute, remove
	   'bootonce' attribute and set 'bootfailed' attribute.
	   'bootonce' attribute alone means that we tried to boot from
	   this partition, but boot failed after leaving gptboot and
	   machine was restarted.
	2. Find partition with both 'bootme' and 'bootonce' attributes.
	3. Remove 'bootme' attribute.
	4. Try to execute /boot/loader or /boot/kernel/kernel from that
	   partition. If succeeded we stop here.
	5. If execution failed, remove 'bootonce' and set 'bootfailed'.
	6. Go to 2.

   If whole boot succeeded there is new /etc/rc.d/gptboot script coming
   that will log all partitions that we failed to boot from (the ones with
   'bootfailed' attribute) and will remove this attribute. It will also
   find partition with 'bootonce' attribute - this is the partition we
   booted from successfully. The script will log success and remove the
   attribute.

   All the GPT updates we do here goes to both primary and backup GPT if
   they are valid. We don't touch headers or partition tables when
   checksum doesn't match.

Reviewed by:	arch (Message-ID: <20100917234542.GE1902@@garage.freebsd.pl>)
Obtained from:	Wheel Systems Sp. z o.o. http://www.wheelsystems.com

r213137:

Add gptboot script that is responsible for:
- looking for partition with 'bootonce' attribute alone (without 'bootme'
  attribute), removing it and logging that we successfully booted from this
  partition.
- looking for partitions with 'bootfailed' attribute, removing it and
  logging that we failed to boot from this partition.

Reviewed by:	arch (Message-ID: <20100917234542.GE1902@@garage.freebsd.pl>)
Obtained from:	Wheel Systems Sp. z o.o. http://www.wheelsystems.com

r213245:

Document recently added GPT attributes (bootme, bootonce, bootfailed) and
list other schemes attributes.

Reviewed by:	simon, rpaulo
@
text
@d3 1
a3 1
.PATH:		${.CURDIR}/../boot2 ${.CURDIR}/../common ${.CURDIR}/../../common
d20 1
a20 2
CFLAGS=	-DBOOTPROG=\"zfsboot\" \
	-Os -g \
a31 2
	-I${.CURDIR}/../../common \
	-I${.CURDIR}/../common \
d60 1
a60 1
		zfsboot.o zfsboot.s zfsboot.s.tmp xreadorg.h sio.o
d82 1
a82 1
zfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o util.o
d87 1
a87 1
SRCS=	zfsboot.c xreadorg.h
d89 1
a89 1
zfsboot.s: zfsboot.c xreadorg.h ${.CURDIR}/../../zfs/zfsimpl.c
d94 1
a94 1
xreadorg.h: zfsldr.out
@


1.2.4.3
log
@SVN rev 222741 on 2011-06-06 09:36:46Z by mm

MFC ZFS version 28 and related revisions:
208682, 211900, 212543, 213791, 216378, 218007, 218725, 219089, 219090,
219092, 219316, 219317, 219320, 219404, 219636, 219703, 219959, 219973,
220447, 220575, 221112, 221177, 221263, 221409, 222050, 222267, 222268

MFC r208682 (pjd):
Fix panic when reading label from provider with non power of 2 sector size.

MFC r211900 (pjd):
Use ZFS_CTLDIR_NAME instead of hardcoding ".zfs".

MFC r212543 (imp):
Simplify atomic selection

MFC r213791 (rpaulo):
Pass a format string to panic() and to taskqueue_start_threads().

Found with:	clang

MFC r216378 (pjd):
Remove redundant semicolon and empty like.

MFC r218007 (jchandra):
CDDL fixes for MIPS n32.

Provide 64 bit atomic ops, and use 32 bit pointer.

MFC r218725 (dim):
When building libzpool on ia64 or sparc64, don't add the .note.GNU-stack
section.

MFC r219089 (pjd):
Finally... Import the latest open-source ZFS version - (SPA) 28.

Few new things available from now on:

- Data deduplication.
- Triple parity RAIDZ (RAIDZ3).
- zfs diff.
- zpool split.
- Snapshot holds.
- zpool import -F. Allows to rewind corrupted pool to earlier
  transaction group.
- Possibility to import pool in read-only mode.

MFC r219090 (pjd):
Commit two more files missed in r219089.

MFC r219092 (pjd):
Use proper lock in assertion.

MFC r219316 (pjd):
Simplify zvol_remove_minors() a bit.

MFC r219317 (pjd):
Make renaming of a ZVOL, ZVOL's parent directory and ZVOL snapshot work.

MFC r219320 (pjd):
Fix libzpool build.

MFC r219404 (pjd):
Correct readdir over ZFS handling.

MFC r219636 (pjd):
Fix potential panic in dbuf_sync_list() relate to spill blocks handling.

MFC r219703 (ae):
The size of zfsboot2 grown up to 64 Kbytes in r219089.
Increase NSECT up to 128 sectors too.

MFC r219959 (pjd):
Properly print characters larger than 127.

MFC r219973 (pjd):
Checking file access on size change is bogus. The checks are done earlier by
VFS where we know if this is truncate(2) or ftruncate(2). If this is the
latter we should depend on the mode the file was opened and not on the current
permission.

MFC r220447 (mm):
Partially fix ZFS compat code for sparc64.
Some endianess bugs still need to be resolved.

MFC r220575 (pjd):
Fix 'zfs list <path>' handling. If the path was found, the 'ret' variable was
uninitialized.

MFC r221112 (marcel):
Fix copy-paste bug.

MFC r221177 (jhb):
Due to space constraints, the UFS boot2 and boot1 use an evil hack where
boot2 calls back into boot1 to perform disk reads.  The ZFS MBR boot blocks
do not have the same space constraints, so remove this hack for ZFS.
While here, remove commented out code to support C/H/S addressing from
zfsldr.  The ZFS and GPT bootstraps always just use EDD LBA addressing.

MFC r221263 (mm):
Fix deduplicated zfs receive
(dmu_recv_stream builds incomplete guid_to_ds_map)

Illumos-gate changeset: 13329:c48b8bf84ab7

MFC r221409 (marius):
Convert the last use of xcopyout() to ddi_copyout() and remove the now
unused xcopyin() as well as xcopyout().

MFC r222050 (mm):
Restore old (v15) behaviour for a recursive snapshot destroy.
(zfs destroy -r pool/dataset@@snapshot)

To destroy all descendent snapshots with the same name the top level
snapshot was not required to exist. So if the top level snapshot does
not exist, check permissions of the parent dataset instead.

Filed as Illumos Bug #1043

MFC r222267 (pjd):
Don't access task structure once we call task function.
The task structure might be no longer available.
This also allows to eliminates the need for two tasks in the zio structure.

MFC r222268 (pjd):
Don't pass pointer to name buffer which is on the stack to another thread,
because the stack might be paged out once the other thread tries to use the
data. Instead, just allocate memory.

Discussed with:		pjd
@
text
@d9 3
d29 1
d63 1
a63 1
		zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o util.o
d65 1
a65 1
# We currently allow 65536 bytes for zfsboot - in practice it could be
d68 1
a68 1
BOOT2SIZE=	65536
d90 1
a90 1
SRCS=	zfsboot.c
d92 1
a92 1
zfsboot.s: zfsboot.c ${.CURDIR}/../../zfs/zfsimpl.c
d97 7
@


1.2.4.4
log
@SVN rev 230162 on 2012-01-15 21:43:24Z by avg

MFC r225530: gpt/zfs boot blocks: reduce optimizing CFLAGS to -O1
@
text
@d18 6
a23 1
	-O1 \
d84 2
d88 5
d94 1
a94 1
beforedepend zfsboot.o: machine
@


1.2.4.5
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242909
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242909 | dim | 2012-11-12 07:47:19 +0000 (Mon, 12 Nov 2012) | 20 lines
## SVN ##
## SVN ## MFC r242625:
## SVN ##
## SVN ## Remove duplicate const specifiers in many drivers (I hope I got all of
## SVN ## them, please let me know if not).  Most of these are of the form:
## SVN ##
## SVN ## static const struct bzzt_type {
## SVN ##       [...list of members...]
## SVN ## } const bzzt_devs[] = {
## SVN ##       [...list of initializers...]
## SVN ## };
## SVN ##
## SVN ## The second const is unnecessary, as arrays cannot be modified anyway,
## SVN ## and if the elements are const, the whole thing is const automatically
## SVN ## (e.g. it is placed in .rodata).
## SVN ##
## SVN ## I have verified this does not change the binary output of a full kernel
## SVN ## build (except for build timestamps embedded in the object files).
## SVN ##
## SVN ## Reviewed by:	yongari, marius
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
# $FreeBSD: stable/8/sys/boot/i386/zfsboot/Makefile 230162 2012-01-15 21:43:24Z avg $
@


1.2.4.6
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/260291
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@d1 1
a1 1
# $FreeBSD: stable/8/sys/boot/i386/zfsboot/Makefile 260291 2014-01-04 22:00:07Z dim $
d35 1
a35 1
LD_FLAGS=-static -N --gc-sections
d51 1
a51 1
	${LD} ${LD_FLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o
d77 1
a77 1
	${LD} ${LD_FLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND}
@


1.2.4.4.2.1
log
@SVN rev 232438 on 2012-03-03 06:15:13Z by kensmith

Copy stable/8 to releng/8.3 as part of 8.3-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.2.4.4.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/8.3/sys/boot/i386/zfsboot/Makefile 230162 2012-01-15 21:43:24Z avg $
@


1.2.4.2.2.1
log
@SVN rev 216617 on 2010-12-21 17:09:25Z by kensmith

Copy stable/8 to releng/8.2 in preparation for FreeBSD-8.2 release.

Approved by:	re (implicit)
@
text
@@


1.2.4.1.4.1
log
@SVN rev 209145 on 2010-06-14 02:09:06Z by kensmith

Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.

Approved by:	re (implicit)
@
text
@@


1.2.4.1.2.1
log
@SVN rev 198460 on 2009-10-25 01:10:29Z by kensmith

Copy stable/8 to releng/8.0 as part of 8.0-RELEASE release procedure.

Approved by:	re (implicit)
@
text
@@


1.2.2.1
log
@SVN rev 192665 on 2009-05-23 19:54:18Z by kmacy

Import ZFS loader support missed in the initial MFC
set LOADER_ZFS_SUPPORT=Y in make.conf to enable
@
text
@@


1.2.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: stable/7/sys/boot/i386/zfsboot/Makefile 192665 2009-05-23 19:54:18Z kmacy $
@


1.2.2.1.4.1
log
@SVN rev 216618 on 2010-12-21 17:10:29Z by kensmith

Copy stable/7 to releng/7.4 in preparation for FreeBSD-7.4 release.

Approved by:	re (implicit)
@
text
@@


1.2.2.1.4.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/7.4/sys/boot/i386/zfsboot/Makefile 192665 2009-05-23 19:54:18Z kmacy $
@


1.2.2.1.2.1
log
@SVN rev 203736 on 2010-02-10 00:26:20Z by kensmith

Copy stable/7 to releng/7.3 as part of the 7.3-RELEASE process.

Approved by:	re (implicit)
@
text
@@


1.1
log
@SVN rev 185029 on 2008-11-17 20:49:29Z by pjd

Update ZFS from version 6 to 13 and bring some FreeBSD-specific changes.

This bring huge amount of changes, I'll enumerate only user-visible changes:

- Delegated Administration

	Allows regular users to perform ZFS operations, like file system
	creation, snapshot creation, etc.

- L2ARC

	Level 2 cache for ZFS - allows to use additional disks for cache.
	Huge performance improvements mostly for random read of mostly
	static content.

- slog

	Allow to use additional disks for ZFS Intent Log to speed up
	operations like fsync(2).

- vfs.zfs.super_owner

	Allows regular users to perform privileged operations on files stored
	on ZFS file systems owned by him. Very careful with this one.

- chflags(2)

	Not all the flags are supported. This still needs work.

- ZFSBoot

	Support to boot off of ZFS pool. Not finished, AFAIK.

	Submitted by:	dfr

- Snapshot properties

- New failure modes

	Before if write requested failed, system paniced. Now one
	can select from one of three failure modes:
	- panic - panic on write error
	- wait - wait for disk to reappear
	- continue - serve read requests if possible, block write requests

- Refquota, refreservation properties

	Just quota and reservation properties, but don't count space consumed
	by children file systems, clones and snapshots.

- Sparse volumes

	ZVOLs that don't reserve space in the pool.

- External attributes

	Compatible with extattr(2).

- NFSv4-ACLs

	Not sure about the status, might not be complete yet.

	Submitted by:	trasz

- Creation-time properties

- Regression tests for zpool(8) command.

Obtained from:	OpenSolaris
@
text
@d83 1
a83 1
	${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC}
@

