Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Dec 2012 15:01:46 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r244266 - in projects/calloutng: bin/ps bin/sh cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/lib/libzfs/common contrib/top etc/devd etc/rc.d lib/libc/gen sbin/growfs sbin/sa...
Message-ID:  <201212151501.qBFF1kgY082936@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Sat Dec 15 15:01:46 2012
New Revision: 244266
URL: http://svnweb.freebsd.org/changeset/base/244266

Log:
  MFC @ r244264

Added:
  projects/calloutng/sys/arm/arm/pl190.c
     - copied unchanged from r244264, head/sys/arm/arm/pl190.c
  projects/calloutng/sys/arm/conf/VERSATILEPB
     - copied unchanged from r244264, head/sys/arm/conf/VERSATILEPB
  projects/calloutng/sys/arm/versatile/
     - copied from r244264, head/sys/arm/versatile/
  projects/calloutng/sys/boot/fdt/dts/versatilepb.dts
     - copied unchanged from r244264, head/sys/boot/fdt/dts/versatilepb.dts
  projects/calloutng/tools/regression/bin/sh/errors/write-error1.0
     - copied unchanged from r244264, head/tools/regression/bin/sh/errors/write-error1.0
Modified:
  projects/calloutng/bin/ps/ps.c
  projects/calloutng/bin/sh/eval.c
  projects/calloutng/bin/sh/output.c
  projects/calloutng/bin/sh/output.h
  projects/calloutng/cddl/contrib/opensolaris/cmd/zdb/zdb.c
  projects/calloutng/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
  projects/calloutng/contrib/top/top.h
  projects/calloutng/etc/devd/usb.conf
  projects/calloutng/etc/rc.d/auditdistd
  projects/calloutng/etc/rc.d/savecore
  projects/calloutng/etc/rc.d/sysctl
  projects/calloutng/lib/libc/gen/sysctlbyname.c
  projects/calloutng/sbin/growfs/growfs.c
  projects/calloutng/sbin/savecore/savecore.8
  projects/calloutng/sbin/savecore/savecore.c
  projects/calloutng/sbin/sysctl/sysctl.8
  projects/calloutng/sbin/sysctl/sysctl.c
  projects/calloutng/share/misc/committers-src.dot
  projects/calloutng/share/mk/bsd.lib.mk
  projects/calloutng/share/mk/bsd.prog.mk
  projects/calloutng/share/mk/sys.mk
  projects/calloutng/share/syscons/keymaps/spanish.dvorak.kbd
  projects/calloutng/sys/amd64/include/bus.h
  projects/calloutng/sys/boot/forth/beastie.4th.8
  projects/calloutng/sys/boot/forth/check-password.4th
  projects/calloutng/sys/boot/forth/check-password.4th.8
  projects/calloutng/sys/boot/forth/loader.4th.8
  projects/calloutng/sys/boot/forth/loader.conf.5
  projects/calloutng/sys/boot/forth/menu.4th.8
  projects/calloutng/sys/cddl/compat/opensolaris/kern/opensolaris_kstat.c
  projects/calloutng/sys/cddl/compat/opensolaris/sys/kstat.h
  projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
  projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c
  projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
  projects/calloutng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/calloutng/sys/conf/files.arm
  projects/calloutng/sys/dev/smc/if_smc.c
  projects/calloutng/sys/dev/sym/sym_hipd.c
  projects/calloutng/sys/dev/uart/uart_bus_fdt.c
  projects/calloutng/sys/dev/virtio/block/virtio_blk.c
  projects/calloutng/sys/dev/virtio/network/if_vtnet.c
  projects/calloutng/sys/dev/virtio/scsi/virtio_scsi.c
  projects/calloutng/sys/i386/include/bus.h
  projects/calloutng/sys/kern/kern_fork.c
  projects/calloutng/sys/kern/vfs_export.c
  projects/calloutng/sys/kern/vfs_subr.c
  projects/calloutng/sys/net/if_llatbl.c
  projects/calloutng/sys/netinet/if_ether.c
  projects/calloutng/sys/netinet/tcp_input.c
  projects/calloutng/sys/netinet6/nd6.c
  projects/calloutng/sys/netpfil/pf/if_pfsync.c
  projects/calloutng/sys/netpfil/pf/pf.c
  projects/calloutng/sys/netpfil/pf/pf_if.c
  projects/calloutng/sys/sys/fnv_hash.h
  projects/calloutng/sys/sys/mount.h
  projects/calloutng/sys/ufs/ufs/ufs_quota.c
  projects/calloutng/sys/x86/include/bus.h
  projects/calloutng/usr.bin/calendar/parsedata.c
  projects/calloutng/usr.sbin/portsnap/portsnap/portsnap.sh
Directory Properties:
  projects/calloutng/   (props changed)
  projects/calloutng/cddl/contrib/opensolaris/   (props changed)
  projects/calloutng/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
  projects/calloutng/contrib/top/   (props changed)
  projects/calloutng/lib/libc/   (props changed)
  projects/calloutng/sbin/   (props changed)
  projects/calloutng/sys/   (props changed)
  projects/calloutng/sys/boot/   (props changed)
  projects/calloutng/sys/cddl/contrib/opensolaris/   (props changed)
  projects/calloutng/sys/conf/   (props changed)
  projects/calloutng/sys/powerpc/wii/locore.S   (props changed)
  projects/calloutng/usr.bin/calendar/   (props changed)

Modified: projects/calloutng/bin/ps/ps.c
==============================================================================
--- projects/calloutng/bin/ps/ps.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/bin/ps/ps.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -109,6 +109,7 @@ static int	 needcomm;	/* -o "command" */
 static int	 needenv;	/* -e */
 static int	 needuser;	/* -o "user" */
 static int	 optfatal;	/* Fatal error parsing some list-option. */
+static int	 pid_max;	/* kern.max_pid */
 
 static enum sort { DEFAULT, SORTMEM, SORTCPU } sortby = DEFAULT;
 
@@ -148,6 +149,7 @@ static int	 pscomp(const void *, const v
 static void	 saveuser(KINFO *);
 static void	 scanvars(void);
 static void	 sizevars(void);
+static void	 pidmax_init(void);
 static void	 usage(void);
 
 static char dfmt[] = "pid,tt,state,time,command";
@@ -200,6 +202,8 @@ main(int argc, char *argv[])
 	if (argc > 1)
 		argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]);
 
+	pidmax_init();
+
 	all = descendancy = _fmt = nselectors = optfatal = 0;
 	prtheader = showthreads = wflag = xkeep_implied = 0;
 	xkeep = -1;			/* Neither -x nor -X. */
@@ -722,7 +726,6 @@ addelem_gid(struct listinfo *inf, const 
 	return (1);
 }
 
-#define	BSD_PID_MAX	99999		/* Copy of PID_MAX from sys/proc.h. */
 static int
 addelem_pid(struct listinfo *inf, const char *elem)
 {
@@ -740,7 +743,7 @@ addelem_pid(struct listinfo *inf, const 
 	if (*endp != '\0' || tempid < 0 || elem == endp) {
 		warnx("Invalid %s: %s", inf->lname, elem);
 		errno = ERANGE;
-	} else if (errno != 0 || tempid > BSD_PID_MAX) {
+	} else if (errno != 0 || tempid > pid_max) {
 		warnx("%s too large: %s", inf->lname, elem);
 		errno = ERANGE;
 	}
@@ -753,7 +756,6 @@ addelem_pid(struct listinfo *inf, const 
 	inf->l.pids[(inf->count)++] = tempid;
 	return (1);
 }
-#undef	BSD_PID_MAX
 
 /*-
  * The user can specify a device via one of three formats:
@@ -1352,6 +1354,18 @@ kludge_oldps_options(const char *optlist
 }
 
 static void
+pidmax_init(void)
+{
+	size_t intsize;
+
+	intsize = sizeof(pid_max);
+	if (sysctlbyname("kern.pid_max", &pid_max, &intsize, NULL, 0) < 0) {
+		warn("unable to read kern.pid_max");
+		pid_max = 99999;
+	}
+}
+
+static void
 usage(void)
 {
 #define	SINGLE_OPTS	"[-aCcde" OPT_LAZY_f "HhjlmrSTuvwXxZ]"

Modified: projects/calloutng/bin/sh/eval.c
==============================================================================
--- projects/calloutng/bin/sh/eval.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/bin/sh/eval.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -1070,6 +1070,7 @@ evalcommand(union node *cmd, int flags, 
 		}
 		handler = &jmploc;
 		redirect(cmd->ncmd.redirect, mode);
+		outclearerror(out1);
 		/*
 		 * If there is no command word, redirection errors should
 		 * not be fatal but assignment errors should.
@@ -1085,6 +1086,11 @@ evalcommand(union node *cmd, int flags, 
 		builtin_flags = flags;
 		exitstatus = (*builtinfunc[cmdentry.u.index])(argc, argv);
 		flushall();
+		if (outiserror(out1)) {
+			warning("write error on stdout");
+			if (exitstatus == 0 || exitstatus == 1)
+				exitstatus = 2;
+		}
 cmddone:
 		if (argc > 0)
 			bltinunsetlocale();

Modified: projects/calloutng/bin/sh/output.c
==============================================================================
--- projects/calloutng/bin/sh/output.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/bin/sh/output.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -239,6 +239,20 @@ freestdout(void)
 }
 
 
+int
+outiserror(struct output *file)
+{
+	return (file->flags & OUTPUT_ERR);
+}
+
+
+void
+outclearerror(struct output *file)
+{
+	file->flags &= ~OUTPUT_ERR;
+}
+
+
 void
 outfmt(struct output *file, const char *fmt, ...)
 {

Modified: projects/calloutng/bin/sh/output.h
==============================================================================
--- projects/calloutng/bin/sh/output.h	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/bin/sh/output.h	Sat Dec 15 15:01:46 2012	(r244266)
@@ -66,6 +66,8 @@ void emptyoutbuf(struct output *);
 void flushall(void);
 void flushout(struct output *);
 void freestdout(void);
+int outiserror(struct output *);
+void outclearerror(struct output *);
 void outfmt(struct output *, const char *, ...) __printflike(2, 3);
 void out1fmt(const char *, ...) __printflike(1, 2);
 void out2fmt_flush(const char *, ...) __printflike(1, 2);

Modified: projects/calloutng/cddl/contrib/opensolaris/cmd/zdb/zdb.c
==============================================================================
--- projects/calloutng/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -61,14 +61,16 @@
 #undef verify
 #include <libzfs.h>
 
-#define	ZDB_COMPRESS_NAME(idx) ((idx) < ZIO_COMPRESS_FUNCTIONS ? \
-    zio_compress_table[(idx)].ci_name : "UNKNOWN")
-#define	ZDB_CHECKSUM_NAME(idx) ((idx) < ZIO_CHECKSUM_FUNCTIONS ? \
-    zio_checksum_table[(idx)].ci_name : "UNKNOWN")
-#define	ZDB_OT_NAME(idx) ((idx) < DMU_OT_NUMTYPES ? \
-    dmu_ot[(idx)].ot_name : DMU_OT_IS_VALID(idx) ? \
-    dmu_ot_byteswap[DMU_OT_BYTESWAP(idx)].ob_name : "UNKNOWN")
-#define	ZDB_OT_TYPE(idx) ((idx) < DMU_OT_NUMTYPES ? (idx) : DMU_OT_NUMTYPES)
+#define	ZDB_COMPRESS_NAME(idx) ((idx) < ZIO_COMPRESS_FUNCTIONS ?	\
+	zio_compress_table[(idx)].ci_name : "UNKNOWN")
+#define	ZDB_CHECKSUM_NAME(idx) ((idx) < ZIO_CHECKSUM_FUNCTIONS ?	\
+	zio_checksum_table[(idx)].ci_name : "UNKNOWN")
+#define	ZDB_OT_NAME(idx) ((idx) < DMU_OT_NUMTYPES ?	\
+	dmu_ot[(idx)].ot_name : DMU_OT_IS_VALID(idx) ?	\
+	dmu_ot_byteswap[DMU_OT_BYTESWAP(idx)].ob_name : "UNKNOWN")
+#define	ZDB_OT_TYPE(idx) ((idx) < DMU_OT_NUMTYPES ? (idx) :		\
+	(((idx) == DMU_OTN_ZAP_DATA || (idx) == DMU_OTN_ZAP_METADATA) ?	\
+	DMU_OT_ZAP_OTHER : DMU_OT_NUMTYPES))
 
 #ifndef lint
 extern int zfs_recover;
@@ -3194,7 +3196,13 @@ main(int argc, char **argv)
 					    argv[i], strerror(errno));
 			}
 		}
-		(os != NULL) ? dump_dir(os) : dump_zpool(spa);
+		if (os != NULL) {
+			dump_dir(os);
+		} else if (zopt_objects > 0 && !dump_opt['m']) {
+			dump_dir(spa->spa_meta_objset);
+		} else {
+			dump_zpool(spa);
+		}
 	} else {
 		flagbits['b'] = ZDB_FLAG_PRINT_BLKPTR;
 		flagbits['c'] = ZDB_FLAG_CHECKSUM;

Modified: projects/calloutng/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
==============================================================================
--- projects/calloutng/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -727,7 +727,7 @@ send_iterate_fs(zfs_handle_t *zhp, void 
 	sd->parent_fromsnap_guid = 0;
 	VERIFY(0 == nvlist_alloc(&sd->parent_snaps, NV_UNIQUE_NAME, 0));
 	VERIFY(0 == nvlist_alloc(&sd->snapprops, NV_UNIQUE_NAME, 0));
-	(void) zfs_iter_snapshots(zhp, B_FALSE, send_iterate_snap, sd);
+	(void) zfs_iter_snapshots_sorted(zhp, send_iterate_snap, sd);
 	VERIFY(0 == nvlist_add_nvlist(nvfs, "snaps", sd->parent_snaps));
 	VERIFY(0 == nvlist_add_nvlist(nvfs, "snapprops", sd->snapprops));
 	nvlist_free(sd->parent_snaps);
@@ -1945,11 +1945,12 @@ recv_incremental_replication(libzfs_hand
     recvflags_t *flags, nvlist_t *stream_nv, avl_tree_t *stream_avl,
     nvlist_t *renamed)
 {
-	nvlist_t *local_nv;
+	nvlist_t *local_nv, *deleted = NULL;
 	avl_tree_t *local_avl;
 	nvpair_t *fselem, *nextfselem;
 	char *fromsnap;
 	char newname[ZFS_MAXNAMELEN];
+	char guidname[32];
 	int error;
 	boolean_t needagain, progress, recursive;
 	char *s1, *s2;
@@ -1965,6 +1966,8 @@ recv_incremental_replication(libzfs_hand
 again:
 	needagain = progress = B_FALSE;
 
+	VERIFY(0 == nvlist_alloc(&deleted, NV_UNIQUE_NAME, 0));
+
 	if ((error = gather_nvlist(hdl, tofs, fromsnap, NULL,
 	    recursive, &local_nv, &local_avl)) != 0)
 		return (error);
@@ -2079,6 +2082,8 @@ again:
 					needagain = B_TRUE;
 				else
 					progress = B_TRUE;
+				sprintf(guidname, "%lu", thisguid);
+				nvlist_add_boolean(deleted, guidname);
 				continue;
 			}
 
@@ -2134,6 +2139,8 @@ again:
 				needagain = B_TRUE;
 			else
 				progress = B_TRUE;
+			sprintf(guidname, "%lu", parent_fromsnap_guid);
+			nvlist_add_boolean(deleted, guidname);
 			continue;
 		}
 
@@ -2156,6 +2163,24 @@ again:
 		s2 = strrchr(stream_fsname, '/');
 
 		/*
+		 * Check if we're going to rename based on parent guid change
+		 * and the current parent guid was also deleted. If it was then
+		 * rename will fail and is likely unneeded, so avoid this and
+		 * force an early retry to determine the new
+		 * parent_fromsnap_guid.
+		 */
+		if (stream_parent_fromsnap_guid != 0 &&
+                    parent_fromsnap_guid != 0 &&
+                    stream_parent_fromsnap_guid != parent_fromsnap_guid) {
+			sprintf(guidname, "%lu", parent_fromsnap_guid);
+			if (nvlist_exists(deleted, guidname)) {
+				progress = B_TRUE;
+				needagain = B_TRUE;
+				goto doagain;
+			}
+		}
+
+		/*
 		 * Check for rename. If the exact receive path is specified, it
 		 * does not count as a rename, but we still need to check the
 		 * datasets beneath it.
@@ -2209,8 +2234,10 @@ again:
 		}
 	}
 
+doagain:
 	fsavl_destroy(local_avl);
 	nvlist_free(local_nv);
+	nvlist_free(deleted);
 
 	if (needagain && progress) {
 		/* do another pass to fix up temporary names */

Modified: projects/calloutng/contrib/top/top.h
==============================================================================
--- projects/calloutng/contrib/top/top.h	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/contrib/top/top.h	Sat Dec 15 15:01:46 2012	(r244266)
@@ -14,7 +14,7 @@
 extern int Header_lines;	/* 7 */
 
 /* Maximum number of columns allowed for display */
-#define MAX_COLS	128
+#define MAX_COLS	512
 
 /* Log base 2 of 1024 is 10 (2^10 == 1024) */
 #define LOG1024		10

Modified: projects/calloutng/etc/devd/usb.conf
==============================================================================
--- projects/calloutng/etc/devd/usb.conf	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/etc/devd/usb.conf	Sat Dec 15 15:01:46 2012	(r244266)
@@ -423,6 +423,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0499";
+	match "product" "(0x1000|0x1001|0x1002|0x1003|0x1004|0x1005|0x1006|0x1007|0x1008|0x1009|0x100a|0x100c|0x100d|0x100e|0x100f|0x1010|0x1011|0x1012|0x1013|0x1014|0x1015|0x1016|0x1017|0x1018|0x1019|0x101a|0x101b|0x101c|0x101d|0x101e|0x101f|0x1020|0x1021|0x1022|0x1023|0x1024|0x1025|0x1026|0x1027|0x1028|0x1029|0x102a|0x102b|0x102e|0x1030|0x1031|0x1032|0x1033|0x1034|0x1035|0x1036|0x1037|0x1038|0x1039|0x103a|0x103b|0x103c|0x103d|0x103e|0x103f|0x1040|0x1041|0x1042|0x1043|0x1044|0x1045|0x104e|0x104f|0x1050|0x1051|0x1052|0x1053|0x1054|0x1055|0x1056|0x1057|0x1058|0x1059|0x105a|0x105b|0x105c|0x105d|0x1503|0x2000|0x2001|0x2002|0x2003|0x5000|0x5001|0x5002|0x5003|0x5004|0x5005|0x5006|0x5007|0x5008|0x5009|0x500a|0x500b|0x500c|0x500d|0x500e|0x500f|0x7000|0x7010)";
+	action "kldload -n snd_uaudio";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x049f";
 	match "product" "(0x0003|0x0032)";
 	action "kldload -n uipaq";
@@ -2647,6 +2655,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x0f3d";
+	match "product" "0x68aa";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x0f4e";
 	match "product" "0x0200";
 	action "kldload -n uipaq";
@@ -4199,6 +4215,14 @@ nomatch 32 {
 nomatch 32 {
 	match "bus" "uhub[0-9]+";
 	match "mode" "host";
+	match "vendor" "0x22de";
+	match "product" "0x6801";
+	action "kldload -n u3g";
+};
+
+nomatch 32 {
+	match "bus" "uhub[0-9]+";
+	match "mode" "host";
 	match "vendor" "0x2478";
 	match "product" "0x2008";
 	action "kldload -n uplcom";
@@ -4611,5 +4635,5 @@ nomatch 32 {
 	action "kldload -n umass";
 };
 
-# 2279 USB entries processed
+# 2386 USB entries processed
 

Modified: projects/calloutng/etc/rc.d/auditdistd
==============================================================================
--- projects/calloutng/etc/rc.d/auditdistd	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/etc/rc.d/auditdistd	Sat Dec 15 15:01:46 2012	(r244266)
@@ -14,7 +14,7 @@ name="auditdistd"
 rcvar="${name}_enable"
 pidfile="/var/run/${name}.pid"
 command="/usr/sbin/${name}"
-required_files="/etc/${name}.conf"
+required_files="/etc/security/${name}.conf"
 extra_commands="reload"
 
 load_rc_config $name

Modified: projects/calloutng/etc/rc.d/savecore
==============================================================================
--- projects/calloutng/etc/rc.d/savecore	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/etc/rc.d/savecore	Sat Dec 15 15:01:46 2012	(r244266)
@@ -62,7 +62,7 @@ savecore_start()
 		;;
 	esac
 
-	if savecore -C "${dumpdir}" "${dev}" >/dev/null; then
+	if savecore -C "${dev}" >/dev/null; then
 		savecore ${savecore_flags} ${dumpdir} ${dumpdev}
 		if checkyesno crashinfo_enable; then
 			${crashinfo_program} -d ${dumpdir}

Modified: projects/calloutng/etc/rc.d/sysctl
==============================================================================
--- projects/calloutng/etc/rc.d/sysctl	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/etc/rc.d/sysctl	Sat Dec 15 15:01:46 2012	(r244266)
@@ -8,51 +8,27 @@
 . /etc/rc.subr
 
 name="sysctl"
+command="/sbin/sysctl"
 stop_cmd=":"
 start_cmd="sysctl_start"
 reload_cmd="sysctl_start"
 lastload_cmd="sysctl_start last"
 extra_commands="reload lastload"
 
-#
-# Read in a file containing sysctl settings and set things accordingly.
-#
-parse_file()
-{
-	if [ -f $1 ]; then
-		while read var comments
-		do
-			case ${var} in
-			\#*|'')
-				;;
-			*)
-				mib=${var%=*}
-				val=${var#*=}
-
-				if current_value=`${SYSCTL} -n ${mib} 2>/dev/null`; then
-					case ${current_value} in
-					${val})
-						;;
-					*)
-						if ! sysctl "${var}" >/dev/null 2>&1; then
-							warn "unable to set ${var}"
-						fi
-						;;
-					esac
-				elif [ "$2" = "last" ]; then
-					warn "sysctl ${mib} does not exist."
-				fi
-				;;
-			esac
-		done < $1
-	fi
-}
-
 sysctl_start()
 {
-
-	parse_file /etc/sysctl.conf $1
-	parse_file /etc/sysctl.conf.local $1
+	case $1 in
+	last)
+		command_args="-i -f"
+	;;
+	*)
+		command_args="-f"
+	;;
+	esac
+
+	for _f in /etc/sysctl.conf /etc/sysctl.conf.local; do
+		[ -r ${_f} ] && ${command} ${command_args} ${_f} > /dev/null
+	done
 }
 
 load_rc_config $name

Modified: projects/calloutng/lib/libc/gen/sysctlbyname.c
==============================================================================
--- projects/calloutng/lib/libc/gen/sysctlbyname.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/lib/libc/gen/sysctlbyname.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -19,13 +19,10 @@ sysctlbyname(const char *name, void *old
     const void *newp, size_t newlen)
 {
 	int real_oid[CTL_MAXNAME+2];
-	int error;
 	size_t oidlen;
 
 	oidlen = sizeof(real_oid) / sizeof(int);
-	error = sysctlnametomib(name, real_oid, &oidlen);
-	if (error < 0) 
-		return (error);
-	error = sysctl(real_oid, oidlen, oldp, oldlenp, newp, newlen);
-	return (error);
+	if (sysctlnametomib(name, real_oid, &oidlen) < 0)
+		return (-1);
+	return (sysctl(real_oid, oidlen, oldp, oldlenp, newp, newlen));
 }

Modified: projects/calloutng/sbin/growfs/growfs.c
==============================================================================
--- projects/calloutng/sbin/growfs/growfs.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/sbin/growfs/growfs.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -1487,6 +1487,12 @@ main(int argc, char **argv)
 		}
 	}
 
+	/*
+	 * Make sure the new size is a multiple of fs_fsize; /dev/ufssuspend
+	 * only supports fragment-aligned IO requests.
+	 */
+	size -= size % osblock.fs_fsize;
+
 	if (size <= (uint64_t)(osblock.fs_size * osblock.fs_fsize)) {
 		humanize_number(oldsizebuf, sizeof(oldsizebuf),
 		    osblock.fs_size * osblock.fs_fsize,

Modified: projects/calloutng/sbin/savecore/savecore.8
==============================================================================
--- projects/calloutng/sbin/savecore/savecore.8	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/sbin/savecore/savecore.8	Sat Dec 15 15:01:46 2012	(r244266)
@@ -28,7 +28,7 @@
 .\"     From: @(#)savecore.8	8.1 (Berkeley) 6/5/93
 .\" $FreeBSD$
 .\"
-.Dd December 24, 2008
+.Dd December 14, 2012
 .Dt SAVECORE 8
 .Os
 .Sh NAME
@@ -37,10 +37,12 @@
 .Sh SYNOPSIS
 .Nm
 .Fl c
+.Op Fl v
+.Op Ar device ...
 .Nm
 .Fl C
 .Op Fl v
-.Op Ar directory device
+.Op Ar device ...
 .Nm
 .Op Fl fkvz
 .Op Ar directory Op Ar device ...

Modified: projects/calloutng/sbin/savecore/savecore.c
==============================================================================
--- projects/calloutng/sbin/savecore/savecore.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/sbin/savecore/savecore.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -194,7 +194,7 @@ check_space(const char *savedir, off_t d
 		syslog(LOG_ERR, "%s: %m", savedir);
 		exit(1);
 	}
- 	spacefree = ((off_t) fsbuf.f_bavail * fsbuf.f_bsize) / 1024;
+	spacefree = ((off_t) fsbuf.f_bavail * fsbuf.f_bsize) / 1024;
 	totfree = ((off_t) fsbuf.f_bfree * fsbuf.f_bsize) / 1024;
 
 	(void)snprintf(path, sizeof(path), "%s/minfree", savedir);
@@ -209,7 +209,7 @@ check_space(const char *savedir, off_t d
 	}
 
 	needed = dumpsize / 1024 + 2;	/* 2 for info file */
- 	if (((minfree > 0) ? spacefree : totfree) - needed < minfree) {
+	if (((minfree > 0) ? spacefree : totfree) - needed < minfree) {
 		syslog(LOG_WARNING,
 	"no dump, not enough free space on device (%lld available, need %lld)",
 		    (long long)(minfree > 0 ? spacefree : totfree),
@@ -262,7 +262,7 @@ DoRegularFile(int fd, off_t dumpsize, ch
 					if (he >= hs + BLOCKSIZE)
 						break;
 				}
-			
+
 				/* back down to a block boundary */
 				he &= BLOCKMASK;
 
@@ -394,7 +394,7 @@ DoFile(const char *savedir, const char *
 	if (verbose)
 		printf("checking for kernel dump on device %s\n", device);
 
-	fd = open(device, O_RDWR);
+	fd = open(device, (checkfor || keep) ? O_RDONLY : O_RDWR);
 	if (fd < 0) {
 		syslog(LOG_ERR, "%s: %m", device);
 		return;
@@ -433,7 +433,7 @@ DoFile(const char *savedir, const char *
 			syslog(LOG_ERR,
 			    "unknown version (%d) in last dump header on %s",
 			    dtoh32(kdhl.version), device);
-	
+
 			status = STATUS_BAD;
 			if (force == 0)
 				goto closefd;
@@ -444,7 +444,7 @@ DoFile(const char *savedir, const char *
 			syslog(LOG_ERR,
 			    "unknown version (%d) in last dump header on %s",
 			    dtoh32(kdhl.version), device);
-	
+
 			status = STATUS_BAD;
 			if (force == 0)
 				goto closefd;
@@ -472,7 +472,7 @@ DoFile(const char *savedir, const char *
 			syslog(LOG_ERR,
 			    "unknown version (%d) in last dump header on %s",
 			    dtoh32(kdhl.version), device);
-	
+
 			status = STATUS_BAD;
 			if (force == 0)
 				goto closefd;
@@ -612,7 +612,7 @@ DoFile(const char *savedir, const char *
 		printf("dump saved\n");
 
 nuke:
-	if (clear || !keep) {
+	if (!keep) {
 		if (verbose)
 			printf("clearing dump header\n");
 		memcpy(kdhl.magic, KERNELDUMPMAGIC_CLEARED, sizeof kdhl.magic);
@@ -636,8 +636,8 @@ static void
 usage(void)
 {
 	fprintf(stderr, "%s\n%s\n%s\n",
-	    "usage: savecore -c",
-	    "       savecore -C [-v] [directory device]",
+	    "usage: savecore -c [-v] [device ...]",
+	    "       savecore -C [-v] [device ...]",
 	    "       savecore [-fkvz] [directory [device ...]]");
 	exit (1);
 }
@@ -681,9 +681,11 @@ main(int argc, char **argv)
 		}
 	if (checkfor && (clear || force || keep))
 		usage();
+	if (clear && (compress || keep))
+		usage();
 	argc -= optind;
 	argv += optind;
-	if (argc >= 1) {
+	if (argc >= 1 && !checkfor && !clear) {
 		error = chdir(argv[0]);
 		if (error) {
 			syslog(LOG_ERR, "chdir(%s): %m", argv[0]);

Modified: projects/calloutng/sbin/sysctl/sysctl.8
==============================================================================
--- projects/calloutng/sbin/sysctl/sysctl.8	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/sbin/sysctl/sysctl.8	Sat Dec 15 15:01:46 2012	(r244266)
@@ -28,7 +28,7 @@
 .\"	From: @(#)sysctl.8	8.1 (Berkeley) 6/6/93
 .\" $FreeBSD$
 .\"
-.Dd January 17, 2011
+.Dd December 13, 2012
 .Dt SYSCTL 8
 .Os
 .Sh NAME
@@ -37,6 +37,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl bdehiNnoRTqx
+.Op Fl f Ar filename
 .Ar name Ns Op = Ns Ar value
 .Ar ...
 .Nm
@@ -80,6 +81,11 @@ This option is ignored if either
 or
 .Fl n
 is specified, or a variable is being set.
+.It Fl f Ar filename
+Specify a file which contains a pair of name and value in each line.
+.Nm
+reads and processes the specified file first and then processes the name
+and value pairs in the command line argument.
 .It Fl h
 Format output for human, rather than machine, readability.
 .It Fl i

Modified: projects/calloutng/sbin/sysctl/sysctl.c
==============================================================================
--- projects/calloutng/sbin/sysctl/sysctl.c	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/sbin/sysctl/sysctl.c	Sat Dec 15 15:01:46 2012	(r244266)
@@ -56,13 +56,17 @@ static const char rcsid[] =
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sysexits.h>
 #include <unistd.h>
 
+static const char *conffile;
+
 static int	aflag, bflag, dflag, eflag, hflag, iflag;
-static int	Nflag, nflag, oflag, qflag, Tflag, Wflag, xflag, warncount;
+static int	Nflag, nflag, oflag, qflag, Tflag, Wflag, xflag;
 
 static int	oidfmt(int *, int, char *, u_int *);
-static void	parse(const char *);
+static int	parsefile(const char *);
+static int	parse(const char *, int);
 static int	show_var(int *, int);
 static int	sysctl_all(int *oid, int len);
 static int	name2oid(char *, int *);
@@ -74,7 +78,7 @@ usage(void)
 {
 
 	(void)fprintf(stderr, "%s\n%s\n",
-	    "usage: sysctl [-bdehiNnoqTWx] name[=value] ...",
+	    "usage: sysctl [-bdehiNnoqTWx] [-f filename] name[=value] ...",
 	    "       sysctl [-bdehNnoqTWx] -a");
 	exit(1);
 }
@@ -83,12 +87,13 @@ int
 main(int argc, char **argv)
 {
 	int ch;
+	int warncount = 0;
 
 	setlocale(LC_NUMERIC, "");
 	setbuf(stdout,0);
 	setbuf(stderr,0);
 
-	while ((ch = getopt(argc, argv, "AabdehiNnoqTwWxX")) != -1) {
+	while ((ch = getopt(argc, argv, "Aabdef:hiNnoqTwWxX")) != -1) {
 		switch (ch) {
 		case 'A':
 			/* compatibility */
@@ -106,6 +111,9 @@ main(int argc, char **argv)
 		case 'e':
 			eflag = 1;
 			break;
+		case 'f':
+			conffile = optarg;
+			break;
 		case 'h':
 			hflag = 1;
 			break;
@@ -152,13 +160,17 @@ main(int argc, char **argv)
 		usage();
 	if (aflag && argc == 0)
 		exit(sysctl_all(0, 0));
-	if (argc == 0)
+	if (argc == 0 && conffile == NULL)
 		usage();
 
 	warncount = 0;
+	if (conffile != NULL)
+		warncount += parsefile(conffile);
+
 	while (argc-- > 0)
-		parse(*argv++);
-	exit(warncount);
+		warncount += parse(*argv++, 0);
+
+	return (warncount);
 }
 
 /*
@@ -166,8 +178,8 @@ main(int argc, char **argv)
  * Lookup and print out the MIB entry if it exists.
  * Set a new value if requested.
  */
-static void
-parse(const char *string)
+static int
+parse(const char *string, int lineno)
 {
 	int len, i, j;
 	void *newval = 0;
@@ -179,13 +191,20 @@ parse(const char *string)
 	int64_t i64val;
 	uint64_t u64val;
 	int mib[CTL_MAXNAME];
-	char *cp, *bufp, buf[BUFSIZ], *endptr, fmt[BUFSIZ];
+	char *cp, *bufp, buf[BUFSIZ], *endptr, fmt[BUFSIZ], line[BUFSIZ];
 	u_int kind;
 
+	if (lineno)
+		snprintf(line, sizeof(line), " at line %d", lineno);
+	else
+		line[0] = '\0';
+
 	cp = buf;
-	if (snprintf(buf, BUFSIZ, "%s", string) >= BUFSIZ)
-		errx(1, "oid too long: '%s'", string);
-	bufp = strsep(&cp, "=");
+	if (snprintf(buf, BUFSIZ, "%s", string) >= BUFSIZ) {
+		warn("oid too long: '%s'%s", string, line);
+		return (1);
+	}
+	bufp = strsep(&cp, "=:");
 	if (cp != NULL) {
 		/* Tflag just lists tunables, do not allow assignment */
 		if (Tflag || Wflag) {
@@ -194,6 +213,14 @@ parse(const char *string)
 		}
 		while (isspace(*cp))
 			cp++;
+		/* Strip a pair of " or ' if any. */
+		switch (*cp) {
+		case '\"':
+		case '\'':
+			if (cp[strlen(cp) - 1] == *cp)
+				cp[strlen(cp) - 1] = '\0';
+			cp++;
+		}
 		newval = cp;
 		newsize = strlen(cp);
 	}
@@ -201,15 +228,22 @@ parse(const char *string)
 
 	if (len < 0) {
 		if (iflag)
-			return;
+			return (0);
 		if (qflag)
-			exit(1);
-		else
-			errx(1, "unknown oid '%s'", bufp);
+			return (1);
+		else {
+			warn("unknown oid '%s'%s", bufp, line);
+			return (1);
+		}
 	}
 
-	if (oidfmt(mib, len, fmt, &kind))
-		err(1, "couldn't find format of oid '%s'", bufp);
+	if (oidfmt(mib, len, fmt, &kind)) {
+		warn("couldn't find format of oid '%s'%s", bufp, line);
+		if (iflag)
+			return (1);
+		else
+			exit(1);
+	}
 
 	if (newval == NULL || dflag) {
 		if ((kind & CTLTYPE) == CTLTYPE_NODE) {
@@ -225,16 +259,18 @@ parse(const char *string)
 				putchar('\n');
 		}
 	} else {
-		if ((kind & CTLTYPE) == CTLTYPE_NODE)
-			errx(1, "oid '%s' isn't a leaf node", bufp);
+		if ((kind & CTLTYPE) == CTLTYPE_NODE) {
+			warn("oid '%s' isn't a leaf node%s", bufp, line);
+			return (1);
+		}
 
 		if (!(kind & CTLFLAG_WR)) {
 			if (kind & CTLFLAG_TUN) {
-				warnx("oid '%s' is a read only tunable", bufp);
-				errx(1, "Tunable values are set in /boot/loader.conf");
-			} else {
-				errx(1, "oid '%s' is read only", bufp);
-			}
+				warnx("oid '%s' is a read only tunable%p", bufp, line);
+				warnx("Tunable values are set in /boot/loader.conf");
+			} else
+				warnx("oid '%s' is read only%s", bufp, line);
+			return (1);
 		}
 
 		if ((kind & CTLTYPE) == CTLTYPE_INT ||
@@ -243,47 +279,59 @@ parse(const char *string)
 		    (kind & CTLTYPE) == CTLTYPE_ULONG ||
 		    (kind & CTLTYPE) == CTLTYPE_S64 ||
 		    (kind & CTLTYPE) == CTLTYPE_U64) {
-			if (strlen(newval) == 0)
-				errx(1, "empty numeric value");
+			if (strlen(newval) == 0) {
+				warnx("empty numeric value");
+				return (1);
+			}
 		}
 
 		switch (kind & CTLTYPE) {
 			case CTLTYPE_INT:
 				if (strcmp(fmt, "IK") == 0) {
-					if (!set_IK(newval, &intval))
-						errx(1, "invalid value '%s'",
-						    (char *)newval);
+					if (!set_IK(newval, &intval)) {
+						warnx("invalid value '%s'%s",
+						    (char *)newval, line);
+						return (1);
+					}
  				} else {
 					intval = (int)strtol(newval, &endptr,
 					    0);
-					if (endptr == newval || *endptr != '\0')
-						errx(1, "invalid integer '%s'",
-						    (char *)newval);
+					if (endptr == newval || *endptr != '\0') {
+						warnx("invalid integer '%s'%s",
+						    (char *)newval, line);
+						return (1);
+					}
 				}
 				newval = &intval;
 				newsize = sizeof(intval);
 				break;
 			case CTLTYPE_UINT:
 				uintval = (int) strtoul(newval, &endptr, 0);
-				if (endptr == newval || *endptr != '\0')
-					errx(1, "invalid unsigned integer '%s'",
-					    (char *)newval);
+				if (endptr == newval || *endptr != '\0') {
+					warnx("invalid unsigned integer '%s'%s",
+					    (char *)newval, line);
+					return (1);
+				}
 				newval = &uintval;
 				newsize = sizeof(uintval);
 				break;
 			case CTLTYPE_LONG:
 				longval = strtol(newval, &endptr, 0);
-				if (endptr == newval || *endptr != '\0')
-					errx(1, "invalid long integer '%s'",
-					    (char *)newval);
+				if (endptr == newval || *endptr != '\0') {
+					warnx("invalid long integer '%s'%s",
+					    (char *)newval, line);
+					return (1);
+				}
 				newval = &longval;
 				newsize = sizeof(longval);
 				break;
 			case CTLTYPE_ULONG:
 				ulongval = strtoul(newval, &endptr, 0);
-				if (endptr == newval || *endptr != '\0')
-					errx(1, "invalid unsigned long integer"
-					    " '%s'", (char *)newval);
+				if (endptr == newval || *endptr != '\0') {
+					warnx("invalid unsigned long integer"
+					    " '%s'%s", (char *)newval, line);
+					return (1);
+				}
 				newval = &ulongval;
 				newsize = sizeof(ulongval);
 				break;
@@ -291,26 +339,31 @@ parse(const char *string)
 				break;
 			case CTLTYPE_S64:
 				i64val = strtoimax(newval, &endptr, 0);
-				if (endptr == newval || *endptr != '\0')
-					errx(1, "invalid int64_t '%s'",
-					    (char *)newval);
+				if (endptr == newval || *endptr != '\0') {
+					warnx("invalid int64_t '%s'%s",
+					    (char *)newval, line);
+					return (1);
+				}
 				newval = &i64val;
 				newsize = sizeof(i64val);
 				break;
 			case CTLTYPE_U64:
 				u64val = strtoumax(newval, &endptr, 0);
-				if (endptr == newval || *endptr != '\0')
-					errx(1, "invalid uint64_t '%s'",
-					    (char *)newval);
+				if (endptr == newval || *endptr != '\0') {
+					warnx("invalid uint64_t '%s'%s",
+					    (char *)newval, line);
+					return (1);
+				}
 				newval = &u64val;
 				newsize = sizeof(u64val);
 				break;
 			case CTLTYPE_OPAQUE:
 				/* FALLTHROUGH */
 			default:
-				errx(1, "oid '%s' is type %d,"
-					" cannot set that", bufp,
-					kind & CTLTYPE);
+				warnx("oid '%s' is type %d,"
+					" cannot set that%s", bufp,
+					kind & CTLTYPE, line);
+				return (1);
 		}
 
 		i = show_var(mib, len);
@@ -319,18 +372,20 @@ parse(const char *string)
 				putchar('\n');
 			switch (errno) {
 			case EOPNOTSUPP:
-				errx(1, "%s: value is not available",
-					string);
+				warnx("%s: value is not available%s",
+					string, line);
+				return (1);
 			case ENOTDIR:
-				errx(1, "%s: specification is incomplete",
-					string);
+				warnx("%s: specification is incomplete%s",
+					string, line);
+				return (1);
 			case ENOMEM:
-				errx(1, "%s: type is unknown to this program",
-					string);
+				warnx("%s: type is unknown to this program%s",
+					string, line);
+				return (1);
 			default:
-				warn("%s", string);
-				warncount++;
-				return;
+				warn("%s%s", string, line);
+				return (1);
 			}
 		}
 		if (!bflag)
@@ -342,6 +397,58 @@ parse(const char *string)
 			putchar('\n');
 		nflag = i;
 	}
+
+	return (0);
+}
+
+static int
+parsefile(const char *filename)
+{
+	FILE *file;
+	char line[BUFSIZ], *p, *pq, *pdq;
+	int warncount = 0, lineno = 0;
+
+	file = fopen(filename, "r");
+	if (file == NULL)
+		err(EX_NOINPUT, "%s", filename);
+	while (fgets(line, sizeof(line), file) != NULL) {
+		lineno++;
+		p = line;
+		pq = strchr(line, '\'');
+		pdq = strchr(line, '\"');
+		/* Replace the first # with \0. */
+		while((p = strchr(p, '#')) != NULL) {
+			if (pq != NULL && p > pq) {
+				if ((p = strchr(pq+1, '\'')) != NULL)
+					*(++p) = '\0';
+				break;
+			} else if (pdq != NULL && p > pdq) {
+				if ((p = strchr(pdq+1, '\"')) != NULL)
+					*(++p) = '\0';
+				break;
+			} else if (p == line || *(p-1) != '\\') {
+				*p = '\0';
+				break;
+			}
+			p++;
+		}
+		/* Trim spaces */
+		p = line + strlen(line) - 1;
+		while (p >= line && isspace((int)*p)) {
+			*p = '\0';
+			p--;
+		}
+		p = line;
+		while (isspace((int)*p))
+			p++;
+		if (*p == '\0')
+			continue;
+		else
+			warncount += parse(p, lineno);
+	}
+	fclose(file);
+
+	return (warncount);
 }
 
 /* These functions will dump out various interesting structures. */

Modified: projects/calloutng/share/misc/committers-src.dot
==============================================================================
--- projects/calloutng/share/misc/committers-src.dot	Sat Dec 15 14:59:00 2012	(r244265)
+++ projects/calloutng/share/misc/committers-src.dot	Sat Dec 15 15:01:46 2012	(r244266)
@@ -241,6 +241,7 @@ rstone [label="Ryan Stone\nrstone@FreeBS
 ru [label="Ruslan Ermilov\nru@FreeBSD.org\n1999/05/27"]
 rwatson [label="Robert N. M. Watson\nrwatson@FreeBSD.org\n1999/12/16"]
 sam [label="Sam Leffler\nsam@FreeBSD.org\n2002/07/02"]
+sbruno [label="Sean Bruno\nsbruno@FreeBSD.org\n????/??/??"]
 sanpei [label="MIHIRA Sanpei Yoshiro\nsanpei@FreeBSD.org\n2000/06/19"]
 scf [label="Sean C. Farley\nscf@FreeBSD.org\n2007/06/24"]
 schweikh [label="Jens Schweikhardt\nschweikh@FreeBSD.org\n2001/04/06"]
@@ -249,6 +250,7 @@ sephe [label="Sepherosa Ziehau\nsephe@Fr

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



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