svn commit: r254145 - in user/attilio/vmobj-readlock: bin/pkill cddl/contrib/opensolaris/cmd/ztest contrib/ofed/libsdp/src/linux contrib/ofed/management/infiniband-diags/src contrib/ofed/management...
Attilio Rao
attilio at FreeBSD.org
Fri Aug 9 12:31:07 UTC 2013
Author: attilio
Date: Fri Aug 9 12:31:02 2013
New Revision: 254145
URL: http://svnweb.freebsd.org/changeset/base/254145
Log:
MFC
Modified:
user/attilio/vmobj-readlock/bin/pkill/pkill.1
user/attilio/vmobj-readlock/bin/pkill/pkill.c
user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c
user/attilio/vmobj-readlock/contrib/ofed/libsdp/src/linux/sdp_inet.h
user/attilio/vmobj-readlock/contrib/ofed/management/infiniband-diags/src/sminfo.c
user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_console.c
user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_subnet.c
user/attilio/vmobj-readlock/etc/namedb/named.conf
user/attilio/vmobj-readlock/share/man/man9/mutex.9
user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c
user/attilio/vmobj-readlock/sys/amd64/conf/GENERIC
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
user/attilio/vmobj-readlock/sys/dev/bge/if_bge.c
user/attilio/vmobj-readlock/sys/dev/bge/if_bgereg.h
user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c
user/attilio/vmobj-readlock/sys/dev/drm2/ttm/ttm_bo_vm.c
user/attilio/vmobj-readlock/sys/dev/mps/mps.c
user/attilio/vmobj-readlock/sys/dev/mps/mps_sas.c
user/attilio/vmobj-readlock/sys/dev/mps/mps_sas.h
user/attilio/vmobj-readlock/sys/dev/mps/mps_sas_lsi.c
user/attilio/vmobj-readlock/sys/dev/mps/mpsvar.h
user/attilio/vmobj-readlock/sys/i386/conf/GENERIC
user/attilio/vmobj-readlock/sys/i386/i386/pmap.c
user/attilio/vmobj-readlock/sys/ia64/conf/GENERIC
user/attilio/vmobj-readlock/sys/kern/kern_mutex.c
user/attilio/vmobj-readlock/sys/kern/kern_sysctl.c
user/attilio/vmobj-readlock/sys/kern/subr_uio.c
user/attilio/vmobj-readlock/sys/kern/vfs_acl.c
user/attilio/vmobj-readlock/sys/ofed/include/linux/bitops.h
user/attilio/vmobj-readlock/sys/ofed/include/linux/sysfs.h
user/attilio/vmobj-readlock/sys/ofed/include/rdma/sdp_socket.h
user/attilio/vmobj-readlock/sys/powerpc/conf/GENERIC
user/attilio/vmobj-readlock/sys/powerpc/conf/GENERIC64
user/attilio/vmobj-readlock/sys/sparc64/conf/GENERIC
user/attilio/vmobj-readlock/sys/sys/param.h
user/attilio/vmobj-readlock/sys/sys/socket.h
user/attilio/vmobj-readlock/sys/vm/_vm_radix.h
user/attilio/vmobj-readlock/sys/vm/device_pager.c
user/attilio/vmobj-readlock/sys/vm/sg_pager.c
user/attilio/vmobj-readlock/sys/vm/vm_fault.c
user/attilio/vmobj-readlock/sys/vm/vm_object.c
user/attilio/vmobj-readlock/sys/vm/vm_object.h
user/attilio/vmobj-readlock/sys/vm/vm_page.c
user/attilio/vmobj-readlock/sys/vm/vm_page.h
user/attilio/vmobj-readlock/sys/vm/vm_radix.c
user/attilio/vmobj-readlock/sys/vm/vm_radix.h
Directory Properties:
user/attilio/vmobj-readlock/ (props changed)
user/attilio/vmobj-readlock/cddl/ (props changed)
user/attilio/vmobj-readlock/cddl/contrib/opensolaris/ (props changed)
user/attilio/vmobj-readlock/sys/ (props changed)
user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/ (props changed)
Modified: user/attilio/vmobj-readlock/bin/pkill/pkill.1
==============================================================================
--- user/attilio/vmobj-readlock/bin/pkill/pkill.1 Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/bin/pkill/pkill.1 Fri Aug 9 12:31:02 2013 (r254145)
@@ -29,7 +29,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd February 11, 2010
+.Dd August 9, 2013
.Dt PKILL 1
.Os
.Sh NAME
@@ -44,6 +44,7 @@
.Op Fl N Ar system
.Op Fl P Ar ppid
.Op Fl U Ar uid
+.Op Fl c Ar class
.Op Fl d Ar delim
.Op Fl g Ar pgrp
.Op Fl j Ar jid
@@ -60,6 +61,7 @@
.Op Fl N Ar system
.Op Fl P Ar ppid
.Op Fl U Ar uid
+.Op Fl c Ar class
.Op Fl g Ar pgrp
.Op Fl j Ar jid
.Op Fl s Ar sid
@@ -130,6 +132,9 @@ or
process and all of its ancestors are excluded (unless
.Fl v
is used).
+.It Fl c Ar class
+Restrict matches to processes running with specified login class
+.Ar class .
.It Fl f
Match against full argument lists.
The default is to match against process names.
Modified: user/attilio/vmobj-readlock/bin/pkill/pkill.c
==============================================================================
--- user/attilio/vmobj-readlock/bin/pkill/pkill.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/bin/pkill/pkill.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -79,12 +79,14 @@ enum listtype {
LT_TTY,
LT_PGRP,
LT_JID,
- LT_SID
+ LT_SID,
+ LT_CLASS
};
struct list {
SLIST_ENTRY(list) li_chain;
long li_number;
+ char *li_name;
};
SLIST_HEAD(listhead, list);
@@ -116,6 +118,7 @@ static struct listhead ppidlist = SLIST_
static struct listhead tdevlist = SLIST_HEAD_INITIALIZER(tdevlist);
static struct listhead sidlist = SLIST_HEAD_INITIALIZER(sidlist);
static struct listhead jidlist = SLIST_HEAD_INITIALIZER(jidlist);
+static struct listhead classlist = SLIST_HEAD_INITIALIZER(classlist);
static void usage(void) __attribute__((__noreturn__));
static int killact(const struct kinfo_proc *);
@@ -179,7 +182,7 @@ main(int argc, char **argv)
execf = NULL;
coref = _PATH_DEVNULL;
- while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ad:fg:ij:lnoqs:t:u:vx")) != -1)
+ while ((ch = getopt(argc, argv, "DF:G:ILM:N:P:SU:ac:d:fg:ij:lnoqs:t:u:vx")) != -1)
switch (ch) {
case 'D':
debug_opt++;
@@ -222,6 +225,10 @@ main(int argc, char **argv)
case 'a':
ancestors++;
break;
+ case 'c':
+ makelist(&classlist, LT_CLASS, optarg);
+ criteria = 1;
+ break;
case 'd':
if (!pgrep)
usage();
@@ -469,6 +476,20 @@ main(int argc, char **argv)
continue;
}
+ SLIST_FOREACH(li, &classlist, li_chain) {
+ /*
+ * We skip P_SYSTEM processes to match ps(1) output.
+ */
+ if ((kp->ki_flag & P_SYSTEM) == 0 &&
+ kp->ki_loginclass != NULL &&
+ strcmp(kp->ki_loginclass, li->li_name) == 0)
+ break;
+ }
+ if (SLIST_FIRST(&classlist) != NULL && li == NULL) {
+ selected[i] = 0;
+ continue;
+ }
+
if (argc == 0)
selected[i] = 1;
}
@@ -562,9 +583,9 @@ usage(void)
fprintf(stderr,
"usage: %s %s [-F pidfile] [-G gid] [-M core] [-N system]\n"
- " [-P ppid] [-U uid] [-g pgrp] [-j jid] [-s sid]\n"
- " [-t tty] [-u euid] pattern ...\n", getprogname(),
- ustr);
+ " [-P ppid] [-U uid] [-c class] [-g pgrp] [-j jid]\n"
+ " [-s sid] [-t tty] [-u euid] pattern ...\n",
+ getprogname(), ustr);
exit(STATUS_BADUSAGE);
}
@@ -664,8 +685,10 @@ makelist(struct listhead *head, enum lis
SLIST_INSERT_HEAD(head, li, li_chain);
empty = 0;
- li->li_number = (uid_t)strtol(sp, &ep, 0);
- if (*ep == '\0') {
+ if (type != LT_CLASS)
+ li->li_number = (uid_t)strtol(sp, &ep, 0);
+
+ if (type != LT_CLASS && *ep == '\0') {
switch (type) {
case LT_PGRP:
if (li->li_number == 0)
@@ -750,6 +773,12 @@ foundtty: if ((st.st_mode & S_IFCHR) ==
errx(STATUS_BADUSAGE,
"Invalid jail ID `%s'", sp);
break;
+ case LT_CLASS:
+ li->li_number = -1;
+ li->li_name = strdup(sp);
+ if (li->li_name == NULL)
+ err(STATUS_ERROR, "Cannot allocate memory");
+ break;
default:
usage();
}
Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c
==============================================================================
--- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/ztest/ztest.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2012 Martin Matuska <mm at FreeBSD.org>. All rights reserved.
* Copyright (c) 2013 Steven Hartland. All rights reserved.
@@ -769,6 +769,16 @@ ztest_kill(ztest_shared_t *zs)
{
zs->zs_alloc = metaslab_class_get_alloc(spa_normal_class(ztest_spa));
zs->zs_space = metaslab_class_get_space(spa_normal_class(ztest_spa));
+
+ /*
+ * Before we kill off ztest, make sure that the config is updated.
+ * See comment above spa_config_sync().
+ */
+ mutex_enter(&spa_namespace_lock);
+ spa_config_sync(ztest_spa, B_FALSE, B_FALSE);
+ mutex_exit(&spa_namespace_lock);
+
+ zfs_dbgmsg_print(FTAG);
(void) kill(getpid(), SIGKILL);
}
@@ -2733,7 +2743,7 @@ ztest_vdev_attach_detach(ztest_ds_t *zd,
uint64_t leaf, top;
uint64_t ashift = ztest_get_ashift();
uint64_t oldguid, pguid;
- size_t oldsize, newsize;
+ uint64_t oldsize, newsize;
char oldpath[MAXPATHLEN], newpath[MAXPATHLEN];
int replacing;
int oldvd_has_siblings = B_FALSE;
@@ -2892,8 +2902,8 @@ ztest_vdev_attach_detach(ztest_ds_t *zd,
if (error != expected_error && expected_error != EBUSY) {
fatal(0, "attach (%s %llu, %s %llu, %d) "
"returned %d, expected %d",
- oldpath, (longlong_t)oldsize, newpath,
- (longlong_t)newsize, replacing, error, expected_error);
+ oldpath, oldsize, newpath,
+ newsize, replacing, error, expected_error);
}
VERIFY(mutex_unlock(&ztest_vdev_lock) == 0);
@@ -4803,7 +4813,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6
*/
if (vd0 != NULL && maxfaults != 1 &&
(!vdev_resilver_needed(vd0->vdev_top, NULL, NULL) ||
- vd0->vdev_resilvering)) {
+ vd0->vdev_resilver_txg != 0)) {
/*
* Make vd0 explicitly claim to be unreadable,
* or unwriteable, or reach behind its back
@@ -5654,6 +5664,7 @@ ztest_run(ztest_shared_t *zs)
zs->zs_alloc = metaslab_class_get_alloc(spa_normal_class(spa));
zs->zs_space = metaslab_class_get_space(spa_normal_class(spa));
+ zfs_dbgmsg_print(FTAG);
umem_free(tid, ztest_opts.zo_threads * sizeof (thread_t));
Modified: user/attilio/vmobj-readlock/contrib/ofed/libsdp/src/linux/sdp_inet.h
==============================================================================
--- user/attilio/vmobj-readlock/contrib/ofed/libsdp/src/linux/sdp_inet.h Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/contrib/ofed/libsdp/src/linux/sdp_inet.h Fri Aug 9 12:31:02 2013 (r254145)
@@ -29,8 +29,12 @@
*/
#ifndef SOLARIS_BUILD
+#ifdef __FreeBSD__
+#include <sys/socket.h>
+#else
#define AF_INET_SDP 27 /* SDP socket protocol family */
#define AF_INET6_SDP 28 /* SDP socket protocol family */
+#endif
#else
#define AF_INET_SDP 31 /* This is an invalid family on native solaris
* and will only work using QuickTransit */
Modified: user/attilio/vmobj-readlock/contrib/ofed/management/infiniband-diags/src/sminfo.c
==============================================================================
--- user/attilio/vmobj-readlock/contrib/ofed/management/infiniband-diags/src/sminfo.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/contrib/ofed/management/infiniband-diags/src/sminfo.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -72,10 +72,10 @@ enum {
};
char *statestr[] = {
- [SMINFO_NOTACT] "SMINFO_NOTACT",
- [SMINFO_DISCOVER] "SMINFO_DISCOVER",
- [SMINFO_STANDBY] "SMINFO_STANDBY",
- [SMINFO_MASTER] "SMINFO_MASTER",
+ [SMINFO_NOTACT] = "SMINFO_NOTACT",
+ [SMINFO_DISCOVER] = "SMINFO_DISCOVER",
+ [SMINFO_STANDBY] = "SMINFO_STANDBY",
+ [SMINFO_MASTER] = "SMINFO_MASTER",
};
#define STATESTR(s) (((unsigned)(s)) < SMINFO_STATE_LAST ? statestr[s] : "???")
Modified: user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_console.c
==============================================================================
--- user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_console.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_console.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -67,7 +67,10 @@ static struct {
time_t previous;
void (*loop_function) (osm_opensm_t * p_osm, FILE * out);
} loop_command = {
-on: 0, delay_s: 2, loop_function:NULL};
+ .on = 0,
+ .delay_s = 2,
+ .loop_function = NULL,
+};
static const struct command console_cmds[];
Modified: user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_subnet.c
==============================================================================
--- user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_subnet.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/contrib/ofed/management/opensm/opensm/osm_subnet.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -482,7 +482,7 @@ static void log_report(const char *fmt,
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
- printf(buf);
+ printf("%s", buf);
cl_log_event("OpenSM", CL_LOG_INFO, buf, NULL, 0);
}
@@ -500,7 +500,7 @@ static void log_config_value(char *name,
n = sizeof(buf);
snprintf(buf + n, sizeof(buf) - n, "\n");
va_end(args);
- printf(buf);
+ printf("%s", buf);
cl_log_event("OpenSM", CL_LOG_INFO, buf, NULL, 0);
}
Modified: user/attilio/vmobj-readlock/etc/namedb/named.conf
==============================================================================
--- user/attilio/vmobj-readlock/etc/namedb/named.conf Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/etc/namedb/named.conf Fri Aug 9 12:31:02 2013 (r254145)
@@ -153,6 +153,72 @@ zone "30.172.in-addr.arpa" { type master
zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+// Shared Address Space (RFC 6598)
+zone "64.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "65.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "66.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "67.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "68.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "69.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "70.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "71.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "72.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "73.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "74.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "75.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "76.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "77.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "78.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "79.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "80.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "81.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "82.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "83.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "84.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "85.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "86.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "87.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "88.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "89.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "90.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "91.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "92.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "93.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "94.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "95.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "96.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "97.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "98.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "99.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "100.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "101.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "102.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "103.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "104.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "105.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "106.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "107.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "108.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "109.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "110.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "111.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "112.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "113.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "114.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "115.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "116.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "117.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "118.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "119.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "120.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "121.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "122.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "123.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "124.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "125.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "126.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+zone "127.100.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
+
// Link-local/APIPA (RFCs 3927, 5735 and 6303)
zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; };
Modified: user/attilio/vmobj-readlock/share/man/man9/mutex.9
==============================================================================
--- user/attilio/vmobj-readlock/share/man/man9/mutex.9 Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/share/man/man9/mutex.9 Fri Aug 9 12:31:02 2013 (r254145)
@@ -225,8 +225,10 @@ or
lock, respectively, and also accept a
.Fa flags
argument.
-In both cases, the only flag presently available for lock acquires is
-.Dv MTX_QUIET .
+In both cases, the only flags presently available for lock acquires are
+.Dv MTX_QUIET
+and
+.Dv MTX_RECURSE .
If the
.Dv MTX_QUIET
bit is turned on in the
@@ -235,6 +237,12 @@ argument, then if
.Dv KTR_LOCK
tracing is being done,
it will be silenced during the lock acquire.
+If the
+.Dv MTX_RECURSE
+bit is turned on in the
+.Fa flags
+argument, then the mutex can be acquired recursively.
+.Pp
.Pp
The
.Fn mtx_trylock
Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -283,7 +283,7 @@ static boolean_t pmap_enter_pde(pmap_t p
static vm_page_t pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va,
vm_page_t m, vm_prot_t prot, vm_page_t mpte, struct rwlock **lockp);
static void pmap_fill_ptp(pt_entry_t *firstpte, pt_entry_t newpte);
-static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte);
+static int pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte);
static boolean_t pmap_is_modified_pvh(struct md_page *pvh);
static boolean_t pmap_is_referenced_pvh(struct md_page *pvh);
static void pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode);
@@ -1526,12 +1526,12 @@ pmap_add_delayed_free_list(vm_page_t m,
* for mapping a distinct range of virtual addresses. The pmap's collection is
* ordered by this virtual address range.
*/
-static __inline void
+static __inline int
pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte)
{
PMAP_LOCK_ASSERT(pmap, MA_OWNED);
- vm_radix_insert(&pmap->pm_root, mpte);
+ return (vm_radix_insert(&pmap->pm_root, mpte));
}
/*
@@ -3439,7 +3439,13 @@ setpte:
("pmap_promote_pde: page table page is out of range"));
KASSERT(mpte->pindex == pmap_pde_pindex(va),
("pmap_promote_pde: page table page's pindex is wrong"));
- pmap_insert_pt_page(pmap, mpte);
+ if (pmap_insert_pt_page(pmap, mpte)) {
+ atomic_add_long(&pmap_pde_p_failures, 1);
+ CTR2(KTR_PMAP,
+ "pmap_promote_pde: failure for va %#lx in pmap %p", va,
+ pmap);
+ return;
+ }
/*
* Promote the pv entries.
Modified: user/attilio/vmobj-readlock/sys/amd64/conf/GENERIC
==============================================================================
--- user/attilio/vmobj-readlock/sys/amd64/conf/GENERIC Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/amd64/conf/GENERIC Fri Aug 9 12:31:02 2013 (r254145)
@@ -74,9 +74,8 @@ options INCLUDE_CONFIG_FILE # Inclu
# Debugging support. Always need this:
options KDB # Enable kernel debugger support.
-# For minimum debugger support (stable branch) use:
options KDB_TRACE # Print a stack trace for a panic.
-# For full debugger support use this instead:
+# For full debugger support use (turn off in stable branch):
options DDB # Support DDB.
options GDB # Support remote GDB.
options DEADLKRES # Enable the deadlock resolver
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -224,6 +224,7 @@ dsl_scan_setup_sync(void *arg, dmu_tx_t
scn->scn_phys.scn_errors = 0;
scn->scn_phys.scn_to_examine = spa->spa_root_vdev->vdev_stat.vs_alloc;
scn->scn_restart_txg = 0;
+ scn->scn_done_txg = 0;
spa_scan_stat_init(spa);
if (DSL_SCAN_IS_SCRUB_RESILVER(scn)) {
@@ -800,7 +801,7 @@ dsl_scan_visitbp(blkptr_t *bp, const zbo
* Don't scan it now unless we need to because something
* under it was modified.
*/
- if (bp->blk_birth <= scn->scn_phys.scn_cur_max_txg) {
+ if (BP_PHYSICAL_BIRTH(bp) <= scn->scn_phys.scn_cur_max_txg) {
scan_funcs[scn->scn_phys.scn_func](dp, bp, zb);
}
if (buf)
@@ -1245,7 +1246,7 @@ dsl_scan_ddt_entry(dsl_scan_t *scn, enum
for (int p = 0; p < DDT_PHYS_TYPES; p++, ddp++) {
if (ddp->ddp_phys_birth == 0 ||
- ddp->ddp_phys_birth > scn->scn_phys.scn_cur_max_txg)
+ ddp->ddp_phys_birth > scn->scn_phys.scn_max_txg)
continue;
ddt_bp_create(checksum, ddk, ddp, &bp);
@@ -1488,6 +1489,16 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *
if (scn->scn_phys.scn_state != DSS_SCANNING)
return;
+ if (scn->scn_done_txg == tx->tx_txg) {
+ ASSERT(!scn->scn_pausing);
+ /* finished with scan. */
+ zfs_dbgmsg("txg %llu scan complete", tx->tx_txg);
+ dsl_scan_done(scn, B_TRUE, tx);
+ ASSERT3U(spa->spa_scrub_inflight, ==, 0);
+ dsl_scan_sync_state(scn, tx);
+ return;
+ }
+
if (scn->scn_phys.scn_ddt_bookmark.ddb_class <=
scn->scn_phys.scn_ddt_class_max) {
zfs_dbgmsg("doing scan sync txg %llu; "
@@ -1523,9 +1534,9 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *
(longlong_t)(gethrtime() - scn->scn_sync_start_time) / MICROSEC);
if (!scn->scn_pausing) {
- /* finished with scan. */
- zfs_dbgmsg("finished scan txg %llu", (longlong_t)tx->tx_txg);
- dsl_scan_done(scn, B_TRUE, tx);
+ scn->scn_done_txg = tx->tx_txg + 1;
+ zfs_dbgmsg("txg %llu traversal complete, waiting till txg %llu",
+ tx->tx_txg, scn->scn_done_txg);
}
if (DSL_SCAN_IS_SCRUB_RESILVER(scn)) {
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -4633,7 +4633,7 @@ spa_vdev_attach(spa_t *spa, uint64_t gui
}
/* mark the device being resilvered */
- newvd->vdev_resilvering = B_TRUE;
+ newvd->vdev_resilver_txg = txg;
/*
* If the parent is not a mirror, or if we're replacing, insert the new
@@ -5497,13 +5497,6 @@ spa_vdev_resilver_done_hunt(vdev_t *vd)
return (oldvd);
}
- if (vd->vdev_resilvering && vdev_dtl_empty(vd, DTL_MISSING) &&
- vdev_dtl_empty(vd, DTL_OUTAGE)) {
- ASSERT(vd->vdev_ops->vdev_op_leaf);
- vd->vdev_resilvering = B_FALSE;
- vdev_config_dirty(vd->vdev_top);
- }
-
/*
* Check for a completed replacement. We always consider the first
* vdev in the list to be the oldest vdev, and the last one to be
@@ -5593,6 +5586,8 @@ spa_vdev_resilver_done(spa_t *spa)
ASSERT(pvd->vdev_ops == &vdev_replacing_ops);
sguid = ppvd->vdev_child[1]->vdev_guid;
}
+ ASSERT(vd->vdev_resilver_txg == 0 || !vdev_dtl_required(vd));
+
spa_config_exit(spa, SCL_ALL, FTAG);
if (spa_vdev_detach(spa, guid, pguid, B_TRUE) != 0)
return;
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -22,7 +22,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
*/
#include <sys/zfs_context.h>
@@ -196,7 +196,12 @@ spa_config_write(spa_config_dirent_t *dp
/*
* Synchronize pool configuration to disk. This must be called with the
- * namespace lock held.
+ * namespace lock held. Synchronizing the pool cache is typically done after
+ * the configuration has been synced to the MOS. This exposes a window where
+ * the MOS config will have been updated but the cache file has not. If
+ * the system were to crash at that instant then the cached config may not
+ * contain the correct information to open the pool and an explicity import
+ * would be required.
*/
void
spa_config_sync(spa_t *target, boolean_t removing, boolean_t postsysevent)
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h Fri Aug 9 12:31:02 2013 (r254145)
@@ -72,11 +72,42 @@ typedef enum dsl_scan_flags {
DSF_VISIT_DS_AGAIN = 1<<0,
} dsl_scan_flags_t;
+/*
+ * Every pool will have one dsl_scan_t and this structure will contain
+ * in-memory information about the scan and a pointer to the on-disk
+ * representation (i.e. dsl_scan_phys_t). Most of the state of the scan
+ * is contained on-disk to allow the scan to resume in the event of a reboot
+ * or panic. This structure maintains information about the behavior of a
+ * running scan, some caching information, and how it should traverse the pool.
+ *
+ * The following members of this structure direct the behavior of the scan:
+ *
+ * scn_pausing - a scan that cannot be completed in a single txg or
+ * has exceeded its allotted time will need to pause.
+ * When this flag is set the scanner will stop traversing
+ * the pool and write out the current state to disk.
+ *
+ * scn_restart_txg - directs the scanner to either restart or start a
+ * a scan at the specified txg value.
+ *
+ * scn_done_txg - when a scan completes its traversal it will set
+ * the completion txg to the next txg. This is necessary
+ * to ensure that any blocks that were freed during
+ * the scan but have not yet been processed (i.e deferred
+ * frees) are accounted for.
+ *
+ * This structure also maintains information about deferred frees which are
+ * a special kind of traversal. Deferred free can exist in either a bptree or
+ * a bpobj structure. The scn_is_bptree flag will indicate the type of
+ * deferred free that is in progress. If the deferred free is part of an
+ * asynchronous destroy then the scn_async_destroying flag will be set.
+ */
typedef struct dsl_scan {
struct dsl_pool *scn_dp;
boolean_t scn_pausing;
uint64_t scn_restart_txg;
+ uint64_t scn_done_txg;
uint64_t scn_sync_start_time;
zio_t *scn_zio_root;
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h Fri Aug 9 12:31:02 2013 (r254145)
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
*/
#ifndef _SYS_VDEV_IMPL_H
@@ -173,7 +173,7 @@ struct vdev {
uint64_t vdev_faulted; /* persistent faulted state */
uint64_t vdev_degraded; /* persistent degraded state */
uint64_t vdev_removed; /* persistent removed state */
- uint64_t vdev_resilvering; /* persistent resilvering state */
+ uint64_t vdev_resilver_txg; /* persistent resilvering state */
uint64_t vdev_nparity; /* number of parity devices for raidz */
char *vdev_path; /* vdev path (if any) */
char *vdev_devid; /* vdev devid (if any) */
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h Fri Aug 9 12:31:02 2013 (r254145)
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
*/
#ifndef _SYS_ZFS_DEBUG_H
@@ -79,6 +79,7 @@ typedef struct zfs_dbgmsg {
extern void zfs_dbgmsg_init(void);
extern void zfs_dbgmsg_fini(void);
extern void zfs_dbgmsg(const char *fmt, ...);
+extern void zfs_dbgmsg_print(const char *tag);
#ifdef illumos
#ifndef _KERNEL
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -528,8 +528,8 @@ vdev_alloc(spa_t *spa, vdev_t **vdp, nvl
(void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_OFFLINE,
&vd->vdev_offline);
- (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_RESILVERING,
- &vd->vdev_resilvering);
+ (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_RESILVER_TXG,
+ &vd->vdev_resilver_txg);
/*
* When importing a pool, we want to ignore the persistent fault
@@ -1678,6 +1678,75 @@ vdev_dtl_empty(vdev_t *vd, vdev_dtl_type
}
/*
+ * Returns the lowest txg in the DTL range.
+ */
+static uint64_t
+vdev_dtl_min(vdev_t *vd)
+{
+ space_seg_t *ss;
+
+ ASSERT(MUTEX_HELD(&vd->vdev_dtl_lock));
+ ASSERT3U(vd->vdev_dtl[DTL_MISSING].sm_space, !=, 0);
+ ASSERT0(vd->vdev_children);
+
+ ss = avl_first(&vd->vdev_dtl[DTL_MISSING].sm_root);
+ return (ss->ss_start - 1);
+}
+
+/*
+ * Returns the highest txg in the DTL.
+ */
+static uint64_t
+vdev_dtl_max(vdev_t *vd)
+{
+ space_seg_t *ss;
+
+ ASSERT(MUTEX_HELD(&vd->vdev_dtl_lock));
+ ASSERT3U(vd->vdev_dtl[DTL_MISSING].sm_space, !=, 0);
+ ASSERT0(vd->vdev_children);
+
+ ss = avl_last(&vd->vdev_dtl[DTL_MISSING].sm_root);
+ return (ss->ss_end);
+}
+
+/*
+ * Determine if a resilvering vdev should remove any DTL entries from
+ * its range. If the vdev was resilvering for the entire duration of the
+ * scan then it should excise that range from its DTLs. Otherwise, this
+ * vdev is considered partially resilvered and should leave its DTL
+ * entries intact. The comment in vdev_dtl_reassess() describes how we
+ * excise the DTLs.
+ */
+static boolean_t
+vdev_dtl_should_excise(vdev_t *vd)
+{
+ spa_t *spa = vd->vdev_spa;
+ dsl_scan_t *scn = spa->spa_dsl_pool->dp_scan;
+
+ ASSERT0(scn->scn_phys.scn_errors);
+ ASSERT0(vd->vdev_children);
+
+ if (vd->vdev_resilver_txg == 0 ||
+ vd->vdev_dtl[DTL_MISSING].sm_space == 0)
+ return (B_TRUE);
+
+ /*
+ * When a resilver is initiated the scan will assign the scn_max_txg
+ * value to the highest txg value that exists in all DTLs. If this
+ * device's max DTL is not part of this scan (i.e. it is not in
+ * the range (scn_min_txg, scn_max_txg] then it is not eligible
+ * for excision.
+ */
+ if (vdev_dtl_max(vd) <= scn->scn_phys.scn_max_txg) {
+ ASSERT3U(scn->scn_phys.scn_min_txg, <=, vdev_dtl_min(vd));
+ ASSERT3U(scn->scn_phys.scn_min_txg, <, vd->vdev_resilver_txg);
+ ASSERT3U(vd->vdev_resilver_txg, <=, scn->scn_phys.scn_max_txg);
+ return (B_TRUE);
+ }
+ return (B_FALSE);
+}
+
+/*
* Reassess DTLs after a config change or scrub completion.
*/
void
@@ -1700,9 +1769,17 @@ vdev_dtl_reassess(vdev_t *vd, uint64_t t
dsl_scan_t *scn = spa->spa_dsl_pool->dp_scan;
mutex_enter(&vd->vdev_dtl_lock);
+
+ /*
+ * If we've completed a scan cleanly then determine
+ * if this vdev should remove any DTLs. We only want to
+ * excise regions on vdevs that were available during
+ * the entire duration of this scan.
+ */
if (scrub_txg != 0 &&
(spa->spa_scrub_started ||
- (scn && scn->scn_phys.scn_errors == 0))) {
+ (scn != NULL && scn->scn_phys.scn_errors == 0)) &&
+ vdev_dtl_should_excise(vd)) {
/*
* We completed a scrub up to scrub_txg. If we
* did it without rebooting, then the scrub dtl
@@ -1741,6 +1818,16 @@ vdev_dtl_reassess(vdev_t *vd, uint64_t t
else
space_map_walk(&vd->vdev_dtl[DTL_MISSING],
space_map_add, &vd->vdev_dtl[DTL_OUTAGE]);
+
+ /*
+ * If the vdev was resilvering and no longer has any
+ * DTLs then reset its resilvering flag.
+ */
+ if (vd->vdev_resilver_txg != 0 &&
+ vd->vdev_dtl[DTL_MISSING].sm_space == 0 &&
+ vd->vdev_dtl[DTL_OUTAGE].sm_space == 0)
+ vd->vdev_resilver_txg = 0;
+
mutex_exit(&vd->vdev_dtl_lock);
if (txg != 0)
@@ -1918,12 +2005,9 @@ vdev_resilver_needed(vdev_t *vd, uint64_
mutex_enter(&vd->vdev_dtl_lock);
if (vd->vdev_dtl[DTL_MISSING].sm_space != 0 &&
vdev_writeable(vd)) {
- space_seg_t *ss;
- ss = avl_first(&vd->vdev_dtl[DTL_MISSING].sm_root);
- thismin = ss->ss_start - 1;
- ss = avl_last(&vd->vdev_dtl[DTL_MISSING].sm_root);
- thismax = ss->ss_end;
+ thismin = vdev_dtl_min(vd);
+ thismax = vdev_dtl_max(vd);
needed = B_TRUE;
}
mutex_exit(&vd->vdev_dtl_lock);
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -222,30 +222,25 @@ vdev_config_generate(spa_t *spa, vdev_t
{
nvlist_t *nv = NULL;
- VERIFY(nvlist_alloc(&nv, NV_UNIQUE_NAME, KM_SLEEP) == 0);
+ nv = fnvlist_alloc();
- VERIFY(nvlist_add_string(nv, ZPOOL_CONFIG_TYPE,
- vd->vdev_ops->vdev_op_type) == 0);
+ fnvlist_add_string(nv, ZPOOL_CONFIG_TYPE, vd->vdev_ops->vdev_op_type);
if (!(flags & (VDEV_CONFIG_SPARE | VDEV_CONFIG_L2CACHE)))
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_ID, vd->vdev_id)
- == 0);
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_GUID, vd->vdev_guid) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_ID, vd->vdev_id);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_GUID, vd->vdev_guid);
if (vd->vdev_path != NULL)
- VERIFY(nvlist_add_string(nv, ZPOOL_CONFIG_PATH,
- vd->vdev_path) == 0);
+ fnvlist_add_string(nv, ZPOOL_CONFIG_PATH, vd->vdev_path);
if (vd->vdev_devid != NULL)
- VERIFY(nvlist_add_string(nv, ZPOOL_CONFIG_DEVID,
- vd->vdev_devid) == 0);
+ fnvlist_add_string(nv, ZPOOL_CONFIG_DEVID, vd->vdev_devid);
if (vd->vdev_physpath != NULL)
- VERIFY(nvlist_add_string(nv, ZPOOL_CONFIG_PHYS_PATH,
- vd->vdev_physpath) == 0);
+ fnvlist_add_string(nv, ZPOOL_CONFIG_PHYS_PATH,
+ vd->vdev_physpath);
if (vd->vdev_fru != NULL)
- VERIFY(nvlist_add_string(nv, ZPOOL_CONFIG_FRU,
- vd->vdev_fru) == 0);
+ fnvlist_add_string(nv, ZPOOL_CONFIG_FRU, vd->vdev_fru);
if (vd->vdev_nparity != 0) {
ASSERT(strcmp(vd->vdev_ops->vdev_op_type,
@@ -266,59 +261,54 @@ vdev_config_generate(spa_t *spa, vdev_t
* that only support a single parity device -- older software
* will just ignore it.
*/
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_NPARITY,
- vd->vdev_nparity) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_NPARITY, vd->vdev_nparity);
}
if (vd->vdev_wholedisk != -1ULL)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK,
- vd->vdev_wholedisk) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK,
+ vd->vdev_wholedisk);
if (vd->vdev_not_present)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, 1) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, 1);
if (vd->vdev_isspare)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_IS_SPARE, 1) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_SPARE, 1);
if (!(flags & (VDEV_CONFIG_SPARE | VDEV_CONFIG_L2CACHE)) &&
vd == vd->vdev_top) {
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_ARRAY,
- vd->vdev_ms_array) == 0);
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_SHIFT,
- vd->vdev_ms_shift) == 0);
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_ASHIFT,
- vd->vdev_ashift) == 0);
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_ASIZE,
- vd->vdev_asize) == 0);
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_IS_LOG,
- vd->vdev_islog) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_ARRAY,
+ vd->vdev_ms_array);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_METASLAB_SHIFT,
+ vd->vdev_ms_shift);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_ASHIFT, vd->vdev_ashift);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_ASIZE,
+ vd->vdev_asize);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_LOG, vd->vdev_islog);
if (vd->vdev_removing)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_REMOVING,
- vd->vdev_removing) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_REMOVING,
+ vd->vdev_removing);
}
if (vd->vdev_dtl_smo.smo_object != 0)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_DTL,
- vd->vdev_dtl_smo.smo_object) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_DTL,
+ vd->vdev_dtl_smo.smo_object);
if (vd->vdev_crtxg)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_CREATE_TXG,
- vd->vdev_crtxg) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_CREATE_TXG, vd->vdev_crtxg);
if (getstats) {
vdev_stat_t vs;
pool_scan_stat_t ps;
vdev_get_stats(vd, &vs);
- VERIFY(nvlist_add_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS,
- (uint64_t *)&vs, sizeof (vs) / sizeof (uint64_t)) == 0);
+ fnvlist_add_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS,
+ (uint64_t *)&vs, sizeof (vs) / sizeof (uint64_t));
/* provide either current or previous scan information */
if (spa_scan_get_stats(spa, &ps) == 0) {
- VERIFY(nvlist_add_uint64_array(nv,
+ fnvlist_add_uint64_array(nv,
ZPOOL_CONFIG_SCAN_STATS, (uint64_t *)&ps,
- sizeof (pool_scan_stat_t) / sizeof (uint64_t))
- == 0);
+ sizeof (pool_scan_stat_t) / sizeof (uint64_t));
}
}
@@ -348,8 +338,8 @@ vdev_config_generate(spa_t *spa, vdev_t
}
if (idx) {
- VERIFY(nvlist_add_nvlist_array(nv,
- ZPOOL_CONFIG_CHILDREN, child, idx) == 0);
+ fnvlist_add_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN,
+ child, idx);
}
for (c = 0; c < idx; c++)
@@ -361,26 +351,20 @@ vdev_config_generate(spa_t *spa, vdev_t
const char *aux = NULL;
if (vd->vdev_offline && !vd->vdev_tmpoffline)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_OFFLINE,
- B_TRUE) == 0);
- if (vd->vdev_resilvering)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_RESILVERING,
- B_TRUE) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_OFFLINE, B_TRUE);
+ if (vd->vdev_resilver_txg != 0)
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_RESILVER_TXG,
+ vd->vdev_resilver_txg);
if (vd->vdev_faulted)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_FAULTED,
- B_TRUE) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_FAULTED, B_TRUE);
if (vd->vdev_degraded)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_DEGRADED,
- B_TRUE) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_DEGRADED, B_TRUE);
if (vd->vdev_removed)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_REMOVED,
- B_TRUE) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_REMOVED, B_TRUE);
if (vd->vdev_unspare)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_UNSPARE,
- B_TRUE) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_UNSPARE, B_TRUE);
if (vd->vdev_ishole)
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_IS_HOLE,
- B_TRUE) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_IS_HOLE, B_TRUE);
switch (vd->vdev_stat.vs_aux) {
case VDEV_AUX_ERR_EXCEEDED:
@@ -393,12 +377,11 @@ vdev_config_generate(spa_t *spa, vdev_t
}
if (aux != NULL)
- VERIFY(nvlist_add_string(nv, ZPOOL_CONFIG_AUX_STATE,
- aux) == 0);
+ fnvlist_add_string(nv, ZPOOL_CONFIG_AUX_STATE, aux);
if (vd->vdev_splitting && vd->vdev_orig_guid != 0LL) {
- VERIFY(nvlist_add_uint64(nv, ZPOOL_CONFIG_ORIG_GUID,
- vd->vdev_orig_guid) == 0);
+ fnvlist_add_uint64(nv, ZPOOL_CONFIG_ORIG_GUID,
+ vd->vdev_orig_guid);
}
}
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c Fri Aug 9 12:31:02 2013 (r254145)
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
*/
#include <sys/zfs_context.h>
@@ -94,3 +94,16 @@ zfs_dbgmsg(const char *fmt, ...)
}
mutex_exit(&zfs_dbgmsgs_lock);
}
+
+void
+zfs_dbgmsg_print(const char *tag)
+{
+ zfs_dbgmsg_t *zdm;
+
+ (void) printf("ZFS_DBGMSG(%s):\n", tag);
+ mutex_enter(&zfs_dbgmsgs_lock);
+ for (zdm = list_head(&zfs_dbgmsgs); zdm;
+ zdm = list_next(&zfs_dbgmsgs, zdm))
+ (void) printf("%s\n", zdm->zdm_msg);
+ mutex_exit(&zfs_dbgmsgs_lock);
+}
Modified: user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
==============================================================================
--- user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Fri Aug 9 12:19:38 2013 (r254144)
+++ user/attilio/vmobj-readlock/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Fri Aug 9 12:31:02 2013 (r254145)
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2012, Joyent, Inc. All rights reserved.
* Copyright (c) 2012, Martin Matuska <mm at FreeBSD.org>. All rights reserved.
@@ -524,7 +524,7 @@ typedef struct zpool_rewind_policy {
#define ZPOOL_CONFIG_SPLIT_GUID "split_guid"
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-user
mailing list