svn commit: r245569 - in projects/bhyve: . bin/cp contrib/gcc/config/arm etc/mtree etc/rc.d gnu/lib/csu gnu/lib/libgcc gnu/lib/libgcov gnu/lib/libstdc++ gnu/usr.bin/cc gnu/usr.bin/cc/c++filt gnu/us...
Neel Natu
neel at FreeBSD.org
Thu Jan 17 19:08:27 UTC 2013
Author: neel
Date: Thu Jan 17 19:08:20 2013
New Revision: 245569
URL: http://svnweb.freebsd.org/changeset/base/245569
Log:
IFC @ r245542
Added:
projects/bhyve/tools/build/options/WITH_ARM_EABI
- copied unchanged from r245542, head/tools/build/options/WITH_ARM_EABI
projects/bhyve/tools/build/options/WITH_OPENSSH_NONE_CIPHER
- copied unchanged from r245542, head/tools/build/options/WITH_OPENSSH_NONE_CIPHER
Modified:
projects/bhyve/ObsoleteFiles.inc
projects/bhyve/bin/cp/cp.c
projects/bhyve/contrib/gcc/config/arm/freebsd.h
projects/bhyve/etc/mtree/BSD.usr.dist
projects/bhyve/etc/rc.d/jail
projects/bhyve/gnu/lib/csu/Makefile
projects/bhyve/gnu/lib/libgcc/Makefile
projects/bhyve/gnu/lib/libgcov/Makefile
projects/bhyve/gnu/lib/libstdc++/Makefile
projects/bhyve/gnu/usr.bin/cc/Makefile.inc
projects/bhyve/gnu/usr.bin/cc/c++filt/Makefile
projects/bhyve/gnu/usr.bin/cc/cc1/Makefile
projects/bhyve/gnu/usr.bin/cc/cc1plus/Makefile
projects/bhyve/gnu/usr.bin/cc/cc_int/Makefile
projects/bhyve/gnu/usr.bin/cc/cc_tools/Makefile
projects/bhyve/gnu/usr.bin/cc/doc/Makefile
projects/bhyve/gnu/usr.bin/cc/gcov/Makefile
projects/bhyve/gnu/usr.bin/cc/include/Makefile
projects/bhyve/gnu/usr.bin/cc/libcpp/Makefile
projects/bhyve/gnu/usr.bin/cc/libdecnumber/Makefile
projects/bhyve/gnu/usr.bin/cc/libiberty/Makefile
projects/bhyve/sbin/geom/class/raid/graid.8
projects/bhyve/secure/lib/libssh/Makefile
projects/bhyve/secure/usr.bin/ssh/Makefile
projects/bhyve/secure/usr.sbin/sshd/Makefile
projects/bhyve/share/mk/bsd.man.mk
projects/bhyve/share/mk/bsd.own.mk
projects/bhyve/share/mk/bsd.prog.mk
projects/bhyve/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c
projects/bhyve/sys/dev/cxgbe/adapter.h
projects/bhyve/sys/dev/cxgbe/t4_main.c
projects/bhyve/sys/geom/raid/md_promise.c
projects/bhyve/sys/geom/raid/tr_concat.c
projects/bhyve/tools/tools/cxgbetool/cxgbetool.c
projects/bhyve/tools/tools/notescheck/notescheck.py
projects/bhyve/usr.bin/man/man.1
projects/bhyve/usr.bin/man/man.sh
Directory Properties:
projects/bhyve/ (props changed)
projects/bhyve/contrib/gcc/ (props changed)
projects/bhyve/gnu/lib/ (props changed)
projects/bhyve/gnu/usr.bin/cc/cc_tools/ (props changed)
projects/bhyve/sbin/ (props changed)
projects/bhyve/sys/ (props changed)
projects/bhyve/sys/cddl/contrib/opensolaris/ (props changed)
Modified: projects/bhyve/ObsoleteFiles.inc
==============================================================================
--- projects/bhyve/ObsoleteFiles.inc Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/ObsoleteFiles.inc Thu Jan 17 19:08:20 2013 (r245569)
@@ -38,6 +38,13 @@
# xargs -n1 | sort | uniq -d;
# done
+# 20130116: removed long unused directories for .1aout section manpages
+OLD_FILES+=usr/share/man/en.ISO8859-1/man1aout
+OLD_FILES+=usr/share/man/en.UTF-8/man1aout
+OLD_DIRS+=usr/share/man/man1aout
+OLD_DIRS+=usr/share/man/cat1aout
+OLD_DIRS+=usr/share/man/en.ISO8859-1/cat1aout
+OLD_DIRS+=usr/share/man/en.UTF-8/cat1aout
# 20121230: libdisk removed
OLD_FILES+=usr/share/man/man3/libdisk.3.gz usr/include/libdisk.h
OLD_FILES+=usr/lib/libdisk.a usr/lib32/libdisk.a
Modified: projects/bhyve/bin/cp/cp.c
==============================================================================
--- projects/bhyve/bin/cp/cp.c Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/bin/cp/cp.c Thu Jan 17 19:08:20 2013 (r245569)
@@ -98,30 +98,28 @@ main(int argc, char *argv[])
{
struct stat to_stat, tmp_stat;
enum op type;
- int Hflag, Lflag, Pflag, ch, fts_options, r, have_trailing_slash;
+ int Hflag, Lflag, ch, fts_options, r, have_trailing_slash;
char *target;
fts_options = FTS_NOCHDIR | FTS_PHYSICAL;
- Hflag = Lflag = Pflag = 0;
+ Hflag = Lflag = 0;
while ((ch = getopt(argc, argv, "HLPRafilnprvx")) != -1)
switch (ch) {
case 'H':
Hflag = 1;
- Lflag = Pflag = 0;
+ Lflag = 0;
break;
case 'L':
Lflag = 1;
- Hflag = Pflag = 0;
+ Hflag = 0;
break;
case 'P':
- Pflag = 1;
Hflag = Lflag = 0;
break;
case 'R':
Rflag = 1;
break;
case 'a':
- Pflag = 1;
pflag = 1;
Rflag = 1;
Hflag = Lflag = 0;
@@ -146,7 +144,7 @@ main(int argc, char *argv[])
break;
case 'r':
rflag = Lflag = 1;
- Hflag = Pflag = 0;
+ Hflag = 0;
break;
case 'v':
vflag = 1;
Modified: projects/bhyve/contrib/gcc/config/arm/freebsd.h
==============================================================================
--- projects/bhyve/contrib/gcc/config/arm/freebsd.h Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/contrib/gcc/config/arm/freebsd.h Thu Jan 17 19:08:20 2013 (r245569)
@@ -29,8 +29,13 @@
{ "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
#undef SUBTARGET_EXTRA_ASM_SPEC
+#ifdef TARGET_ARM_EABI
+#define SUBTARGET_EXTRA_ASM_SPEC \
+ "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+#else
#define SUBTARGET_EXTRA_ASM_SPEC \
"-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
+#endif
/* Default to full FPA if -mhard-float is specified. */
#undef SUBTARGET_ASM_FLOAT_SPEC
@@ -61,8 +66,25 @@
#define TARGET_ENDIAN_DEFAULT 0
#endif
+#ifdef TARGET_ARM_EABI
+/* We default to a soft-float ABI so that binaries can run on all
+ target hardware. */
+#undef TARGET_DEFAULT_FLOAT_ABI
+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
+
+#undef ARM_DEFAULT_ABI
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ FBSD_TARGET_OS_CPP_BUILTINS(); \
+ TARGET_BPABI_CPP_BUILTINS(); \
+ } \
+ while (false)
+#else
/* Default it to use ATPCS with soft-VFP. */
-#undef TARGET_DEFAULT
#define TARGET_DEFAULT \
(MASK_APCS_FRAME \
| TARGET_ENDIAN_DEFAULT)
@@ -70,6 +92,10 @@
#undef ARM_DEFAULT_ABI
#define ARM_DEFAULT_ABI ARM_ABI_ATPCS
+#undef FPUTYPE_DEFAULT
+#define FPUTYPE_DEFAULT FPUTYPE_VFP
+#endif
+
/* Define the actual types of some ANSI-mandated types.
Needs to agree with <machine/ansi.h>. GCC defaults come from c-decl.c,
c-common.c, and config/<arch>/<arch>.h. */
@@ -134,5 +160,3 @@ do \
} \
while (0)
-#undef FPUTYPE_DEFAULT
-#define FPUTYPE_DEFAULT FPUTYPE_VFP
Modified: projects/bhyve/etc/mtree/BSD.usr.dist
==============================================================================
--- projects/bhyve/etc/mtree/BSD.usr.dist Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/etc/mtree/BSD.usr.dist Thu Jan 17 19:08:20 2013 (r245569)
@@ -756,8 +756,6 @@
/set uname=man
cat1
..
- cat1aout
- ..
cat2
..
cat3
@@ -795,8 +793,6 @@
en.ISO8859-1 uname=root
cat1
..
- cat1aout
- ..
cat2
..
cat3
@@ -835,8 +831,6 @@
en.UTF-8 uname=root
cat1
..
- cat1aout
- ..
cat2
..
cat3
@@ -913,8 +907,6 @@
..
man1
..
- man1aout
- ..
man2
..
man3
Modified: projects/bhyve/etc/rc.d/jail
==============================================================================
--- projects/bhyve/etc/rc.d/jail Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/etc/rc.d/jail Thu Jan 17 19:08:20 2013 (r245569)
@@ -509,7 +509,7 @@ jail_handle_ips_option()
esac
case "${_type}" in
inet) ;;
- inet6) ;;
+ inet6) ipv6_address_count=$((ipv6_address_count + 1)) ;;
*) warn "Could not determine address family. Not going" \
"to ${_action} address '${_addr}' for ${_jail}."
continue
@@ -546,6 +546,7 @@ jail_ips()
esac
# Handle addresses.
+ ipv6_address_count=0
jail_handle_ips_option ${_action} "${_ip}"
# Handle jail_xxx_ip_multi<N>
alias=0
@@ -558,6 +559,12 @@ jail_ips()
;;
esac
done
+ case ${ipv6_address_count} in
+ 0) ;;
+ *) # Sleep 1 second to let DAD complete before starting services.
+ sleep 1
+ ;;
+ esac
}
jail_prestart()
Modified: projects/bhyve/gnu/lib/csu/Makefile
==============================================================================
--- projects/bhyve/gnu/lib/csu/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/lib/csu/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -24,6 +24,10 @@ CFLAGS+= -I${GCCLIB}/include -I${GCCDIR}
CRTS_CFLAGS= -DCRTSTUFFS_O -DSHARED ${PICFLAG}
MKDEP= -DCRT_BEGIN
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+= -DTARGET_ARM_EABI
+.endif
+
.if ${MACHINE_CPUARCH} == "ia64"
BEGINSRC= crtbegin.asm
ENDSRC= crtend.asm
Modified: projects/bhyve/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/bhyve/gnu/lib/libgcc/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/lib/libgcc/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -15,6 +15,10 @@ MK_SSP= no
.include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+= -DTARGET_ARM_EABI
+.endif
+
.if ${TARGET_CPUARCH} == "mips"
LIB= gcc
.endif
@@ -55,10 +59,13 @@ LIB2FUNCS+= _fixuns${mode}si
.endfor
# Likewise double-word routines.
+.if ${TARGET_CPUARCH} != "arm" || ${MK_ARM_EABI} == "no"
+# These are implemented in an ARM specific file but will not be filtered out
.for mode in sf df xf tf
LIB2FUNCS+= _fix${mode}di _fixuns${mode}di
LIB2FUNCS+= _floatdi${mode} _floatundi${mode}
.endfor
+.endif
LIB2ADD = $(LIB2FUNCS_EXTRA)
LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
@@ -115,15 +122,14 @@ CFLAGS+= -fheinous-gnu-extensions
LIB1ASMSRC = lib1funcs.asm
LIB1ASMFUNCS = _dvmd_tls _bb_init_func
-LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+.if ${MK_ARM_EABI} != "no"
+LIB1ASMFUNCS+= _addsubdf3 _addsubsf3 _cmpdf2 _cmpsf2 _fixdfsi _fixsfsi \
+ _fixunsdfsi _fixunsdfsi _muldivdf3 _muldivsf3 _udivsi3
-# Not now
-#LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func
-#LIB1ASMFUNCS+= _call_via_rX _interwork_call_via_rX \
-# _lshrdi3 _ashrdi3 _ashldi3 \
-# _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-# _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-# _fixsfsi _fixunssfsi _floatdidf _floatdisf
+LIB2ADDEH = unwind-arm.c libunwind.S pr-support.c unwind-c.c
+.else
+LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
+.endif
.endif
.if ${TARGET_CPUARCH} == mips
@@ -329,6 +335,9 @@ CLEANFILES += cs-*.h option*
SHLIB_MKMAP = ${GCCDIR}/mkmap-symver.awk
SHLIB_MKMAP_OPTS =
SHLIB_MAPFILES = ${GCCDIR}/libgcc-std.ver
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+SHLIB_MAPFILES += ${GCCDIR}/config/arm/libgcc-bpabi.ver
+.endif
VERSION_MAP = libgcc.map
libgcc.map: ${SHLIB_MKMAP} ${SHLIB_MAPFILES} ${SOBJS} ${OBJS:R:S/$/.So/}
Modified: projects/bhyve/gnu/lib/libgcov/Makefile
==============================================================================
--- projects/bhyve/gnu/lib/libgcov/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/lib/libgcov/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -15,6 +15,11 @@ CFLAGS+= -DIN_GCC -DIN_LIBGCC2 -D__GCC_F
CFLAGS+= -D_PTHREADS -DGTHREAD_USE_WEAK
CFLAGS+= -I${.CURDIR}/../../usr.bin/cc/cc_tools \
-I${GCCLIB}/include -I${GCCDIR}/config -I${GCCDIR} -I.
+
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+= -DTARGET_ARM_EABI
+.endif
+
#
# Library members defined in libgcov.c.
# Defined in libgcov.c, included only in gcov library
Modified: projects/bhyve/gnu/lib/libstdc++/Makefile
==============================================================================
--- projects/bhyve/gnu/lib/libstdc++/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/lib/libstdc++/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
GCCVER= 4.2
GCCDIR= ${.CURDIR}/../../../contrib/gcc
GCCLIB= ${.CURDIR}/../../../contrib/gcclibs
@@ -14,7 +16,7 @@ LIB= stdc++
SHLIB_MAJOR= 6
CFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H
-.if ${MACHINE_CPUARCH} == "arm"
+.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} == "no"
CFLAGS+= -D_GLIBCXX_SJLJ_EXCEPTIONS=1
.endif
CFLAGS+= -I${.CURDIR} -I${SUPDIR} -I${GCCDIR} -I${SRCDIR}/include
@@ -594,7 +596,13 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
CLEANFILES+= ${THRHDRS}
+.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
+.else
unwind.h: ${GCCDIR}/unwind-generic.h
+.endif
+
+unwind.h:
ln -sf ${.ALLSRC} ${.TARGET}
SRCS+= unwind.h
Modified: projects/bhyve/gnu/usr.bin/cc/Makefile.inc
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/Makefile.inc Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/Makefile.inc Thu Jan 17 19:08:20 2013 (r245569)
@@ -26,6 +26,10 @@ CSTD?= gnu89
CFLAGS+= -DCROSS_COMPILE
.endif
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+CFLAGS+= -DTARGET_ARM_EABI
+.endif
+
.if ${TARGET_ARCH} == "armeb" || ${TARGET_ARCH} == "armv6eb"
CFLAGS += -DTARGET_ENDIAN_DEFAULT=MASK_BIG_END
.endif
Modified: projects/bhyve/gnu/usr.bin/cc/c++filt/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/c++filt/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/c++filt/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,8 @@
# $FreeBSD$
+NO_MAN=
+.include <bsd.own.mk>
+
.include "../Makefile.inc"
.include "../Makefile.fe"
@@ -7,7 +10,6 @@
PROG= c++filt
SRCS= cp-demangle.c
-NO_MAN=
CFLAGS+= -DSTANDALONE_DEMANGLER -DVERSION=\"$(GCC_VERSION)\"
Modified: projects/bhyve/gnu/usr.bin/cc/cc1/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/cc1/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/cc1/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,9 +1,10 @@
# $FreeBSD$
-.include "../Makefile.inc"
NO_MAN=
.include <bsd.own.mk>
+.include "../Makefile.inc"
+
.PATH: ${GCCDIR}
PROG= cc1
Modified: projects/bhyve/gnu/usr.bin/cc/cc1plus/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/cc1plus/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/cc1plus/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,9 +1,10 @@
# $FreeBSD$
-.include "../Makefile.inc"
NO_MAN=
.include <bsd.own.mk>
+.include "../Makefile.inc"
+
.PATH: ${GCCDIR}/cp ${GCCDIR}
PROG= cc1plus
Modified: projects/bhyve/gnu/usr.bin/cc/cc_int/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/cc_int/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/cc_int/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.include "../Makefile.inc"
.include "../Makefile.ver"
Modified: projects/bhyve/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/cc_tools/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/cc_tools/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -51,6 +51,9 @@ TARGET_INC+= ${GCC_CPU}/elf.h
.endif
.if ${TARGET_CPUARCH} == "arm"
TARGET_INC+= ${GCC_CPU}/aout.h
+.if ${MK_ARM_EABI} != "no"
+TARGET_INC+= ${GCC_CPU}/bpabi.h
+.endif
.endif
.if ${TARGET_ARCH} == "powerpc64"
TARGET_INC+= ${GCC_CPU}/biarch64.h
@@ -349,7 +352,13 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
GENSRCS+= gthr-default.h
+.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
+unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
+.else
unwind.h: ${GCCDIR}/unwind-generic.h
+.endif
+
+unwind.h:
ln -sf ${.ALLSRC} ${.TARGET}
GENSRCS+= unwind.h
Modified: projects/bhyve/gnu/usr.bin/cc/doc/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/doc/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/doc/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.include "../Makefile.inc"
.include "../Makefile.ver"
Modified: projects/bhyve/gnu/usr.bin/cc/gcov/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/gcov/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/gcov/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.include "../Makefile.inc"
.include "../Makefile.ver"
Modified: projects/bhyve/gnu/usr.bin/cc/include/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/include/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/include/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.include "../Makefile.inc"
INCSDIR=${INCLUDEDIR}/gcc/${GCCVER}
Modified: projects/bhyve/gnu/usr.bin/cc/libcpp/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/libcpp/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/libcpp/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
# Use our headers in preference to ones from ../cc_tools.
CFLAGS+= -I${.CURDIR} -I.
Modified: projects/bhyve/gnu/usr.bin/cc/libdecnumber/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/libdecnumber/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/libdecnumber/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
# Use our headers in preference to ones from ../cc_tools.
CFLAGS+= -I${.CURDIR} -I.
Modified: projects/bhyve/gnu/usr.bin/cc/libiberty/Makefile
==============================================================================
--- projects/bhyve/gnu/usr.bin/cc/libiberty/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/gnu/usr.bin/cc/libiberty/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
#
# Make sure we will pick up our config.h file first, not the one from
# cc_tools.
Modified: projects/bhyve/sbin/geom/class/raid/graid.8
==============================================================================
--- projects/bhyve/sbin/geom/class/raid/graid.8 Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/sbin/geom/class/raid/graid.8 Thu Jan 17 19:08:20 2013 (r245569)
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd September 13, 2012
+.Dd January 16, 2013
.Dt GRAID 8
.Os
.Sh NAME
@@ -274,7 +274,6 @@ complete it there.
Do not run GEOM RAID class on migrating volumes under pain of possible data
corruption!
.Sh 2TiB BARRIERS
-Promise metadata format does not support disks above 2TiB.
NVIDIA metadata format does not support volumes above 2TiB.
.Sh SYSCTL VARIABLES
The following
Modified: projects/bhyve/secure/lib/libssh/Makefile
==============================================================================
--- projects/bhyve/secure/lib/libssh/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/secure/lib/libssh/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -38,6 +38,10 @@ DPADD+= ${LIBGSSAPI} ${LIBKRB5} ${LIBHX5
LDADD+= -lgssapi -lkrb5 -lhx509 -lasn1 -lcom_err -lmd -lroken
.endif
+.if ${MK_OPENSSH_NONE_CIPHER} != "no"
+CFLAGS+= -DNONE_CIPHER_ENABLED
+.endif
+
NO_LINT=
DPADD+= ${LIBCRYPTO} ${LIBCRYPT}
Modified: projects/bhyve/secure/usr.bin/ssh/Makefile
==============================================================================
--- projects/bhyve/secure/usr.bin/ssh/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/secure/usr.bin/ssh/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -25,6 +25,10 @@ DPADD+= ${LIBGSSAPI}
LDADD+= -lgssapi
.endif
+.if ${MK_OPENSSH_NONE_CIPHER} != "no"
+CFLAGS+= -DNONE_CIPHER_ENABLED
+.endif
+
DPADD+= ${LIBCRYPT} ${LIBCRYPTO}
LDADD+= -lcrypt -lcrypto
Modified: projects/bhyve/secure/usr.sbin/sshd/Makefile
==============================================================================
--- projects/bhyve/secure/usr.sbin/sshd/Makefile Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/secure/usr.sbin/sshd/Makefile Thu Jan 17 19:08:20 2013 (r245569)
@@ -40,6 +40,10 @@ DPADD+= ${LIBGSSAPI_KRB5} ${LIBGSSAPI}
LDADD+= -lgssapi_krb5 -lgssapi -lkrb5 -lasn1
.endif
+.if ${MK_OPENSSH_NONE_CIPHER} != "no"
+CFLAGS+= -DNONE_CIPHER_ENABLED
+.endif
+
DPADD+= ${LIBCRYPTO} ${LIBCRYPT}
LDADD+= -lcrypto -lcrypt
Modified: projects/bhyve/share/mk/bsd.man.mk
==============================================================================
--- projects/bhyve/share/mk/bsd.man.mk Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/share/mk/bsd.man.mk Thu Jan 17 19:08:20 2013 (r245569)
@@ -62,7 +62,7 @@ MROFF_CMD?= groff -Tascii -mtty-char -ma
MCOMPRESS_CMD?= ${COMPRESS_CMD}
MCOMPRESS_EXT?= ${COMPRESS_EXT}
-SECTIONS= 1 1aout 2 3 4 5 6 7 8 9
+SECTIONS= 1 2 3 4 5 6 7 8 9
.SUFFIXES: ${SECTIONS:S/^/./g}
# Backwards compatibility.
Modified: projects/bhyve/share/mk/bsd.own.mk
==============================================================================
--- projects/bhyve/share/mk/bsd.own.mk Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/share/mk/bsd.own.mk Thu Jan 17 19:08:20 2013 (r245569)
@@ -343,6 +343,7 @@ __DEFAULT_YES_OPTIONS = \
ZONEINFO
__DEFAULT_NO_OPTIONS = \
+ ARM_EABI \
BIND_IDN \
BIND_LARGE_FILE \
BIND_LIBS \
@@ -360,6 +361,7 @@ __DEFAULT_NO_OPTIONS = \
NMTREE \
NAND \
OFED \
+ OPENSSH_NONE_CIPHER \
SHARED_TOOLCHAIN
#
Modified: projects/bhyve/share/mk/bsd.prog.mk
==============================================================================
--- projects/bhyve/share/mk/bsd.prog.mk Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/share/mk/bsd.prog.mk Thu Jan 17 19:08:20 2013 (r245569)
@@ -95,8 +95,7 @@ ${PROG}: ${OBJS}
.if ${MK_MAN} != "no" && !defined(MAN) && \
!defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
!defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
- !defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
- !defined(MAN1aout)
+ !defined(MAN7) && !defined(MAN8) && !defined(MAN9)
MAN= ${PROG}.1
MAN1= ${MAN}
.endif
Modified: projects/bhyve/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c
==============================================================================
--- projects/bhyve/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Thu Jan 17 19:08:20 2013 (r245569)
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Portions Copyright 2011 Martin Matuska <mm at FreeBSD.org>
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
*/
#include <sys/zfs_context.h>
@@ -33,7 +33,76 @@
#include <sys/callb.h>
/*
- * Pool-wide transaction groups.
+ * ZFS Transaction Groups
+ * ----------------------
+ *
+ * ZFS transaction groups are, as the name implies, groups of transactions
+ * that act on persistent state. ZFS asserts consistency at the granularity of
+ * these transaction groups. Each successive transaction group (txg) is
+ * assigned a 64-bit consecutive identifier. There are three active
+ * transaction group states: open, quiescing, or syncing. At any given time,
+ * there may be an active txg associated with each state; each active txg may
+ * either be processing, or blocked waiting to enter the next state. There may
+ * be up to three active txgs, and there is always a txg in the open state
+ * (though it may be blocked waiting to enter the quiescing state). In broad
+ * strokes, transactions — operations that change in-memory structures — are
+ * accepted into the txg in the open state, and are completed while the txg is
+ * in the open or quiescing states. The accumulated changes are written to
+ * disk in the syncing state.
+ *
+ * Open
+ *
+ * When a new txg becomes active, it first enters the open state. New
+ * transactions — updates to in-memory structures — are assigned to the
+ * currently open txg. There is always a txg in the open state so that ZFS can
+ * accept new changes (though the txg may refuse new changes if it has hit
+ * some limit). ZFS advances the open txg to the next state for a variety of
+ * reasons such as it hitting a time or size threshold, or the execution of an
+ * administrative action that must be completed in the syncing state.
+ *
+ * Quiescing
+ *
+ * After a txg exits the open state, it enters the quiescing state. The
+ * quiescing state is intended to provide a buffer between accepting new
+ * transactions in the open state and writing them out to stable storage in
+ * the syncing state. While quiescing, transactions can continue their
+ * operation without delaying either of the other states. Typically, a txg is
+ * in the quiescing state very briefly since the operations are bounded by
+ * software latencies rather than, say, slower I/O latencies. After all
+ * transactions complete, the txg is ready to enter the next state.
+ *
+ * Syncing
+ *
+ * In the syncing state, the in-memory state built up during the open and (to
+ * a lesser degree) the quiescing states is written to stable storage. The
+ * process of writing out modified data can, in turn modify more data. For
+ * example when we write new blocks, we need to allocate space for them; those
+ * allocations modify metadata (space maps)... which themselves must be
+ * written to stable storage. During the sync state, ZFS iterates, writing out
+ * data until it converges and all in-memory changes have been written out.
+ * The first such pass is the largest as it encompasses all the modified user
+ * data (as opposed to filesystem metadata). Subsequent passes typically have
+ * far less data to write as they consist exclusively of filesystem metadata.
+ *
+ * To ensure convergence, after a certain number of passes ZFS begins
+ * overwriting locations on stable storage that had been allocated earlier in
+ * the syncing state (and subsequently freed). ZFS usually allocates new
+ * blocks to optimize for large, continuous, writes. For the syncing state to
+ * converge however it must complete a pass where no new blocks are allocated
+ * since each allocation requires a modification of persistent metadata.
+ * Further, to hasten convergence, after a prescribed number of passes, ZFS
+ * also defers frees, and stops compressing.
+ *
+ * In addition to writing out user data, we must also execute synctasks during
+ * the syncing context. A synctask is the mechanism by which some
+ * administrative activities work such as creating and destroying snapshots or
+ * datasets. Note that when a synctask is initiated it enters the open txg,
+ * and ZFS then pushes that txg as quickly as possible to completion of the
+ * syncing state in order to reduce the latency of the administrative
+ * activity. To complete the syncing state, ZFS writes out a new uberblock,
+ * the root of the tree of blocks that comprise all state stored on the ZFS
+ * pool. Finally, if there is a quiesced txg waiting, we signal that it can
+ * now transition to the syncing state.
*/
static void txg_sync_thread(void *arg);
Modified: projects/bhyve/sys/dev/cxgbe/adapter.h
==============================================================================
--- projects/bhyve/sys/dev/cxgbe/adapter.h Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/sys/dev/cxgbe/adapter.h Thu Jan 17 19:08:20 2013 (r245569)
@@ -647,18 +647,18 @@ struct adapter {
#define TXQ_LOCK_ASSERT_OWNED(txq) EQ_LOCK_ASSERT_OWNED(&(txq)->eq)
#define TXQ_LOCK_ASSERT_NOTOWNED(txq) EQ_LOCK_ASSERT_NOTOWNED(&(txq)->eq)
-#define for_each_txq(pi, iter, txq) \
- txq = &pi->adapter->sge.txq[pi->first_txq]; \
- for (iter = 0; iter < pi->ntxq; ++iter, ++txq)
-#define for_each_rxq(pi, iter, rxq) \
- rxq = &pi->adapter->sge.rxq[pi->first_rxq]; \
- for (iter = 0; iter < pi->nrxq; ++iter, ++rxq)
-#define for_each_ofld_txq(pi, iter, ofld_txq) \
- ofld_txq = &pi->adapter->sge.ofld_txq[pi->first_ofld_txq]; \
- for (iter = 0; iter < pi->nofldtxq; ++iter, ++ofld_txq)
-#define for_each_ofld_rxq(pi, iter, ofld_rxq) \
- ofld_rxq = &pi->adapter->sge.ofld_rxq[pi->first_ofld_rxq]; \
- for (iter = 0; iter < pi->nofldrxq; ++iter, ++ofld_rxq)
+#define for_each_txq(pi, iter, q) \
+ q = &pi->adapter->sge.txq[pi->first_txq]; \
+ for (iter = 0; iter < pi->ntxq; ++iter, ++q)
+#define for_each_rxq(pi, iter, q) \
+ q = &pi->adapter->sge.rxq[pi->first_rxq]; \
+ for (iter = 0; iter < pi->nrxq; ++iter, ++q)
+#define for_each_ofld_txq(pi, iter, q) \
+ q = &pi->adapter->sge.ofld_txq[pi->first_ofld_txq]; \
+ for (iter = 0; iter < pi->nofldtxq; ++iter, ++q)
+#define for_each_ofld_rxq(pi, iter, q) \
+ q = &pi->adapter->sge.ofld_rxq[pi->first_ofld_rxq]; \
+ for (iter = 0; iter < pi->nofldrxq; ++iter, ++q)
/* One for errors, one for firmware events */
#define T4_EXTRA_INTR 2
Modified: projects/bhyve/sys/dev/cxgbe/t4_main.c
==============================================================================
--- projects/bhyve/sys/dev/cxgbe/t4_main.c Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/sys/dev/cxgbe/t4_main.c Thu Jan 17 19:08:20 2013 (r245569)
@@ -5492,12 +5492,56 @@ t4_ioctl(struct cdev *dev, unsigned long
rc = read_i2c(sc, (struct t4_i2c_data *)data);
break;
case CHELSIO_T4_CLEAR_STATS: {
+ int i;
u_int port_id = *(uint32_t *)data;
+ struct port_info *pi;
if (port_id >= sc->params.nports)
return (EINVAL);
+ /* MAC stats */
t4_clr_port_stats(sc, port_id);
+
+ pi = sc->port[port_id];
+ if (pi->flags & PORT_INIT_DONE) {
+ struct sge_rxq *rxq;
+ struct sge_txq *txq;
+ struct sge_wrq *wrq;
+
+ for_each_rxq(pi, i, rxq) {
+#if defined(INET) || defined(INET6)
+ rxq->lro.lro_queued = 0;
+ rxq->lro.lro_flushed = 0;
+#endif
+ rxq->rxcsum = 0;
+ rxq->vlan_extraction = 0;
+ }
+
+ for_each_txq(pi, i, txq) {
+ txq->txcsum = 0;
+ txq->tso_wrs = 0;
+ txq->vlan_insertion = 0;
+ txq->imm_wrs = 0;
+ txq->sgl_wrs = 0;
+ txq->txpkt_wrs = 0;
+ txq->txpkts_wrs = 0;
+ txq->txpkts_pkts = 0;
+ txq->no_dmamap = 0;
+ txq->no_desc = 0;
+ }
+
+#ifdef TCP_OFFLOAD
+ /* nothing to clear for each ofld_rxq */
+
+ for_each_ofld_txq(pi, i, wrq) {
+ wrq->tx_wrs = 0;
+ wrq->no_desc = 0;
+ }
+#endif
+ wrq = &sc->sge.ctrlq[pi->port_id];
+ wrq->tx_wrs = 0;
+ wrq->no_desc = 0;
+ }
break;
}
default:
Modified: projects/bhyve/sys/geom/raid/md_promise.c
==============================================================================
--- projects/bhyve/sys/geom/raid/md_promise.c Thu Jan 17 19:03:24 2013 (r245568)
+++ projects/bhyve/sys/geom/raid/md_promise.c Thu Jan 17 19:08:20 2013 (r245569)
@@ -84,7 +84,7 @@ struct promise_raid_conf {
struct promise_raid_disk disk; /* This subdisk info. */
uint32_t disk_offset; /* Subdisk offset. */
uint32_t disk_sectors; /* Subdisk size */
- uint32_t rebuild_lba; /* Rebuild position. */
+ uint32_t disk_rebuild; /* Rebuild position. */
uint16_t generation; /* Generation number. */
uint8_t status; /* Volume status. */
#define PROMISE_S_VALID 0x01
@@ -123,7 +123,18 @@ struct promise_raid_conf {
uint32_t magic_4;
uint32_t magic_5;
uint32_t total_sectors_high;
- uint32_t filler3[324];
+ uint8_t magic_6;
+ uint8_t sector_size;
+ uint16_t magic_7;
+ uint32_t magic_8[31];
+ uint32_t backup_time;
+ uint16_t magic_9;
+ uint32_t disk_offset_high;
+ uint32_t disk_sectors_high;
+ uint32_t disk_rebuild_high;
+ uint16_t magic_10;
+ uint32_t magic_11[3];
+ uint32_t filler3[284];
uint32_t checksum;
} __packed;
@@ -191,7 +202,7 @@ g_raid_md_promise_print(struct promise_r
meta->disk.device, meta->disk.id);
printf("disk_offset %u\n", meta->disk_offset);
printf("disk_sectors %u\n", meta->disk_sectors);
- printf("rebuild_lba %u\n", meta->rebuild_lba);
+ printf("disk_rebuild %u\n", meta->disk_rebuild);
printf("generation %u\n", meta->generation);
printf("status 0x%02x\n", meta->status);
printf("type %u\n", meta->type);
@@ -217,6 +228,11 @@ g_raid_md_promise_print(struct promise_r
printf("magic_4 0x%08x\n", meta->magic_4);
printf("magic_5 0x%08x\n", meta->magic_5);
printf("total_sectors_high 0x%08x\n", meta->total_sectors_high);
+ printf("sector_size %u\n", meta->sector_size);
+ printf("backup_time %d\n", meta->backup_time);
+ printf("disk_offset_high 0x%08x\n", meta->disk_offset_high);
+ printf("disk_sectors_high 0x%08x\n", meta->disk_sectors_high);
+ printf("disk_rebuild_high 0x%08x\n", meta->disk_rebuild_high);
printf("=================================================\n");
}
@@ -244,9 +260,9 @@ promise_meta_find_disk(struct promise_ra
static int
promise_meta_unused_range(struct promise_raid_conf **metaarr, int nsd,
- uint32_t sectors, uint32_t *off, uint32_t *size)
+ off_t sectors, off_t *off, off_t *size)
{
- uint32_t coff, csize;
+ off_t coff, csize, tmp;
int i, j;
sectors -= 131072;
@@ -257,10 +273,10 @@ promise_meta_unused_range(struct promise
i = 0;
while (1) {
for (j = 0; j < nsd; j++) {
- if (metaarr[j]->disk_offset >= coff) {
- csize = MIN(csize,
- metaarr[j]->disk_offset - coff);
- }
+ tmp = ((off_t)metaarr[j]->disk_offset_high << 32) +
+ metaarr[j]->disk_offset;
+ if (tmp >= coff)
+ csize = MIN(csize, tmp - coff);
}
if (csize > *size) {
*off = coff;
@@ -268,7 +284,10 @@ promise_meta_unused_range(struct promise
}
if (i >= nsd)
break;
- coff = metaarr[i]->disk_offset + metaarr[i]->disk_sectors;
+ coff = ((off_t)metaarr[i]->disk_offset_high << 32) +
+ metaarr[i]->disk_offset +
+ ((off_t)metaarr[i]->disk_sectors_high << 32) +
+ metaarr[i]->disk_sectors;
csize = sectors - coff;
i++;
};
@@ -369,6 +388,26 @@ next:
return (subdisks);
}
+ /* Remove filler garbage from fields used in newer metadata. */
+ if (meta->disk_offset_high == 0x8b8c8d8e &&
+ meta->disk_sectors_high == 0x8788898a &&
+ meta->disk_rebuild_high == 0x83848586) {
+ meta->disk_offset_high = 0;
+ meta->disk_sectors_high = 0;
+ if (meta->disk_rebuild == UINT32_MAX)
+ meta->disk_rebuild_high = UINT32_MAX;
+ else
+ meta->disk_rebuild_high = 0;
+ if (meta->total_sectors_high == 0x15161718) {
+ meta->total_sectors_high = 0;
+ meta->backup_time = 0;
+ if (meta->rebuild_lba64 == 0x2122232425262728)
+ meta->rebuild_lba64 = UINT64_MAX;
+ }
+ }
+ if (meta->sector_size < 1 || meta->sector_size > 8)
+ meta->sector_size = 1;
+
/* Save this part and look for next. */
*metaarr = meta;
metaarr++;
@@ -386,8 +425,9 @@ promise_meta_write(struct g_consumer *cp
struct g_provider *pp;
struct promise_raid_conf *meta;
char *buf;
+ off_t off, size;
int error, i, subdisk, fake;
- uint32_t checksum, *ptr, off, size;
+ uint32_t checksum, *ptr;
pp = cp->provider;
subdisk = 0;
@@ -409,9 +449,12 @@ next:
meta->disk.flags = PROMISE_F_ONLINE | PROMISE_F_VALID;
meta->disk.number = 0xff;
arc4rand(&meta->disk.id, sizeof(meta->disk.id), 0);
- meta->disk_offset = off;
- meta->disk_sectors = size;
- meta->rebuild_lba = UINT32_MAX;
+ meta->disk_offset_high = off >> 32;
+ meta->disk_offset = (uint32_t)off;
+ meta->disk_sectors_high = size >> 32;
+ meta->disk_sectors = (uint32_t)size;
+ meta->disk_rebuild_high = UINT32_MAX;
+ meta->disk_rebuild = UINT32_MAX;
fake = 1;
}
if (meta != NULL) {
@@ -464,6 +507,7 @@ static int
promise_meta_write_spare(struct g_consumer *cp)
{
struct promise_raid_conf *meta;
+ off_t tmp;
int error;
meta = malloc(sizeof(*meta), M_MD_PROMISE, M_WAITOK | M_ZERO);
@@ -473,9 +517,11 @@ promise_meta_write_spare(struct g_consum
meta->disk.flags = PROMISE_F_SPARE | PROMISE_F_ONLINE | PROMISE_F_VALID;
meta->disk.number = 0xff;
arc4rand(&meta->disk.id, sizeof(meta->disk.id), 0);
- meta->disk_sectors = cp->provider->mediasize / cp->provider->sectorsize;
- meta->disk_sectors -= 131072;
- meta->rebuild_lba = UINT32_MAX;
+ tmp = cp->provider->mediasize / cp->provider->sectorsize - 131072;
+ meta->disk_sectors_high = tmp >> 32;
+ meta->disk_sectors = (uint32_t)tmp;
+ meta->disk_rebuild_high = UINT32_MAX;
+ meta->disk_rebuild = UINT32_MAX;
error = promise_meta_write(cp, &meta, 1);
free(meta, M_MD_PROMISE);
return (error);
@@ -617,9 +663,8 @@ g_raid_md_promise_start_disk(struct g_ra
struct g_raid_md_promise_perdisk *pd;
struct g_raid_md_promise_pervolume *pv;
struct promise_raid_conf *meta;
- off_t size;
+ off_t eoff, esize, size;
int disk_pos, md_disk_pos, i, resurrection = 0;
- uint32_t eoff, esize;
sc = disk->d_softc;
pd = (struct g_raid_md_promise_perdisk *)disk->d_md_data;
@@ -729,8 +774,10 @@ nofit:
sd->sd_offset = (off_t)eoff * 512;
sd->sd_size = (off_t)esize * 512;
} else {
- sd->sd_offset = (off_t)pd->pd_meta[sdn]->disk_offset * 512;
- sd->sd_size = (off_t)pd->pd_meta[sdn]->disk_sectors * 512;
+ sd->sd_offset = (((off_t)pd->pd_meta[sdn]->disk_offset_high
+ << 32) + pd->pd_meta[sdn]->disk_offset) * 512;
+ sd->sd_size = (((off_t)pd->pd_meta[sdn]->disk_sectors_high
+ << 32) + pd->pd_meta[sdn]->disk_sectors) * 512;
}
if (resurrection) {
@@ -749,7 +796,8 @@ nofit:
sd->sd_rebuild_pos = 0;
else {
sd->sd_rebuild_pos =
- (off_t)pd->pd_meta[sdn]->rebuild_lba * 512;
+ (((off_t)pd->pd_meta[sdn]->disk_rebuild_high << 32) +
+ pd->pd_meta[sdn]->disk_rebuild) * 512;
}
} else if (!(meta->disks[md_disk_pos].flags & PROMISE_F_ONLINE)) {
/* Rebuilding disk. */
@@ -875,13 +923,15 @@ g_raid_md_promise_start(struct g_raid_vo
vol->v_disks_count = meta->total_disks;
vol->v_mediasize = (off_t)meta->total_sectors * 512; //ZZZ
if (meta->total_sectors_high < 256) /* If value looks sane. */
- vol->v_mediasize |=
+ vol->v_mediasize +=
((off_t)meta->total_sectors_high << 32) * 512; //ZZZ
- vol->v_sectorsize = 512; //ZZZ
+ vol->v_sectorsize = 512 * meta->sector_size;
for (i = 0; i < vol->v_disks_count; i++) {
sd = &vol->v_subdisks[i];
- sd->sd_offset = (off_t)meta->disk_offset * 512; //ZZZ
- sd->sd_size = (off_t)meta->disk_sectors * 512; //ZZZ
+ sd->sd_offset = (((off_t)meta->disk_offset_high << 32) +
+ meta->disk_offset) * 512;
+ sd->sd_size = (((off_t)meta->disk_sectors_high << 32) +
+ meta->disk_sectors) * 512;
}
g_raid_start_volume(vol);
@@ -1213,9 +1263,8 @@ g_raid_md_ctl_promise(struct g_raid_md_o
const char *nodename, *verb, *volname, *levelname, *diskname;
char *tmp;
int *nargs, *force;
- off_t size, sectorsize, strip;
+ off_t esize, offs[PROMISE_MAX_DISKS], size, sectorsize, strip;
intmax_t *sizearg, *striparg;
- uint32_t offs[PROMISE_MAX_DISKS], esize;
int numdisks, i, len, level, qual;
int error;
@@ -1323,13 +1372,6 @@ g_raid_md_ctl_promise(struct g_raid_md_o
cp->private = disk;
g_topology_unlock();
- if (pp->mediasize / pp->sectorsize > UINT32_MAX) {
- gctl_error(req,
- "Disk '%s' is too big.", diskname);
- error = -8;
- break;
- }
-
g_raid_get_disk_info(disk);
/* Reserve some space for metadata. */
@@ -1394,10 +1436,6 @@ g_raid_md_ctl_promise(struct g_raid_md_o
gctl_error(req, "Size too small.");
return (-13);
}
- if (size > 0xffffffffllu * sectorsize) {
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list