Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Dec 2015 03:32:43 +0000 (UTC)
From:      Garrett Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r292974 - in user/ngie/stable-10-libnv: . etc/rc.d release share/mk sys/dev/isp usr.sbin/pw
Message-ID:  <201512310332.tBV3WhRQ034367@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Thu Dec 31 03:32:43 2015
New Revision: 292974
URL: https://svnweb.freebsd.org/changeset/base/292974

Log:
  MFstable/10 @ r292973

Modified:
  user/ngie/stable-10-libnv/Makefile.inc1
  user/ngie/stable-10-libnv/etc/rc.d/jail
  user/ngie/stable-10-libnv/release/Makefile
  user/ngie/stable-10-libnv/release/Makefile.vm
  user/ngie/stable-10-libnv/share/mk/bsd.own.mk
  user/ngie/stable-10-libnv/sys/dev/isp/isp.c
  user/ngie/stable-10-libnv/sys/dev/isp/isp_freebsd.c
  user/ngie/stable-10-libnv/sys/dev/isp/isp_freebsd.h
  user/ngie/stable-10-libnv/sys/dev/isp/isp_library.c
  user/ngie/stable-10-libnv/sys/dev/isp/isp_library.h
  user/ngie/stable-10-libnv/sys/dev/isp/isp_pci.c
  user/ngie/stable-10-libnv/sys/dev/isp/isp_sbus.c
  user/ngie/stable-10-libnv/sys/dev/isp/isp_target.c
  user/ngie/stable-10-libnv/sys/dev/isp/ispmbox.h
  user/ngie/stable-10-libnv/sys/dev/isp/ispvar.h
  user/ngie/stable-10-libnv/usr.sbin/pw/pw_conf.c
  user/ngie/stable-10-libnv/usr.sbin/pw/pw_group.c
  user/ngie/stable-10-libnv/usr.sbin/pw/pw_vpw.c
Directory Properties:
  user/ngie/stable-10-libnv/   (props changed)

Modified: user/ngie/stable-10-libnv/Makefile.inc1
==============================================================================
--- user/ngie/stable-10-libnv/Makefile.inc1	Thu Dec 31 03:28:14 2015	(r292973)
+++ user/ngie/stable-10-libnv/Makefile.inc1	Thu Dec 31 03:32:43 2015	(r292974)
@@ -913,13 +913,13 @@ packageworld:
 .for dist in base ${EXTRA_DISTRIBUTIONS}
 .if defined(NO_ROOT)
 	${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
-	    tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.txz \
-	    --exclude usr/lib/debug \
-	    @${DESTDIR}/${DISTDIR}/${dist}.meta
+	    tar cvf - --exclude usr/lib/debug \
+	    @${DESTDIR}/${DISTDIR}/${dist}.meta | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/${dist}.txz
 .else
 	${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
-	    tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.txz \
-	    --exclude usr/lib/debug .
+	    tar cvf - --exclude usr/lib/debug . | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/${dist}.txz
 .endif
 .endfor
 
@@ -927,12 +927,12 @@ packageworld:
 . for dist in base ${EXTRA_DISTRIBUTIONS}
 .  if defined(NO_ROOT)
 	${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
-	    tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.debug.txz \
-	    @${DESTDIR}/${DISTDIR}/${dist}.debug.meta
+	    tar cvf - @${DESTDIR}/${DISTDIR}/${dist}.debug.meta | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/${dist}.debug.txz
 .  else
 	${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
-	    tar cvJfL ${DESTDIR}/${DISTDIR}/${dist}.debug.txz \
-	    usr/lib/debug
+	    tar cvLf - usr/lib/debug | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/${dist}-debug.txz
 .  endif
 . endfor
 .endif
@@ -1141,19 +1141,21 @@ distributekernel distributekernel.debug:
 packagekernel:
 .if defined(NO_ROOT)
 	cd ${DESTDIR}/${DISTDIR}/kernel; \
-	    tar cvJf ${DESTDIR}/${DISTDIR}/kernel.txz \
-	    @${DESTDIR}/${DISTDIR}/kernel.meta
+	    tar cvf - @${DESTDIR}/${DISTDIR}/kernel.meta | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.txz
 .for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//}
 	cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
-	    tar cvJf ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.txz \
-	    @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta
+	    tar cvf - @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.txz
 .endfor
 .else
 	cd ${DESTDIR}/${DISTDIR}/kernel; \
-	    tar cvJf ${DESTDIR}/${DISTDIR}/kernel.txz .
+	    tar cvf - . | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.txz
 .for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//}
 	cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
-	    tar cvJf ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.txz .
+	    tar cvf - . | \
+	    ${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.txz
 .endfor
 .endif
 

Modified: user/ngie/stable-10-libnv/etc/rc.d/jail
==============================================================================
--- user/ngie/stable-10-libnv/etc/rc.d/jail	Thu Dec 31 03:28:14 2015	(r292973)
+++ user/ngie/stable-10-libnv/etc/rc.d/jail	Thu Dec 31 03:32:43 2015	(r292974)
@@ -28,16 +28,16 @@ extra_commands="config console status"
 
 need_dad_wait=
 
-# extract_var jail name param num defval
-#	Extract value from ${jail_$jail_$name} or ${jail_$name} and
+# extract_var jv name param num defval
+#	Extract value from ${jail_$jv_$name} or ${jail_$name} and
 #	set it to $param.  If not defined, $defval is used.
-#	When $num is [0-9]*, ${jail_$jail_$name$num} are looked up and
+#	When $num is [0-9]*, ${jail_$jv_$name$num} are looked up and
 #	$param is set by using +=.
 #	When $num is YN or NY, the value is interpret as boolean.
 extract_var()
 {
-	local i _j _name _param _num _def _name1 _name2
-	_j=$1
+	local i _jv _name _param _num _def _name1 _name2
+	_jv=$1
 	_name=$2
 	_param=$3
 	_num=$4
@@ -45,7 +45,7 @@ extract_var()
 
 	case $_num in
 	YN)
-		_name1=jail_${_j}_${_name}
+		_name1=jail_${_jv}_${_name}
 		_name2=jail_${_name}
 		eval $_name1=\"\${$_name1:-\${$_name2:-$_def}}\"
 		if checkyesno $_name1; then
@@ -55,7 +55,7 @@ extract_var()
 		fi
 	;;
 	NY)
-		_name1=jail_${_j}_${_name}
+		_name1=jail_${_jv}_${_name}
 		_name2=jail_${_name}
 		eval $_name1=\"\${$_name1:-\${$_name2:-$_def}}\"
 		if checkyesno $_name1; then
@@ -67,7 +67,7 @@ extract_var()
 	[0-9]*)
 		i=$_num
 		while : ; do
-			_name1=jail_${_j}_${_name}${i}
+			_name1=jail_${_jv}_${_name}${i}
 			_name2=jail_${_name}${i}
 			eval _tmpargs=\"\${$_name1:-\${$_name2:-$_def}}\"
 			if [ -n "$_tmpargs" ]; then 
@@ -79,7 +79,7 @@ extract_var()
 		done
 	;;
 	*)
-		_name1=jail_${_j}_${_name}
+		_name1=jail_${_jv}_${_name}
 		_name2=jail_${_name}
 		eval _tmpargs=\"\${$_name1:-\${$_name2:-$_def}}\"
 		if [ -n "$_tmpargs" ]; then
@@ -89,22 +89,23 @@ extract_var()
 	esac
 }
 
-# parse_options _j
+# parse_options _j _jv
 #	Parse options and create a temporary configuration file if necessary.
 #
 parse_options()
 {
-	local _j _p
+	local _j _jv _p
 	_j=$1
+	_jv=$2
 
 	_confwarn=0
 	if [ -z "$_j" ]; then
 		warn "parse_options: you must specify a jail"
 		return
 	fi
-	eval _jconf=\"\${jail_${_j}_conf:-/etc/jail.${_j}.conf}\"
-	eval _rootdir=\"\$jail_${_j}_rootdir\"
-	eval _hostname=\"\$jail_${_j}_hostname\"
+	eval _jconf=\"\${jail_${_jv}_conf:-/etc/jail.${_j}.conf}\"
+	eval _rootdir=\"\$jail_${_jv}_rootdir\"
+	eval _hostname=\"\$jail_${_jv}_hostname\"
 	if [ -z "$_rootdir" -o \
 	     -z "$_hostname" ]; then
 		if [ -r "$_jconf" ]; then
@@ -120,7 +121,7 @@ parse_options()
 		fi
 		return 1
 	fi
-	eval _ip=\"\$jail_${_j}_ip\"
+	eval _ip=\"\$jail_${_jv}_ip\"
 	if [ -z "$_ip" ] && ! check_kern_features vimage; then
 		warn "no ipaddress specified and no vimage support.  " \
 		    "Jail $_j was ignored."
@@ -138,10 +139,10 @@ parse_options()
 	fi
 	/usr/bin/install -m 0644 -o root -g wheel /dev/null $_conf || return 1
 
-	eval : \${jail_${_j}_flags:=${jail_flags}}
-	eval _exec=\"\$jail_${_j}_exec\"
-	eval _exec_start=\"\$jail_${_j}_exec_start\"
-	eval _exec_stop=\"\$jail_${_j}_exec_stop\"
+	eval : \${jail_${_jv}_flags:=${jail_flags}}
+	eval _exec=\"\$jail_${_jv}_exec\"
+	eval _exec_start=\"\$jail_${_jv}_exec_start\"
+	eval _exec_stop=\"\$jail_${_jv}_exec_stop\"
 	if [ -n "${_exec}" ]; then
 		#   simple/backward-compatible execution
 		_exec_start="${_exec}"
@@ -155,20 +156,20 @@ parse_options()
 			fi
 		fi
 	fi
-	eval _interface=\"\${jail_${_j}_interface:-${jail_interface}}\"
-	eval _parameters=\"\${jail_${_j}_parameters:-${jail_parameters}}\"
-	eval _fstab=\"\${jail_${_j}_fstab:-${jail_fstab:-/etc/fstab.$_j}}\"
+	eval _interface=\"\${jail_${_jv}_interface:-${jail_interface}}\"
+	eval _parameters=\"\${jail_${_jv}_parameters:-${jail_parameters}}\"
+	eval _fstab=\"\${jail_${_jv}_fstab:-${jail_fstab:-/etc/fstab.$_j}}\"
 	(
 		date +"# Generated by rc.d/jail at %Y-%m-%d %H:%M:%S"
 		echo "$_j {"
-		extract_var $_j hostname host.hostname - ""
-		extract_var $_j rootdir path - ""
+		extract_var $_jv hostname host.hostname - ""
+		extract_var $_jv rootdir path - ""
 		if [ -n "$_ip" ]; then
-			extract_var $_j interface interface - ""
+			extract_var $_jv interface interface - ""
 			jail_handle_ips_option $_ip $_interface
 			alias=0
 			while : ; do
-				eval _x=\"\$jail_${_j}_ip_multi${alias}\"
+				eval _x=\"\$jail_${_jv}_ip_multi${alias}\"
 				[ -z "$_x" ] && break
 
 				jail_handle_ips_option $_x $_interface
@@ -184,37 +185,37 @@ parse_options()
 			;;
 			esac
 			# These are applicable only to non-vimage jails. 
-			extract_var $_j fib exec.fib - ""
-			extract_var $_j socket_unixiproute_only \
+			extract_var $_jv fib exec.fib - ""
+			extract_var $_jv socket_unixiproute_only \
 			    allow.raw_sockets NY YES
 		else
 			echo "	vnet;"
-			extract_var $_j vnet_interface vnet.interface - ""
+			extract_var $_jv vnet_interface vnet.interface - ""
 		fi
 
 		echo "	exec.clean;"
 		echo "	exec.system_user = \"root\";"
 		echo "	exec.jail_user = \"root\";"
-		extract_var $_j exec_prestart exec.prestart 0 ""
-		extract_var $_j exec_poststart exec.poststart 0 ""
-		extract_var $_j exec_prestop exec.prestop 0 ""
-		extract_var $_j exec_poststop exec.poststop 0 ""
+		extract_var $_jv exec_prestart exec.prestart 0 ""
+		extract_var $_jv exec_poststart exec.poststart 0 ""
+		extract_var $_jv exec_prestop exec.prestop 0 ""
+		extract_var $_jv exec_poststop exec.poststop 0 ""
 
 		echo "	exec.start += \"$_exec_start\";"
-		extract_var $_j exec_afterstart exec.start 1 ""
+		extract_var $_jv exec_afterstart exec.start 1 ""
 		echo "	exec.stop = \"$_exec_stop\";"
 
-		extract_var $_j consolelog exec.consolelog - \
+		extract_var $_jv consolelog exec.consolelog - \
 		    /var/log/jail_${_j}_console.log
 
 		if [ -r $_fstab ]; then
 			echo "	mount.fstab = \"$_fstab\";"
 		fi
 
-		eval : \${jail_${_j}_devfs_enable:=${jail_devfs_enable:-NO}}
-		if checkyesno jail_${_j}_devfs_enable; then
+		eval : \${jail_${_jv}_devfs_enable:=${jail_devfs_enable:-NO}}
+		if checkyesno jail_${_jv}_devfs_enable; then
 			echo "	mount.devfs;"
-			eval _ruleset=\${jail_${_j}_devfs_ruleset:-${jail_devfs_ruleset}}
+			eval _ruleset=\${jail_${_jv}_devfs_ruleset:-${jail_devfs_ruleset}}
 			case $_ruleset in
 			"")	;;
 			[0-9]*) echo "	devfs_ruleset = \"$_ruleset\";" ;;
@@ -227,22 +228,22 @@ parse_options()
 			*)	warn "devfs_ruleset must be an integer." ;;
 			esac
 		fi
-		eval : \${jail_${_j}_fdescfs_enable:=${jail_fdescfs_enable:-NO}}
-		if checkyesno jail_${_j}_fdescfs_enable; then
+		eval : \${jail_${_jv}_fdescfs_enable:=${jail_fdescfs_enable:-NO}}
+		if checkyesno jail_${_jv}_fdescfs_enable; then
 			echo "	mount.fdescfs;"
 		fi
-		eval : \${jail_${_j}_procfs_enable:=${jail_procfs_enable:-NO}}
-		if checkyesno jail_${_j}_procfs_enable; then
+		eval : \${jail_${_jv}_procfs_enable:=${jail_procfs_enable:-NO}}
+		if checkyesno jail_${_jv}_procfs_enable; then
 			echo "	mount.procfs;"
 		fi
 
-		eval : \${jail_${_j}_mount_enable:=${jail_mount_enable:-NO}}
-		if checkyesno jail_${_j}_mount_enable; then
-			echo "	allow.mount;" >> $_conf
+		eval : \${jail_${_jv}_mount_enable:=${jail_mount_enable:-NO}}
+		if checkyesno jail_${_jv}_mount_enable; then
+			echo "	allow.mount;"
 		fi
 
-		extract_var $_j set_hostname_allow allow.set_hostname YN NO
-		extract_var $_j sysvipc_allow allow.sysvipc YN NO
+		extract_var $_jv set_hostname_allow allow.set_hostname YN NO
+		extract_var $_jv sysvipc_allow allow.sysvipc YN NO
 		for _p in $_parameters; do
 			echo "	${_p%\;};"
 		done
@@ -380,14 +381,15 @@ jail_handle_ips_option()
 
 jail_config()
 {
-	local _j
+	local _j _jv
 
 	case $1 in
 	_ALL)	return ;;
 	esac
 	for _j in $@; do
 		_j=$(echo $_j | tr /. _)
-		if parse_options $_j; then 
+		_jv=$(echo -n $_j | tr -c '[:alnum:]' _)
+		if parse_options $_j $_jv; then 
 			echo "$_j: parameters are in $_conf."
 		fi
 	done
@@ -395,7 +397,7 @@ jail_config()
 
 jail_console()
 {
-	local _j _cmd
+	local _j _jv _cmd
 
 	# One argument that is not _ALL.
 	case $#:$1 in
@@ -403,9 +405,10 @@ jail_console()
 	1:*)		;;
 	esac
 	_j=$(echo $1 | tr /. _)
+	_jv=$(echo -n $1 | tr -c '[:alnum:]' _)
 	shift
 	case $# in
-	0)	eval _cmd=\${jail_${_j}_consolecmd:-$jail_consolecmd} ;;
+	0)	eval _cmd=\${jail_${_jv}_consolecmd:-$jail_consolecmd} ;;
 	*)	_cmd=$@ ;;
 	esac
 	$jail_jexec $_j $_cmd
@@ -419,7 +422,7 @@ jail_status()
 
 jail_start()
 {
-	local _j _jid _jl _id _name
+	local _j _jv _jid _jl _id _name
 
 	if [ $# = 0 ]; then
 		return
@@ -452,11 +455,12 @@ jail_start()
 		_jl=
 		for _j in $@; do
 			_j=$(echo $_j | tr /. _)
-			parse_options $_j || continue
+			_jv=$(echo -n $_j | tr -c '[:alnum:]' _)
+			parse_options $_j $_jv || continue
 
 			_jl="$_jl $_j"
-			eval rc_flags=\${jail_${_j}_flags:-$jail_flags}
-			eval command=\${jail_${_j}_program:-$jail_program}
+			eval rc_flags=\${jail_${_jv}_flags:-$jail_flags}
+			eval command=\${jail_${_jv}_program:-$jail_program}
 			command_args="-i -f $_conf -c $_j"
 			$command $rc_flags $command_args \
 			    >/dev/null 2>&1 </dev/null &
@@ -478,10 +482,11 @@ jail_start()
 		#
 		for _j in $@; do
 			_j=$(echo $_j | tr /. _)
-			parse_options $_j || continue
+			_jv=$(echo -n $_j | tr -c '[:alnum:]' _)
+			parse_options $_j $_jv || continue
 
-			eval rc_flags=\${jail_${_j}_flags:-$jail_flags}
-			eval command=\${jail_${_j}_program:-$jail_program}
+			eval rc_flags=\${jail_${_jv}_flags:-$jail_flags}
+			eval command=\${jail_${_jv}_program:-$jail_program}
 			command_args="-i -f $_conf -c $_j"
 			_tmp=`mktemp -t jail` || exit 3
 			if $command $rc_flags $command_args \
@@ -503,7 +508,7 @@ jail_start()
 
 jail_stop()
 {
-	local _j
+	local _j _jv
 
 	if [ $# = 0 ]; then
 		return
@@ -531,11 +536,12 @@ jail_stop()
 	esac
 	for _j in $@; do
 		_j=$(echo $_j | tr /. _)
-		parse_options $_j || continue
+		_jv=$(echo -n $_j | tr -c '[:alnum:]' _)
+		parse_options $_j $_jv || continue
 		if ! $jail_jls -j $_j > /dev/null 2>&1; then
 			continue
 		fi
-		eval command=\${jail_${_j}_program:-$jail_program}
+		eval command=\${jail_${_jv}_program:-$jail_program}
 		echo -n " ${_hostname:-${_j}}"
 		_tmp=`mktemp -t jail` || exit 3
 		$command -q -f $_conf -r $_j >> $_tmp 2>&1

Modified: user/ngie/stable-10-libnv/release/Makefile
==============================================================================
--- user/ngie/stable-10-libnv/release/Makefile	Thu Dec 31 03:28:14 2015	(r292973)
+++ user/ngie/stable-10-libnv/release/Makefile	Thu Dec 31 03:32:43 2015	(r292974)
@@ -40,7 +40,6 @@ WORLDDIR?=	${.CURDIR}/..
 PORTSDIR?=	/usr/ports
 DOCDIR?=	/usr/doc
 RELNOTES_LANG?= en_US.ISO8859-1
-XZCMD?=		/usr/bin/xz
 
 .if !defined(TARGET) || empty(TARGET)
 TARGET=		${MACHINE}
@@ -161,16 +160,18 @@ kernel.txz:
 src.txz:
 	mkdir -p ${DISTDIR}/usr
 	ln -fs ${WORLDDIR} ${DISTDIR}/usr/src
-	cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/src.txz --exclude .svn --exclude .zfs \
-	    --exclude .git --exclude @ --exclude usr/src/release/dist usr/src
+	cd ${DISTDIR} && tar cLvf - --exclude .svn --exclude .zfs \
+	    --exclude .git --exclude @ --exclude usr/src/release/dist usr/src | \
+	    ${XZ_CMD} > ${.OBJDIR}/src.txz
 
 ports.txz:
 	mkdir -p ${DISTDIR}/usr
 	ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports
-	cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/ports.txz \
+	cd ${DISTDIR} && tar cLvf - \
 	    --exclude .git --exclude .svn \
 	    --exclude usr/ports/distfiles --exclude usr/ports/packages \
-	    --exclude 'usr/ports/INDEX*' --exclude work usr/ports
+	    --exclude 'usr/ports/INDEX*' --exclude work usr/ports | \
+	    ${XZ_CMD} > ${.OBJDIR}/ports.txz
 
 reldoc:
 	cd ${.CURDIR}/doc && ${MAKE} all install clean 'FORMATS=html txt' \
@@ -333,7 +334,7 @@ release-install:
 .for I in ${IMAGES}
 	cp -p ${I} ${DESTDIR}/${OSRELEASE}-${I}
 . if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
-	${XZCMD} -k ${DESTDIR}/${OSRELEASE}-${I}
+	${XZ_CMD} -k ${DESTDIR}/${OSRELEASE}-${I}
 . endif
 .endfor
 	cd ${DESTDIR} && sha512 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA512

Modified: user/ngie/stable-10-libnv/release/Makefile.vm
==============================================================================
--- user/ngie/stable-10-libnv/release/Makefile.vm	Thu Dec 31 03:28:14 2015	(r292973)
+++ user/ngie/stable-10-libnv/release/Makefile.vm	Thu Dec 31 03:32:43 2015	(r292974)
@@ -137,7 +137,7 @@ vm-install:
 . if defined(WITH_COMPRESSED_VMIMAGES) && !empty(WITH_COMPRESSED_VMIMAGES)
 .  for FORMAT in ${VMFORMATS}
 	# Don't keep the originals.  There is a copy in ${.OBJDIR} if needed.
-	${XZCMD} ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
+	${XZ_CMD} ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
 .  endfor
 . endif
 	cd ${DESTDIR}/vmimages && sha512 ${OSRELEASE}* > \

Modified: user/ngie/stable-10-libnv/share/mk/bsd.own.mk
==============================================================================
--- user/ngie/stable-10-libnv/share/mk/bsd.own.mk	Thu Dec 31 03:28:14 2015	(r292973)
+++ user/ngie/stable-10-libnv/share/mk/bsd.own.mk	Thu Dec 31 03:32:43 2015	(r292974)
@@ -213,6 +213,15 @@ STRIP?=		-s
 COMPRESS_CMD?=	gzip -cn
 COMPRESS_EXT?=	.gz
 
+# Set XZ_THREADS to 1 to disable multi-threading.
+XZ_THREADS?=	0
+
+.if !empty(XZ_THREADS)
+XZ_CMD?=	xz -T ${XZ_THREADS}
+.else
+XZ_CMD?=	xz
+.endif
+
 .if !defined(_WITHOUT_SRCCONF)
 #
 # Define MK_* variables (which are either "yes" or "no") for users

Modified: user/ngie/stable-10-libnv/sys/dev/isp/isp.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/dev/isp/isp.c	Thu Dec 31 03:28:14 2015	(r292973)
+++ user/ngie/stable-10-libnv/sys/dev/isp/isp.c	Thu Dec 31 03:32:43 2015	(r292974)
@@ -108,12 +108,12 @@ static void isp_fibre_init(ispsoftc_t *)
 static void isp_fibre_init_2400(ispsoftc_t *);
 static void isp_clear_portdb(ispsoftc_t *, int);
 static void isp_mark_portdb(ispsoftc_t *, int);
-static int isp_plogx(ispsoftc_t *, int, uint16_t, uint32_t, int, int);
+static int isp_plogx(ispsoftc_t *, int, uint16_t, uint32_t, int);
 static int isp_port_login(ispsoftc_t *, uint16_t, uint32_t);
 static int isp_port_logout(ispsoftc_t *, uint16_t, uint32_t);
-static int isp_getpdb(ispsoftc_t *, int, uint16_t, isp_pdb_t *, int);
-static int isp_gethandles(ispsoftc_t *, int, uint16_t *, int *, int, int);
-static void isp_dump_chip_portdb(ispsoftc_t *, int, int);
+static int isp_getpdb(ispsoftc_t *, int, uint16_t, isp_pdb_t *);
+static int isp_gethandles(ispsoftc_t *, int, uint16_t *, int *, int);
+static void isp_dump_chip_portdb(ispsoftc_t *, int);
 static uint64_t isp_get_wwn(ispsoftc_t *, int, int, int);
 static int isp_fclink_test(ispsoftc_t *, int, int);
 static int isp_pdb_sync(ispsoftc_t *, int);
@@ -2142,19 +2142,41 @@ isp_fibre_init_2400(ispsoftc_t *isp)
 	if ((icbp->icb_fwoptions3 & ICB2400_OPT3_RSPSZ_MASK) == 0) {
 		icbp->icb_fwoptions3 |= ICB2400_OPT3_RSPSZ_24;
 	}
-	icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_AUTO;
 	if (isp->isp_confopts & ISP_CFG_1GB) {
+		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
 		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_1GB;
 	} else if (isp->isp_confopts & ISP_CFG_2GB) {
+		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
 		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_2GB;
 	} else if (isp->isp_confopts & ISP_CFG_4GB) {
+		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
 		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_4GB;
 	} else if (isp->isp_confopts & ISP_CFG_8GB) {
+		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
 		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_8GB;
 	} else if (isp->isp_confopts & ISP_CFG_16GB) {
+		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
 		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_16GB;
 	} else {
-		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_AUTO;
+		switch (icbp->icb_fwoptions3 & ICB2400_OPT3_RATE_MASK) {
+		case ICB2400_OPT3_RATE_4GB:
+		case ICB2400_OPT3_RATE_8GB:
+		case ICB2400_OPT3_RATE_16GB:
+		case ICB2400_OPT3_RATE_AUTO:
+			break;
+		case ICB2400_OPT3_RATE_2GB:
+			if (isp->isp_type <= ISP_HA_FC_2500)
+				break;
+			/*FALLTHROUGH*/
+		case ICB2400_OPT3_RATE_1GB:
+			if (isp->isp_type <= ISP_HA_FC_2400)
+				break;
+			/*FALLTHROUGH*/
+		default:
+			icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
+			icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_AUTO;
+			break;
+		}
 	}
 	icbp->icb_logintime = ICB_LOGIN_TOV;
 
@@ -2322,6 +2344,161 @@ isp_fibre_init_2400(ispsoftc_t *isp)
 	isp->isp_state = ISP_RUNSTATE;
 }
 
+static int
+isp_fc_enable_vp(ispsoftc_t *isp, int chan)
+{
+	fcparam *fcp = FCPARAM(isp, chan);
+	vp_modify_t vp;
+	void *reqp;
+	uint8_t resp[QENTRY_LEN];
+
+	/* Build a VP MODIFY command in memory */
+	ISP_MEMZERO(&vp, sizeof(vp));
+	vp.vp_mod_hdr.rqs_entry_type = RQSTYPE_VP_MODIFY;
+	vp.vp_mod_hdr.rqs_entry_count = 1;
+	vp.vp_mod_cnt = 1;
+	vp.vp_mod_idx0 = chan;
+	vp.vp_mod_cmd = VP_MODIFY_ENA;
+	vp.vp_mod_ports[0].options = ICB2400_VPOPT_ENABLED |
+	    ICB2400_VPOPT_ENA_SNSLOGIN;
+	if (fcp->role & ISP_ROLE_INITIATOR)
+		vp.vp_mod_ports[0].options |= ICB2400_VPOPT_INI_ENABLE;
+	if ((fcp->role & ISP_ROLE_TARGET) == 0)
+		vp.vp_mod_ports[0].options |= ICB2400_VPOPT_TGT_DISABLE;
+	if (fcp->isp_loopid < LOCAL_LOOP_LIM) {
+		vp.vp_mod_ports[0].loopid = fcp->isp_loopid;
+		if (isp->isp_confopts & ISP_CFG_OWNLOOPID)
+			vp.vp_mod_ports[0].options |= ICB2400_VPOPT_HARD_ADDRESS;
+		else
+			vp.vp_mod_ports[0].options |= ICB2400_VPOPT_PREV_ADDRESS;
+	}
+	MAKE_NODE_NAME_FROM_WWN(vp.vp_mod_ports[0].wwpn, fcp->isp_wwpn);
+	MAKE_NODE_NAME_FROM_WWN(vp.vp_mod_ports[0].wwnn, fcp->isp_wwnn);
+
+	/* Prepare space for response in memory */
+	memset(resp, 0xff, sizeof(resp));
+	vp.vp_mod_hdl = isp_allocate_handle(isp, resp, ISP_HANDLE_CTRL);
+	if (vp.vp_mod_hdl == 0) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_MODIFY of Chan %d out of handles", __func__, chan);
+		return (EIO);
+	}
+
+	/* Send request and wait for response. */
+	reqp = isp_getrqentry(isp);
+	if (reqp == NULL) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_MODIFY of Chan %d out of rqent", __func__, chan);
+		isp_destroy_handle(isp, vp.vp_mod_hdl);
+		return (EIO);
+	}
+	isp_put_vp_modify(isp, &vp, (vp_modify_t *)reqp);
+	ISP_SYNC_REQUEST(isp);
+	if (msleep(resp, &isp->isp_lock, 0, "VP_MODIFY", 5*hz) == EWOULDBLOCK) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_MODIFY of Chan %d timed out", __func__, chan);
+		isp_destroy_handle(isp, vp.vp_mod_hdl);
+		return (EIO);
+	}
+	isp_get_vp_modify(isp, (vp_modify_t *)resp, &vp);
+
+	if (vp.vp_mod_hdr.rqs_flags != 0 || vp.vp_mod_status != VP_STS_OK) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_MODIFY of Chan %d failed with flags %x status %d",
+		    __func__, chan, vp.vp_mod_hdr.rqs_flags, vp.vp_mod_status);
+		return (EIO);
+	}
+	return (0);
+}
+
+static int
+isp_fc_disable_vp(ispsoftc_t *isp, int chan)
+{
+	vp_ctrl_info_t vp;
+	void *reqp;
+	uint8_t resp[QENTRY_LEN];
+
+	/* Build a VP CTRL command in memory */
+	ISP_MEMZERO(&vp, sizeof(vp));
+	vp.vp_ctrl_hdr.rqs_entry_type = RQSTYPE_VP_CTRL;
+	vp.vp_ctrl_hdr.rqs_entry_count = 1;
+	if (ISP_CAP_VP0(isp)) {
+		vp.vp_ctrl_status = 1;
+	} else {
+		vp.vp_ctrl_status = 0;
+		chan--;	/* VP0 can not be controlled in this case. */
+	}
+	vp.vp_ctrl_command = VP_CTRL_CMD_DISABLE_VP_LOGO_ALL;
+	vp.vp_ctrl_vp_count = 1;
+	vp.vp_ctrl_idmap[chan / 16] |= (1 << chan % 16);
+
+	/* Prepare space for response in memory */
+	memset(resp, 0xff, sizeof(resp));
+	vp.vp_ctrl_handle = isp_allocate_handle(isp, resp, ISP_HANDLE_CTRL);
+	if (vp.vp_ctrl_handle == 0) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_CTRL of Chan %d out of handles", __func__, chan);
+		return (EIO);
+	}
+
+	/* Send request and wait for response. */
+	reqp = isp_getrqentry(isp);
+	if (reqp == NULL) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_CTRL of Chan %d out of rqent", __func__, chan);
+		isp_destroy_handle(isp, vp.vp_ctrl_handle);
+		return (EIO);
+	}
+	isp_put_vp_ctrl_info(isp, &vp, (vp_ctrl_info_t *)reqp);
+	ISP_SYNC_REQUEST(isp);
+	if (msleep(resp, &isp->isp_lock, 0, "VP_CTRL", 5*hz) == EWOULDBLOCK) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_CTRL of Chan %d timed out", __func__, chan);
+		isp_destroy_handle(isp, vp.vp_ctrl_handle);
+		return (EIO);
+	}
+	isp_get_vp_ctrl_info(isp, (vp_ctrl_info_t *)resp, &vp);
+
+	if (vp.vp_ctrl_hdr.rqs_flags != 0 || vp.vp_ctrl_status != 0) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: VP_CTRL of Chan %d failed with flags %x status %d %d",
+		    __func__, chan, vp.vp_ctrl_hdr.rqs_flags,
+		    vp.vp_ctrl_status, vp.vp_ctrl_index_fail);
+		return (EIO);
+	}
+	return (0);
+}
+
+static int
+isp_fc_change_role(ispsoftc_t *isp, int chan, int new_role)
+{
+	fcparam *fcp = FCPARAM(isp, chan);
+	int i, was, res = 0;
+
+	if (chan >= isp->isp_nchan) {
+		isp_prt(isp, ISP_LOGWARN, "%s: bad channel %d", __func__, chan);
+		return (ENXIO);
+	}
+	if (fcp->role == new_role)
+		return (0);
+	for (was = 0, i = 0; i < isp->isp_nchan; i++) {
+		if (FCPARAM(isp, i)->role != ISP_ROLE_NONE)
+			was++;
+	}
+	if (was == 0 || (was == 1 && fcp->role != ISP_ROLE_NONE)) {
+		fcp->role = new_role;
+		return (isp_reinit(isp, 0));
+	}
+	if (fcp->role != ISP_ROLE_NONE) {
+		res = isp_fc_disable_vp(isp, chan);
+		isp_clear_portdb(isp, chan);
+	}
+	fcp->role = new_role;
+	if (fcp->role != ISP_ROLE_NONE)
+		res = isp_fc_enable_vp(isp, chan);
+	return (res);
+}
+
 static void
 isp_clear_portdb(ispsoftc_t *isp, int chan)
 {
@@ -2373,13 +2550,11 @@ isp_mark_portdb(ispsoftc_t *isp, int cha
  * or via FABRIC LOGIN/FABRIC LOGOUT for other cards.
  */
 static int
-isp_plogx(ispsoftc_t *isp, int chan, uint16_t handle, uint32_t portid, int flags, int gs)
+isp_plogx(ispsoftc_t *isp, int chan, uint16_t handle, uint32_t portid, int flags)
 {
-	mbreg_t mbs;
-	uint8_t q[QENTRY_LEN];
-	isp_plogx_t *plp;
-	fcparam *fcp;
-	uint8_t *scp;
+	isp_plogx_t pl;
+	void *reqp;
+	uint8_t resp[QENTRY_LEN];
 	uint32_t sst, parm1;
 	int rval, lev;
 	const char *msg;
@@ -2399,63 +2574,58 @@ isp_plogx(ispsoftc_t *isp, int chan, uin
 		}
 	}
 
-	ISP_MEMZERO(q, QENTRY_LEN);
-	plp = (isp_plogx_t *) q;
-	plp->plogx_header.rqs_entry_count = 1;
-	plp->plogx_header.rqs_entry_type = RQSTYPE_LOGIN;
-	plp->plogx_handle = 0xffffffff;
-	plp->plogx_nphdl = handle;
-	plp->plogx_vphdl = chan;
-	plp->plogx_portlo = portid;
-	plp->plogx_rspsz_porthi = (portid >> 16) & 0xff;
-	plp->plogx_flags = flags;
-
-	if (isp->isp_dblev & ISP_LOGDEBUG1) {
-		isp_print_bytes(isp, "IOCB LOGX", QENTRY_LEN, plp);
-	}
-
-	if (gs == 0) {
-		if (FC_SCRATCH_ACQUIRE(isp, chan)) {
-			isp_prt(isp, ISP_LOGERR, sacq);
-			return (-1);
-		}
+	ISP_MEMZERO(&pl, sizeof(pl));
+	pl.plogx_header.rqs_entry_count = 1;
+	pl.plogx_header.rqs_entry_type = RQSTYPE_LOGIN;
+	pl.plogx_nphdl = handle;
+	pl.plogx_vphdl = chan;
+	pl.plogx_portlo = portid;
+	pl.plogx_rspsz_porthi = (portid >> 16) & 0xff;
+	pl.plogx_flags = flags;
+
+	/* Prepare space for response in memory */
+	memset(resp, 0xff, sizeof(resp));
+	pl.plogx_handle = isp_allocate_handle(isp, resp, ISP_HANDLE_CTRL);
+	if (pl.plogx_handle == 0) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: PLOGX of Chan %d out of handles", __func__, chan);
+		return (-1);
 	}
-	fcp = FCPARAM(isp, chan);
-	scp = fcp->isp_scratch;
-	isp_put_plogx(isp, plp, (isp_plogx_t *) scp);
 
-	MBSINIT(&mbs, MBOX_EXEC_COMMAND_IOCB_A64, MBLOGALL, 500000);
-	mbs.param[1] = QENTRY_LEN;
-	mbs.param[2] = DMA_WD1(fcp->isp_scdma);
-	mbs.param[3] = DMA_WD0(fcp->isp_scdma);
-	mbs.param[6] = DMA_WD3(fcp->isp_scdma);
-	mbs.param[7] = DMA_WD2(fcp->isp_scdma);
-	MEMORYBARRIER(isp, SYNC_SFORDEV, 0, QENTRY_LEN, chan);
-	isp_mboxcmd(isp, &mbs);
-	if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
-		rval = mbs.param[0];
-		goto out;
+	/* Send request and wait for response. */
+	reqp = isp_getrqentry(isp);
+	if (reqp == NULL) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: PLOGX of Chan %d out of rqent", __func__, chan);
+		isp_destroy_handle(isp, pl.plogx_handle);
+		return (-1);
 	}
-	MEMORYBARRIER(isp, SYNC_SFORCPU, QENTRY_LEN, QENTRY_LEN, chan);
-	scp += QENTRY_LEN;
-	isp_get_plogx(isp, (isp_plogx_t *) scp, plp);
-	if (isp->isp_dblev & ISP_LOGDEBUG1) {
-		isp_print_bytes(isp, "IOCB LOGX response", QENTRY_LEN, plp);
+	if (isp->isp_dblev & ISP_LOGDEBUG1)
+		isp_print_bytes(isp, "IOCB LOGX", QENTRY_LEN, &pl);
+	isp_put_plogx(isp, &pl, (isp_plogx_t *)reqp);
+	ISP_SYNC_REQUEST(isp);
+	if (msleep(resp, &isp->isp_lock, 0, "PLOGX", 3 * ICB_LOGIN_TOV * hz)
+	    == EWOULDBLOCK) {
+		isp_prt(isp, ISP_LOGERR,
+		    "%s: PLOGX of Chan %d timed out", __func__, chan);
+		isp_destroy_handle(isp, pl.plogx_handle);
+		return (-1);
 	}
+	isp_get_plogx(isp, (isp_plogx_t *)resp, &pl);
+	if (isp->isp_dblev & ISP_LOGDEBUG1)
+		isp_print_bytes(isp, "IOCB LOGX response", QENTRY_LEN, &pl);
 
-	if (plp->plogx_status == PLOGX_STATUS_OK) {
-		rval = 0;
-		goto out;
-	} else if (plp->plogx_status != PLOGX_STATUS_IOCBERR) {
+	if (pl.plogx_status == PLOGX_STATUS_OK) {
+		return (0);
+	} else if (pl.plogx_status != PLOGX_STATUS_IOCBERR) {
 		isp_prt(isp, ISP_LOGWARN,
 		    "status 0x%x on port login IOCB channel %d",
-		    plp->plogx_status, chan);
-		rval = -1;
-		goto out;
+		    pl.plogx_status, chan);
+		return (-1);
 	}
 
-	sst = plp->plogx_ioparm[0].lo16 | (plp->plogx_ioparm[0].hi16 << 16);
-	parm1 = plp->plogx_ioparm[1].lo16 | (plp->plogx_ioparm[1].hi16 << 16);
+	sst = pl.plogx_ioparm[0].lo16 | (pl.plogx_ioparm[0].hi16 << 16);
+	parm1 = pl.plogx_ioparm[1].lo16 | (pl.plogx_ioparm[1].hi16 << 16);
 
 	rval = -1;
 	lev = ISP_LOGERR;
@@ -2516,17 +2686,13 @@ isp_plogx(ispsoftc_t *isp, int chan, uin
 		msg = "no FLOGI_ACC";
 		break;
 	default:
-		ISP_SNPRINTF(buf, sizeof (buf), "status %x from %x", plp->plogx_status, flags);
+		ISP_SNPRINTF(buf, sizeof (buf), "status %x from %x", pl.plogx_status, flags);
 		msg = buf;
 		break;
 	}
 	if (msg) {
 		isp_prt(isp, ISP_LOGERR, "Chan %d PLOGX PortID 0x%06x to N-Port handle 0x%x: %s", chan, portid, handle, msg);
 	}
-out:
-	if (gs == 0) {
-		FC_SCRATCH_RELEASE(isp, chan);
-	}
 	return (rval);
 }
 
@@ -2596,7 +2762,7 @@ isp_port_logout(ispsoftc_t *isp, uint16_
 }
 
 static int
-isp_getpdb(ispsoftc_t *isp, int chan, uint16_t id, isp_pdb_t *pdb, int dolock)
+isp_getpdb(ispsoftc_t *isp, int chan, uint16_t id, isp_pdb_t *pdb)
 {
 	fcparam *fcp = FCPARAM(isp, chan);
 	mbreg_t mbs;
@@ -2620,18 +2786,14 @@ isp_getpdb(ispsoftc_t *isp, int chan, ui
 	mbs.param[3] = DMA_WD0(fcp->isp_scdma);
 	mbs.param[6] = DMA_WD3(fcp->isp_scdma);
 	mbs.param[7] = DMA_WD2(fcp->isp_scdma);
-	if (dolock) {
-		if (FC_SCRATCH_ACQUIRE(isp, chan)) {
-			isp_prt(isp, ISP_LOGERR, sacq);
-			return (-1);
-		}
+	if (FC_SCRATCH_ACQUIRE(isp, chan)) {
+		isp_prt(isp, ISP_LOGERR, sacq);
+		return (-1);
 	}
 	MEMORYBARRIER(isp, SYNC_SFORDEV, 0, sizeof (un), chan);
 	isp_mboxcmd(isp, &mbs);
 	if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
-		if (dolock) {
-			FC_SCRATCH_RELEASE(isp, chan);
-		}
+		FC_SCRATCH_RELEASE(isp, chan);
 		return (mbs.param[0] | (mbs.param[1] << 16));
 	}
 	if (IS_24XX(isp)) {
@@ -2647,9 +2809,7 @@ isp_getpdb(ispsoftc_t *isp, int chan, ui
 		    un.bill.pdb_curstate);
 		if (un.bill.pdb_curstate < PDB2400_STATE_PLOGI_DONE || un.bill.pdb_curstate > PDB2400_STATE_LOGGED_IN) {
 			mbs.param[0] = MBOX_NOT_LOGGED_IN;
-			if (dolock) {
-				FC_SCRATCH_RELEASE(isp, chan);
-			}
+			FC_SCRATCH_RELEASE(isp, chan);
 			return (mbs.param[0]);
 		}
 	} else {
@@ -2662,15 +2822,12 @@ isp_getpdb(ispsoftc_t *isp, int chan, ui
 		isp_prt(isp, ISP_LOGDEBUG1,
 		    "Chan %d handle 0x%x Port 0x%06x", chan, id, pdb->portid);
 	}
-	if (dolock) {
-		FC_SCRATCH_RELEASE(isp, chan);
-	}
+	FC_SCRATCH_RELEASE(isp, chan);
 	return (0);
 }
 
 static int
-isp_gethandles(ispsoftc_t *isp, int chan, uint16_t *handles, int *num,
-    int dolock, int loop)
+isp_gethandles(ispsoftc_t *isp, int chan, uint16_t *handles, int *num, int loop)
 {
 	fcparam *fcp = FCPARAM(isp, chan);
 	mbreg_t mbs;
@@ -2696,18 +2853,14 @@ isp_gethandles(ispsoftc_t *isp, int chan
 		mbs.param[3] = DMA_WD3(fcp->isp_scdma);
 		mbs.param[6] = DMA_WD2(fcp->isp_scdma);
 	}
-	if (dolock) {
-		if (FC_SCRATCH_ACQUIRE(isp, chan)) {
-			isp_prt(isp, ISP_LOGERR, sacq);
-			return (-1);
-		}
+	if (FC_SCRATCH_ACQUIRE(isp, chan)) {
+		isp_prt(isp, ISP_LOGERR, sacq);
+		return (-1);
 	}
 	MEMORYBARRIER(isp, SYNC_SFORDEV, 0, ISP_FC_SCRLEN, chan);
 	isp_mboxcmd(isp, &mbs);
 	if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
-		if (dolock) {
-			FC_SCRATCH_RELEASE(isp, chan);
-		}
+		FC_SCRATCH_RELEASE(isp, chan);
 		return (mbs.param[0] | (mbs.param[1] << 16));
 	}
 	elp1 = fcp->isp_scratch;
@@ -2735,13 +2888,12 @@ isp_gethandles(ispsoftc_t *isp, int chan
 		handles[j++] = h;
 	}
 	*num = j;
-	if (dolock)
-		FC_SCRATCH_RELEASE(isp, chan);
+	FC_SCRATCH_RELEASE(isp, chan);
 	return (0);
 }
 
 static void
-isp_dump_chip_portdb(ispsoftc_t *isp, int chan, int dolock)
+isp_dump_chip_portdb(ispsoftc_t *isp, int chan)
 {
 	isp_pdb_t pdb;
 	uint16_t lim, nphdl;
@@ -2753,7 +2905,7 @@ isp_dump_chip_portdb(ispsoftc_t *isp, in
 		lim = NPH_MAX;
 	}
 	for (nphdl = 0; nphdl != lim; nphdl++) {
-		if (isp_getpdb(isp, chan, nphdl, &pdb, dolock)) {
+		if (isp_getpdb(isp, chan, nphdl, &pdb)) {
 			continue;
 		}
 		isp_prt(isp, ISP_LOG_SANCFG|ISP_LOGINFO, "Chan %d Handle 0x%04x "
@@ -2903,7 +3055,7 @@ isp_fclink_test(ispsoftc_t *isp, int cha
 
 	if (fcp->isp_topo == TOPO_F_PORT || fcp->isp_topo == TOPO_FL_PORT) {
 		nphdl = IS_24XX(isp) ? NPH_FL_ID : FL_ID;
-		r = isp_getpdb(isp, chan, nphdl, &pdb, 1);
+		r = isp_getpdb(isp, chan, nphdl, &pdb);
 		if (r != 0 || pdb.portid == 0) {
 			if (IS_2100(isp)) {
 				fcp->isp_topo = TOPO_NL_PORT;
@@ -3018,7 +3170,7 @@ isp_pdb_sync(ispsoftc_t *isp, int chan)
 				    lp->portid,
 				    PLOGX_FLG_CMD_LOGO |
 				    PLOGX_FLG_IMPLICIT |
-				    PLOGX_FLG_FREE_NPHDL, 0);
+				    PLOGX_FLG_FREE_NPHDL);
 			}
 			/*
 			 * Note that we might come out of this with our state
@@ -3145,7 +3297,7 @@ isp_fix_portids(ispsoftc_t *isp, int cha
 		if (VALID_PORT(lp->portid))
 			continue;
 
-		r = isp_getpdb(isp, chan, lp->handle, &pdb, 1);
+		r = isp_getpdb(isp, chan, lp->handle, &pdb);
 		if (fcp->isp_loopstate < LOOP_SCANNING_LOOP)
 			return;
 		if (r != 0) {
@@ -3174,7 +3326,7 @@ isp_scan_loop(ispsoftc_t *isp, int chan)
 	fcparam *fcp = FCPARAM(isp, chan);
 	int idx, lim, r;
 	isp_pdb_t pdb;
-	uint16_t handles[LOCAL_LOOP_LIM];
+	uint16_t *handles;
 	uint16_t handle;
 
 	if (fcp->isp_loopstate < LOOP_LTEST_DONE)
@@ -3196,8 +3348,9 @@ isp_scan_loop(ispsoftc_t *isp, int chan)
 		return (0);
 	}
 
-	lim = LOCAL_LOOP_LIM;
-	r = isp_gethandles(isp, chan, handles, &lim, 1, 1);
+	handles = (uint16_t *)fcp->isp_scanscratch;
+	lim = ISP_FC_SCRLEN / 2;
+	r = isp_gethandles(isp, chan, handles, &lim, 1);
 	if (r != 0) {
 		isp_prt(isp, ISP_LOG_SANCFG,
 		    "Chan %d Getting list of handles failed with %x", chan, r);
@@ -3247,7 +3400,7 @@ abort:
 		/*
 		 * Get the port database entity for this index.
 		 */
-		r = isp_getpdb(isp, chan, handle, &pdb, 1);
+		r = isp_getpdb(isp, chan, handle, &pdb);
 		if (fcp->isp_loopstate < LOOP_SCANNING_LOOP)
 			goto abort;
 		if (r != 0) {
@@ -3276,20 +3429,10 @@ abort:
  *

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201512310332.tBV3WhRQ034367>