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...
Alexander Motin
mav at FreeBSD.org
Sat Dec 15 15:01:50 UTC 2012
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 at FreeBS
ru [label="Ruslan Ermilov\nru at FreeBSD.org\n1999/05/27"]
rwatson [label="Robert N. M. Watson\nrwatson at FreeBSD.org\n1999/12/16"]
sam [label="Sam Leffler\nsam at FreeBSD.org\n2002/07/02"]
+sbruno [label="Sean Bruno\nsbruno at FreeBSD.org\n????/??/??"]
sanpei [label="MIHIRA Sanpei Yoshiro\nsanpei at FreeBSD.org\n2000/06/19"]
scf [label="Sean C. Farley\nscf at FreeBSD.org\n2007/06/24"]
schweikh [label="Jens Schweikhardt\nschweikh at FreeBSD.org\n2001/04/06"]
@@ -249,6 +250,7 @@ sephe [label="Sepherosa Ziehau\nsephe at Fr
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list