Date: Sun, 8 Apr 2007 17:21:35 GMT From: Matt Jacob <mjacob@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 117668 for review Message-ID: <200704081721.l38HLZdZ036142@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=117668 Change 117668 by mjacob@mjexp on 2007/04/08 17:20:36 IFC Affected files ... .. //depot/projects/mjexp/cddl/lib/Makefile#2 integrate .. //depot/projects/mjexp/cddl/lib/libzpool/Makefile#2 integrate .. //depot/projects/mjexp/cddl/usr.bin/Makefile#2 integrate .. //depot/projects/mjexp/cddl/usr.sbin/Makefile#2 integrate .. //depot/projects/mjexp/contrib/openpam/lib/openpam_readline.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/cmd/zpool/zpool_main.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/cmd/ztest/ztest.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs.h#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs_import.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs_status.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs_util.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/lib/libzpool/common/kernel.c#2 integrate .. //depot/projects/mjexp/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#2 integrate .. //depot/projects/mjexp/etc/devd.conf#4 integrate .. //depot/projects/mjexp/include/stdio.h#3 integrate .. //depot/projects/mjexp/lib/libarchive/Makefile#7 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read.3#8 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_extract.c#7 integrate .. //depot/projects/mjexp/lib/libarchive/archive_read_support_format_all.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/archive_write_disk.c#4 integrate .. //depot/projects/mjexp/lib/libarchive/test/Makefile#3 integrate .. //depot/projects/mjexp/lib/libc/sys/ptrace.2#3 integrate .. //depot/projects/mjexp/libexec/rtld-elf/i386/Symbol.map#2 integrate .. //depot/projects/mjexp/libexec/rtld-elf/rtld.c#4 integrate .. //depot/projects/mjexp/release/doc/en_US.ISO8859-1/relnotes/article.sgml#10 integrate .. //depot/projects/mjexp/share/man/man4/mpt.4#2 integrate .. //depot/projects/mjexp/share/man/man4/pci.4#2 integrate .. //depot/projects/mjexp/share/misc/committers-ports.dot#3 integrate .. //depot/projects/mjexp/sys/boot/pc98/boot0.5/Makefile#2 integrate .. //depot/projects/mjexp/sys/boot/pc98/boot0.5/boot0.5.s#3 integrate .. //depot/projects/mjexp/sys/boot/pc98/boot0.5/ldscript#1 branch .. //depot/projects/mjexp/sys/boot/pc98/boot0.5/putssjis.s#1 branch .. //depot/projects/mjexp/sys/boot/pc98/boot0.5/selector.s#2 integrate .. //depot/projects/mjexp/sys/boot/pc98/boot0.5/start.s#2 integrate .. //depot/projects/mjexp/sys/cam/scsi/scsi_sg.c#1 branch .. //depot/projects/mjexp/sys/cam/scsi/scsi_sg.h#1 branch .. //depot/projects/mjexp/sys/compat/linux/linux_ioctl.c#2 integrate .. //depot/projects/mjexp/sys/compat/linux/linux_ioctl.h#2 integrate .. //depot/projects/mjexp/sys/compat/opensolaris/kern/opensolaris_misc.c#1 branch .. //depot/projects/mjexp/sys/compat/opensolaris/sys/misc.h#1 branch .. //depot/projects/mjexp/sys/conf/NOTES#17 integrate .. //depot/projects/mjexp/sys/conf/files#18 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/common/atomic/amd64/atomic.S#1 branch .. //depot/projects/mjexp/sys/contrib/opensolaris/common/atomic/i386/atomic.S#1 branch .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/arch/amd64/atomic.S#2 delete .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/arch/i386/atomic.S#2 delete .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/arc.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/spa.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/spa_config.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/os/taskq.c#2 integrate .. //depot/projects/mjexp/sys/contrib/opensolaris/uts/common/sys/fs/zfs.h#2 integrate .. //depot/projects/mjexp/sys/dev/ata/ata-dma.c#4 integrate .. //depot/projects/mjexp/sys/dev/cxgb/cxgb_adapter.h#3 integrate .. //depot/projects/mjexp/sys/dev/cxgb/cxgb_lro.c#2 integrate .. //depot/projects/mjexp/sys/dev/cxgb/cxgb_osdep.h#2 integrate .. //depot/projects/mjexp/sys/dev/cxgb/cxgb_sge.c#3 integrate .. //depot/projects/mjexp/sys/dev/cxgb/sys/mvec.h#1 branch .. //depot/projects/mjexp/sys/dev/cxgb/sys/uipc_mvec.c#1 branch .. //depot/projects/mjexp/sys/dev/mpt/mpt_cam.c#15 integrate .. //depot/projects/mjexp/sys/dev/sound/pci/cmi.c#5 integrate .. //depot/projects/mjexp/sys/kern/kern_jail.c#9 integrate .. //depot/projects/mjexp/sys/modules/Makefile#9 integrate .. //depot/projects/mjexp/sys/modules/cam/Makefile#2 integrate .. //depot/projects/mjexp/sys/modules/cxgb/Makefile#2 integrate .. //depot/projects/mjexp/sys/modules/zfs/Makefile#2 integrate .. //depot/projects/mjexp/sys/netinet/libalias/alias_db.c#3 integrate .. //depot/projects/mjexp/sys/netinet/libalias/alias_skinny.c#2 integrate .. //depot/projects/mjexp/sys/sys/unistd.h#3 integrate .. //depot/projects/mjexp/tools/regression/netinet/ipblock/Makefile#1 branch .. //depot/projects/mjexp/tools/regression/netinet/ipblock/ipblock.c#1 branch .. //depot/projects/mjexp/usr.bin/tar/read.c#4 integrate .. //depot/projects/mjexp/usr.sbin/sa/pdb.c#2 integrate Differences ... ==== //depot/projects/mjexp/cddl/lib/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/cddl/lib/Makefile,v 1.1 2007/04/06 01:08:56 pjd Exp $ +# $FreeBSD: src/cddl/lib/Makefile,v 1.2 2007/04/07 19:12:09 des Exp $ .include <bsd.own.mk> @@ -11,10 +11,8 @@ SUBDIR+=${_libzpool} .endif -.if ${MACHINE_ARCH} == "i386" -.if ${MACHINE} == "i386" +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64" _libzpool= libzpool .endif -.endif .include <bsd.subdir.mk> ==== //depot/projects/mjexp/cddl/lib/libzpool/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/cddl/lib/libzpool/Makefile,v 1.1 2007/04/06 01:08:57 pjd Exp $ +# $FreeBSD: src/cddl/lib/libzpool/Makefile,v 1.2 2007/04/07 23:54:53 pjd Exp $ .include "${.CURDIR}/../../../sys/contrib/opensolaris/uts/common/Makefile.files" @@ -11,7 +11,7 @@ # LIST_SRCS .PATH: ${.CURDIR}/../../../sys/contrib/opensolaris/uts/common/os # ATOMIC_SRCS -.PATH: ${.CURDIR}/../../../sys/contrib/opensolaris/uts/common/arch/${MACHINE_ARCH} +.PATH: ${.CURDIR}/../../../sys/contrib/opensolaris/common/atomic/${MACHINE_ARCH} LIB= zpool SHLIB_MAJOR?=1 ==== //depot/projects/mjexp/cddl/usr.bin/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/cddl/usr.bin/Makefile,v 1.1 2007/04/06 01:08:58 pjd Exp $ +# $FreeBSD: src/cddl/usr.bin/Makefile,v 1.2 2007/04/07 19:12:09 des Exp $ .include <bsd.own.mk> @@ -6,10 +6,8 @@ SUBDIR= ${_ztest} .endif -.if ${MACHINE_ARCH} == "i386" -.if ${MACHINE} == "i386" +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64" _ztest= ztest .endif -.endif .include <bsd.subdir.mk> ==== //depot/projects/mjexp/cddl/usr.sbin/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/cddl/usr.sbin/Makefile,v 1.1 2007/04/06 01:08:58 pjd Exp $ +# $FreeBSD: src/cddl/usr.sbin/Makefile,v 1.2 2007/04/07 19:12:09 des Exp $ .include <bsd.own.mk> @@ -7,10 +7,8 @@ SUBDIR+=${_zdb} .endif -.if ${MACHINE_ARCH} == "i386" -.if ${MACHINE} == "i386" +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64" _zdb= zdb .endif -.endif .include <bsd.subdir.mk> ==== //depot/projects/mjexp/contrib/openpam/lib/openpam_readline.c#2 (text) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/openpam/lib/openpam_readline.c#3 $ + * $Id: openpam_readline.c 380 2006-03-14 14:42:09Z des $ */ #include <ctype.h> @@ -52,7 +52,7 @@ char * openpam_readline(FILE *f, int *lineno, size_t *lenp) { - unsigned char *line; + char *line; size_t len, size; int ch; @@ -63,7 +63,7 @@ #define line_putch(ch) do { \ if (len >= size - 1) { \ - unsigned char *tmp = realloc(line, size *= 2); \ + char *tmp = realloc(line, size *= 2); \ if (tmp == NULL) \ goto fail; \ line = tmp; \ @@ -83,7 +83,7 @@ /* eof */ if (ch == EOF) { /* remove trailing whitespace */ - while (len > 0 && isspace(line[len - 1])) + while (len > 0 && isspace((int)line[len - 1])) --len; line[len] = '\0'; if (len == 0) @@ -96,7 +96,7 @@ ++*lineno; /* remove trailing whitespace */ - while (len > 0 && isspace(line[len - 1])) + while (len > 0 && isspace((int)line[len - 1])) --len; line[len] = '\0'; /* skip blank lines */ ==== //depot/projects/mjexp/contrib/opensolaris/cmd/zpool/zpool_main.c#2 (text+ko) ==== @@ -1082,6 +1082,10 @@ "incompatible version.\n")); break; + case ZPOOL_STATUS_HOSTID_MISMATCH: + (void) printf(gettext("status: The pool was last accessed by " + "another system.\n")); + break; default: /* * No other status can be seen when importing pools. @@ -1098,6 +1102,10 @@ "imported using its name or numeric identifier, " "though\n\tsome features will not be available " "without an explicit 'zpool upgrade'.\n")); + else if (reason == ZPOOL_STATUS_HOSTID_MISMATCH) + (void) printf(gettext("action: The pool can be " + "imported using its name or numeric " + "identifier and\n\tthe '-f' flag.\n")); else (void) printf(gettext("action: The pool can be " "imported using its name or numeric " @@ -1187,10 +1195,37 @@ "is formatted using a newer ZFS version\n"), name); return (1); } else if (state != POOL_STATE_EXPORTED && !force) { - (void) fprintf(stderr, gettext("cannot import '%s': pool " - "may be in use from other system\n"), name); - (void) fprintf(stderr, gettext("use '-f' to import anyway\n")); - return (1); + uint64_t hostid; + + if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_HOSTID, + &hostid) == 0) { + if ((unsigned long)hostid != gethostid()) { + char *hostname; + uint64_t timestamp; + time_t t; + + verify(nvlist_lookup_string(config, + ZPOOL_CONFIG_HOSTNAME, &hostname) == 0); + verify(nvlist_lookup_uint64(config, + ZPOOL_CONFIG_TIMESTAMP, ×tamp) == 0); + t = timestamp; + (void) fprintf(stderr, gettext("cannot import " + "'%s': pool may be in use from other " + "system, it was last accessed by %s " + "(hostid: 0x%lx) on %s"), name, hostname, + (unsigned long)hostid, + asctime(localtime(&t))); + (void) fprintf(stderr, gettext("use '-f' to " + "import anyway\n")); + return (1); + } + } else { + (void) fprintf(stderr, gettext("cannot import '%s': " + "pool may be in use from other system\n"), name); + (void) fprintf(stderr, gettext("use '-f' to import " + "anyway\n")); + return (1); + } } if (zpool_import(g_zfs, config, newname, altroot) != 0) ==== //depot/projects/mjexp/contrib/opensolaris/cmd/ztest/ztest.c#2 (text+ko) ==== @@ -246,6 +246,8 @@ #define ZTEST_DIROBJ_BLOCKSIZE (1 << 10) #define ZTEST_DIRSIZE 256 +static void usage(boolean_t); + /* * These libumem hooks provide a reasonable set of defaults for the allocator's * debugging facilities. @@ -303,13 +305,17 @@ if (toupper(buf[0]) == ends[i]) break; } - if (i == strlen(ends)) - fatal(0, "invalid bytes suffix: %s", buf); + if (i == strlen(ends)) { + (void) fprintf(stderr, "ztest: invalid bytes suffix: %s\n", + buf); + usage(B_FALSE); + } if (buf[1] == '\0' || (toupper(buf[1]) == 'B' && buf[2] == '\0')) { return (10*i); } - fatal(0, "invalid bytes suffix: %s", buf); - return (-1); + (void) fprintf(stderr, "ztest: invalid bytes suffix: %s\n", buf); + usage(B_FALSE); + /* NOTREACHED */ } static uint64_t @@ -320,32 +326,40 @@ val = strtoull(buf, &end, 0); if (end == buf) { - fatal(0, "bad numeric value: %s", buf); + (void) fprintf(stderr, "ztest: bad numeric value: %s\n", buf); + usage(B_FALSE); } else if (end[0] == '.') { double fval = strtod(buf, &end); fval *= pow(2, str2shift(end)); - if (fval > UINT64_MAX) - fatal(0, "value too large: %s", buf); + if (fval > UINT64_MAX) { + (void) fprintf(stderr, "ztest: value too large: %s\n", + buf); + usage(B_FALSE); + } val = (uint64_t)fval; } else { int shift = str2shift(end); - if (shift >= 64 || (val << shift) >> shift != val) - fatal(0, "value too large: %s", buf); + if (shift >= 64 || (val << shift) >> shift != val) { + (void) fprintf(stderr, "ztest: value too large: %s\n", + buf); + usage(B_FALSE); + } val <<= shift; } return (val); } static void -usage(void) +usage(boolean_t requested) { char nice_vdev_size[10]; char nice_gang_bang[10]; + FILE *fp = requested ? stdout : stderr; nicenum(zopt_vdev_size, nice_vdev_size); nicenum(zio_gang_bang, nice_gang_bang); - (void) printf("Usage: %s\n" + (void) fprintf(fp, "Usage: %s\n" "\t[-v vdevs (default: %llu)]\n" "\t[-s size_of_each_vdev (default: %s)]\n" "\t[-a alignment_shift (default: %d) (use 0 for random)]\n" @@ -364,6 +378,7 @@ "\t[-T time] total run time (default: %llu sec)\n" "\t[-P passtime] time per pass (default: %llu sec)\n" "\t[-z zil failure rate (default: fail every 2^%llu allocs)]\n" + "\t[-h] (print help)\n" "", cmdname, (u_longlong_t)zopt_vdevs, /* -v */ @@ -382,7 +397,7 @@ (u_longlong_t)zopt_time, /* -T */ (u_longlong_t)zopt_passtime, /* -P */ (u_longlong_t)zio_zil_fail_shift); /* -z */ - exit(1); + exit(requested ? 0 : 1); } static uint64_t @@ -422,7 +437,7 @@ zio_zil_fail_shift = 5; while ((opt = getopt(argc, argv, - "v:s:a:m:r:R:d:t:g:i:k:p:f:VET:P:z:")) != EOF) { + "v:s:a:m:r:R:d:t:g:i:k:p:f:VET:P:z:h")) != EOF) { value = 0; switch (opt) { case 'v': @@ -496,9 +511,12 @@ case 'z': zio_zil_fail_shift = MIN(value, 16); break; + case 'h': + usage(B_TRUE); + break; case '?': default: - usage(); + usage(B_FALSE); break; } } ==== //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs.h#2 (text+ko) ==== @@ -98,6 +98,7 @@ EZFS_POOLPROPS, /* couldn't retrieve pool props */ EZFS_POOL_NOTSUP, /* ops not supported for this type of pool */ EZFS_POOL_INVALARG, /* invalid argument for this pool operation */ + EZFS_NAMETOOLONG, /* dataset name is too long */ EZFS_UNKNOWN }; @@ -192,6 +193,7 @@ ZPOOL_STATUS_CORRUPT_DATA, /* data errors in user (meta)data */ ZPOOL_STATUS_FAILING_DEV, /* device experiencing errors */ ZPOOL_STATUS_VERSION_NEWER, /* newer on-disk version */ + ZPOOL_STATUS_HOSTID_MISMATCH, /* last accessed by another system */ /* * The following are not faults per se, but still an error possibly ==== //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs_import.c#2 (text+ko) ==== @@ -379,7 +379,7 @@ uint_t i, nspares; boolean_t config_seen; uint64_t best_txg; - char *name; + char *name, *hostname; zfs_cmd_t zc = { 0 }; uint64_t version, guid; size_t len; @@ -388,6 +388,7 @@ nvlist_t **child = NULL; uint_t c; boolean_t isactive; + uint64_t hostid; if (nvlist_alloc(&ret, 0, 0) != 0) goto nomem; @@ -430,6 +431,8 @@ * pool guid * name * pool state + * hostid (if available) + * hostname (if available) */ uint64_t state; @@ -453,6 +456,20 @@ if (nvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, state) != 0) goto nomem; + hostid = 0; + if (nvlist_lookup_uint64(tmp, + ZPOOL_CONFIG_HOSTID, &hostid) == 0) { + if (nvlist_add_uint64(config, + ZPOOL_CONFIG_HOSTID, hostid) != 0) + goto nomem; + verify(nvlist_lookup_string(tmp, + ZPOOL_CONFIG_HOSTNAME, + &hostname) == 0); + if (nvlist_add_string(config, + ZPOOL_CONFIG_HOSTNAME, + hostname) != 0) + goto nomem; + } config_seen = B_TRUE; } @@ -622,6 +639,20 @@ } /* + * Restore the original information read from the actual label. + */ + (void) nvlist_remove(config, ZPOOL_CONFIG_HOSTID, + DATA_TYPE_UINT64); + (void) nvlist_remove(config, ZPOOL_CONFIG_HOSTNAME, + DATA_TYPE_STRING); + if (hostid != 0) { + verify(nvlist_add_uint64(config, ZPOOL_CONFIG_HOSTID, + hostid) == 0); + verify(nvlist_add_string(config, ZPOOL_CONFIG_HOSTNAME, + hostname) == 0); + } + + /* * Add this pool to the list of configs. */ verify(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, ==== //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs_status.c#2 (text+ko) ==== @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -43,6 +43,7 @@ #include <libzfs.h> #include <string.h> +#include <unistd.h> #include "libzfs_impl.h" /* @@ -50,7 +51,7 @@ * in libzfs.h. Note that there are some status results which go past the end * of this table, and hence have no associated message ID. */ -static char *msgid_table[] = { +static char *zfs_msgid_table[] = { "ZFS-8000-14", "ZFS-8000-2Q", "ZFS-8000-3C", @@ -60,7 +61,8 @@ "ZFS-8000-72", "ZFS-8000-8A", "ZFS-8000-9P", - "ZFS-8000-A5" + "ZFS-8000-A5", + "ZFS-8000-EY" }; /* @@ -69,7 +71,7 @@ * and the article referred to by 'zpool status' must match that indicated by * the syslog error message. We override missing data as well as corrupt pool. */ -static char *msgid_table_active[] = { +static char *zfs_msgid_table_active[] = { "ZFS-8000-14", "ZFS-8000-D3", /* overridden */ "ZFS-8000-D3", /* overridden */ @@ -82,7 +84,7 @@ "ZFS-8000-CS", /* overridden */ }; -#define NMSGID (sizeof (msgid_table) / sizeof (msgid_table[0])) +#define NMSGID (sizeof (zfs_msgid_table) / sizeof (zfs_msgid_table[0])) /* ARGSUSED */ static int @@ -178,6 +180,8 @@ uint_t vsc; uint64_t nerr; uint64_t version; + uint64_t stateval; + uint64_t hostid = 0; verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION, &version) == 0); @@ -185,6 +189,16 @@ &nvroot) == 0); verify(nvlist_lookup_uint64_array(nvroot, ZPOOL_CONFIG_STATS, (uint64_t **)&vs, &vsc) == 0); + verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE, + &stateval) == 0); + (void) nvlist_lookup_uint64(config, ZPOOL_CONFIG_HOSTID, &hostid); + + /* + * Pool last accessed by another system. + */ + if (hostid != 0 && (unsigned long)hostid != gethostid() && + stateval == POOL_STATE_ACTIVE) + return (ZPOOL_STATUS_HOSTID_MISMATCH); /* * Newer on-disk version. @@ -270,7 +284,7 @@ if (ret >= NMSGID) *msgid = NULL; else - *msgid = msgid_table_active[ret]; + *msgid = zfs_msgid_table_active[ret]; return (ret); } @@ -283,7 +297,7 @@ if (ret >= NMSGID) *msgid = NULL; else - *msgid = msgid_table[ret]; + *msgid = zfs_msgid_table[ret]; return (ret); } ==== //depot/projects/mjexp/contrib/opensolaris/lib/libzfs/common/libzfs_util.c#2 (text+ko) ==== @@ -167,6 +167,8 @@ case EZFS_POOL_INVALARG: return (dgettext(TEXT_DOMAIN, "invalid argument for " "this pool operation")); + case EZFS_NAMETOOLONG: + return (dgettext(TEXT_DOMAIN, "dataset name is too long")); case EZFS_UNKNOWN: return (dgettext(TEXT_DOMAIN, "unknown error")); default: @@ -306,6 +308,11 @@ "dataset is busy")); zfs_verror(hdl, EZFS_BUSY, fmt, ap); break; + + case ENAMETOOLONG: + zfs_verror(hdl, EZFS_NAMETOOLONG, fmt, ap); + break; + default: zfs_error_aux(hdl, strerror(errno)); zfs_verror(hdl, EZFS_UNKNOWN, fmt, ap); @@ -490,6 +497,21 @@ hdl->libzfs_printerr = printerr; } +static int +libzfs_load(void) +{ + int error; + + if (modfind("zfs") < 0) { + /* Not present in kernel, try loading it. */ + if (kldload("zfs") < 0 || modfind("zfs") < 0) { + if (errno != EEXIST) + return (error); + } + } + return (0); +} + libzfs_handle_t * libzfs_init(void) { @@ -500,8 +522,12 @@ } if ((hdl->libzfs_fd = open(ZFS_DEV, O_RDWR)) < 0) { - free(hdl); - return (NULL); + if (libzfs_load() == 0) + hdl->libzfs_fd = open(ZFS_DEV, O_RDWR); + if (hdl->libzfs_fd < 0) { + free(hdl); + return (NULL); + } } if ((hdl->libzfs_mnttab = fopen(MNTTAB, "r")) == NULL) { ==== //depot/projects/mjexp/contrib/opensolaris/lib/libzpool/common/kernel.c#2 (text+ko) ==== @@ -37,6 +37,7 @@ #include <sys/processor.h> #include <sys/zfs_context.h> #include <sys/zmod.h> +#include <sys/utsname.h> /* * Emulation of kernel services in userland. @@ -45,6 +46,11 @@ int hz = 119; /* frequency when using gethrtime() >> 23 for lbolt */ uint64_t physmem; vnode_t *rootdir = (vnode_t *)0xabcd1234; +char hw_serial[11]; + +struct utsname utsname = { + "userland", "libzpool", "1", "1", "na" +}; /* * ========================================================================= @@ -770,6 +776,17 @@ return (random_get_bytes_common(ptr, len, "/dev/urandom")); } +int +ddi_strtoul(const char *hw_serial, char **nptr, int base, unsigned long *result) +{ + char *end; + + *result = strtoul(hw_serial, &end, base); + if (*result == 0) + return (errno); + return (0); +} + /* * ========================================================================= * kernel emulation setup & teardown @@ -795,6 +812,8 @@ dprintf("physmem = %llu pages (%.2f GB)\n", physmem, (double)physmem * sysconf(_SC_PAGE_SIZE) / (1ULL << 30)); + snprintf(hw_serial, sizeof (hw_serial), "%ld", gethostid()); + spa_init(mode); } ==== //depot/projects/mjexp/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#2 (text+ko) ==== @@ -436,6 +436,14 @@ #define zone_dataset_visible(x, y) (1) #define INGLOBALZONE(z) (1) +/* + * Hostname information + */ +extern struct utsname utsname; +extern char hw_serial[]; +extern int ddi_strtoul(const char *str, char **nptr, int base, + unsigned long *result); + #ifdef __cplusplus } #endif ==== //depot/projects/mjexp/etc/devd.conf#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/devd.conf,v 1.35 2007/02/15 16:38:10 imp Exp $ +# $FreeBSD: src/etc/devd.conf,v 1.37 2007/04/08 16:05:23 pjd Exp $ # # Refer to devd.conf(5) and devd(8) man pages for the details on how to # run and configure devd. @@ -208,6 +208,37 @@ action "logger -p kern.emerg 'WARNING: system temperature too high, shutting down soon!'"; }; +# Sample ZFS problem reports handling. +notify 10 { + match "system" "ZFS"; + match "type" "zpool"; + action "logger -p kern.err 'ZFS: failed to load zpool $pool'"; +}; + +notify 10 { + match "system" "ZFS"; + match "type" "vdev"; + action "logger -p kern.err 'ZFS: vdev failure, zpool=$pool type=$type'"; +}; + +notify 10 { + match "system" "ZFS"; + match "type" "data"; + action "logger -p kern.warn 'ZFS: zpool I/O failure, zpool=$pool error=$zio_err'"; +}; + +notify 10 { + match "system" "ZFS"; + match "type" "io"; + action "logger -p kern.warn 'ZFS: vdev I/O failure, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size error=$zio_err'"; +}; + +notify 10 { + match "system" "ZFS"; + match "type" "checksum"; + action "logger -p kern.warn 'ZFS: checksum mismatch, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size'"; +}; + /* EXAMPLES TO END OF FILE # The following might be an example of something that a vendor might ==== //depot/projects/mjexp/include/stdio.h#3 (text+ko) ==== @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)stdio.h 8.5 (Berkeley) 4/29/95 - * $FreeBSD: src/include/stdio.h,v 1.59 2007/04/05 21:10:53 pjd Exp $ + * $FreeBSD: src/include/stdio.h,v 1.60 2007/04/07 16:02:30 pjd Exp $ */ #ifndef _STDIO_H_ @@ -200,12 +200,6 @@ #ifndef SEEK_END #define SEEK_END 2 /* set file offset to EOF plus offset */ #endif -#ifndef SEEK_DATA -#define SEEK_DATA 3 /* set file offset to next data past offset */ -#endif -#ifndef SEEK_HOLE -#define SEEK_HOLE 4 /* set file offset to next hole past offset */ -#endif #define stdin __stdinp #define stdout __stdoutp ==== //depot/projects/mjexp/lib/libarchive/Makefile#7 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libarchive/Makefile,v 1.63 2007/04/05 15:51:19 cperciva Exp $ +# $FreeBSD: src/lib/libarchive/Makefile,v 1.64 2007/04/07 05:54:23 kientzle Exp $ LIB= archive DPADD= ${LIBBZ2} ${LIBZ} @@ -9,7 +9,7 @@ # Major: Bumped ONLY when API/ABI breakage happens (see SHLIB_MAJOR) # Minor: Bumped when significant new features are added # Revision: Bumped on any notable change -VERSION= 2.0.25 +VERSION= 2.0.27 ARCHIVE_API_MAJOR!= echo ${VERSION} | sed -e 's/[^0-9]/./g' -e 's/\..*//' ARCHIVE_API_MINOR!= echo ${VERSION} | sed -e 's/[^0-9]/./g' -e 's/[0-9]*\.//' -e 's/\..*//' @@ -58,6 +58,7 @@ archive_read_support_compression_gzip.c \ archive_read_support_compression_none.c \ archive_read_support_format_all.c \ + archive_read_support_format_ar.c \ archive_read_support_format_cpio.c \ archive_read_support_format_empty.c \ archive_read_support_format_iso9660.c \ @@ -78,6 +79,7 @@ archive_write_set_compression_gzip.c \ archive_write_set_compression_none.c \ archive_write_set_format.c \ + archive_write_set_format_ar.c \ archive_write_set_format_by_name.c \ archive_write_set_format_cpio.c \ archive_write_set_format_pax.c \ ==== //depot/projects/mjexp/lib/libarchive/archive_read.3#8 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libarchive/archive_read.3,v 1.32 2007/04/05 15:51:19 cperciva Exp $ +.\" $FreeBSD: src/lib/libarchive/archive_read.3,v 1.33 2007/04/07 05:53:11 kientzle Exp $ .\" .Dd August 19, 2006 .Dt archive_read 3 @@ -230,7 +230,10 @@ to skip all of the data for this archive entry. .\" #if ARCHIVE_API_VERSION < 3 .It Fn archive_read_data_into_buffer -This function is deprecated and should not be used. +This function is deprecated and will be removed. +Use +.Fn archive_read_data +instead. .\" #endif .It Fn archive_read_data_into_fd A convenience function that repeatedly calls ==== //depot/projects/mjexp/lib/libarchive/archive_read_extract.c#7 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.54 2007/03/11 10:29:52 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.55 2007/04/07 03:37:59 cperciva Exp $"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> @@ -98,10 +98,6 @@ if (r == ARCHIVE_OK) /* If there's an FD, pour data into it. */ r = copy_data(_a, a->extract->ad); - if (r != ARCHIVE_OK) - archive_set_error(&a->archive, - archive_errno(extract->ad), - "%s", archive_error_string(extract->ad)); r2 = archive_write_finish_entry(a->extract->ad); /* Use the first message. */ if (r2 != ARCHIVE_OK && r == ARCHIVE_OK) @@ -141,8 +137,11 @@ if (r != ARCHIVE_OK) return (r); r = archive_write_data_block(aw, buff, size, offset); - if (r != ARCHIVE_OK) + if (r != ARCHIVE_OK) { + archive_set_error(ar, archive_errno(aw), + "%s", archive_error_string(aw)); return (r); + } } } ==== //depot/projects/mjexp/lib/libarchive/archive_read_support_format_all.c#4 (text+ko) ==== @@ -24,13 +24,14 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_all.c,v 1.8 2007/02/01 06:18:16 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_all.c,v 1.9 2007/04/07 05:54:23 kientzle Exp $"); #include "archive.h" int archive_read_support_format_all(struct archive *a) { + archive_read_support_format_ar(a); archive_read_support_format_cpio(a); archive_read_support_format_empty(a); archive_read_support_format_iso9660(a); ==== //depot/projects/mjexp/lib/libarchive/archive_write_disk.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_disk.c,v 1.5 2007/04/02 00:32:03 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_disk.c,v 1.6 2007/04/07 19:35:02 kientzle Exp $"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> @@ -1721,7 +1721,7 @@ set_fflags_platform(struct archive_write_disk *a, int fd, const char *name, mode_t mode, unsigned long set, unsigned long clear) { - (void)ad; /* UNUSED */ + (void)a; /* UNUSED */ (void)fd; /* UNUSED */ (void)name; /* UNUSED */ (void)mode; /* UNUSED */ ==== //depot/projects/mjexp/lib/libarchive/test/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libarchive/test/Makefile,v 1.2 2007/03/08 06:09:27 kientzle Exp $ +# $FreeBSD: src/lib/libarchive/test/Makefile,v 1.3 2007/04/07 05:54:23 kientzle Exp $ TESTS= \ test_acl_basic.c \ @@ -7,6 +7,7 @@ test_bad_fd.c \ test_read_data_large.c \ test_read_extract.c \ + test_read_format_ar.c \ test_read_format_cpio_bin.c \ test_read_format_cpio_bin_Z.c \ test_read_format_cpio_bin_bz2.c \ @@ -30,6 +31,7 @@ test_write_disk.c \ test_write_disk_perms.c \ test_write_disk_secure.c \ + test_write_format_ar.c \ test_write_format_cpio_empty.c \ test_write_format_shar_empty.c \ test_write_format_tar.c \ @@ -66,4 +68,4 @@ -chmod -R +w /tmp/libarchive_test.* rm -rf /tmp/libarchive_test.* -.include <bsd.prog.mk>+.include <bsd.prog.mk> ==== //depot/projects/mjexp/lib/libc/sys/ptrace.2#3 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" $FreeBSD: src/lib/libc/sys/ptrace.2,v 1.38 2006/11/09 11:27:18 trhodes Exp $ +.\" $FreeBSD: src/lib/libc/sys/ptrace.2,v 1.39 2007/04/07 03:16:23 emaste Exp $ .\" $NetBSD: ptrace.2,v 1.2 1995/02/27 12:35:37 cgd Exp $ .\" .\" This file is in the public domain. @@ -299,6 +299,15 @@ This allows the structure to grow without affecting older programs. .It PT_GETLWPLIST This request can be used to get the current thread list. +A pointer to an array of type +.Vt lwpid_t +should be passed in +.Fa addr , +with the array size specified by +.Fa data . +The return value from +.Fn ptrace +is the count of array entries filled in. .El .Pp Additionally, machine-specific requests can exist. ==== //depot/projects/mjexp/libexec/rtld-elf/i386/Symbol.map#2 (text+ko) ==== @@ -1,12 +1,5 @@ -# $FreeBSD: src/libexec/rtld-elf/i386/Symbol.map,v 1.1 2007/04/03 19:01:06 kan Exp $ +# $FreeBSD: src/libexec/rtld-elf/i386/Symbol.map,v 1.2 2007/04/07 23:23:10 kan Exp $ FBSD_1.0 { ___tls_get_addr; }; - -# This is our private namespace. Any global interfaces that are -# strictly for use only by other FreeBSD applications and libraries >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704081721.l38HLZdZ036142>
