summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/uts/common/fs/zfs/sa.c5
-rw-r--r--usr/src/uts/common/fs/zfs/txg.c1
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_ioctl.c7
-rw-r--r--usr/src/uts/common/inet/tcp/tcp_input.c134
-rw-r--r--usr/src/uts/common/io/devpoll.c69
-rw-r--r--usr/src/uts/common/os/condvar.c26
-rw-r--r--usr/src/uts/common/sys/condvar.h4
-rw-r--r--usr/src/uts/common/syscall/poll.c49
-rw-r--r--usr/src/uts/intel/ip/ip.global-objs.debug642
-rw-r--r--usr/src/uts/intel/ip/ip.global-objs.obj642
-rw-r--r--usr/src/uts/sparc/ip/ip.global-objs.debug642
-rw-r--r--usr/src/uts/sparc/ip/ip.global-objs.obj642
12 files changed, 233 insertions, 70 deletions
diff --git a/usr/src/uts/common/fs/zfs/sa.c b/usr/src/uts/common/fs/zfs/sa.c
index 4cb4546b25..57b3565cba 100644
--- a/usr/src/uts/common/fs/zfs/sa.c
+++ b/usr/src/uts/common/fs/zfs/sa.c
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Portions Copyright 2011 iXsystems, Inc
*/
#include <sys/zfs_context.h>
@@ -605,14 +606,14 @@ sa_find_sizes(sa_os_t *sa, sa_bulk_attr_t *attr_desc, int attr_count,
* and spill buffer.
*/
if (buftype == SA_BONUS && *index == -1 &&
- P2ROUNDUP(*total + hdrsize, 8) >
+ *total + P2ROUNDUP(hdrsize, 8) >
(full_space - sizeof (blkptr_t))) {
*index = i;
done = B_TRUE;
}
next:
- if (P2ROUNDUP(*total + hdrsize, 8) > full_space &&
+ if (*total + P2ROUNDUP(hdrsize, 8) > full_space &&
buftype == SA_BONUS)
*will_spill = B_TRUE;
}
diff --git a/usr/src/uts/common/fs/zfs/txg.c b/usr/src/uts/common/fs/zfs/txg.c
index ed454aa87b..55b1f3884b 100644
--- a/usr/src/uts/common/fs/zfs/txg.c
+++ b/usr/src/uts/common/fs/zfs/txg.c
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Portions Copyright 2011 Martin Matuska
*/
#include <sys/zfs_context.h>
diff --git a/usr/src/uts/common/fs/zfs/zfs_ioctl.c b/usr/src/uts/common/fs/zfs/zfs_ioctl.c
index 1b63c9bf45..486ae9506d 100644
--- a/usr/src/uts/common/fs/zfs/zfs_ioctl.c
+++ b/usr/src/uts/common/fs/zfs/zfs_ioctl.c
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Portions Copyright 2011 Martin Matuska
*/
#include <sys/types.h>
@@ -1943,8 +1944,10 @@ top:
uint64_t cookie = 0;
int len = sizeof (zc->zc_name) - (p - zc->zc_name);
- while (dmu_dir_list_next(os, len, p, NULL, &cookie) == 0)
- (void) dmu_objset_prefetch(p, NULL);
+ while (dmu_dir_list_next(os, len, p, NULL, &cookie) == 0) {
+ if (!dataset_name_hidden(zc->zc_name))
+ (void) dmu_objset_prefetch(zc->zc_name, NULL);
+ }
}
do {
diff --git a/usr/src/uts/common/inet/tcp/tcp_input.c b/usr/src/uts/common/inet/tcp/tcp_input.c
index 831ebc7ba5..918412d03a 100644
--- a/usr/src/uts/common/inet/tcp/tcp_input.c
+++ b/usr/src/uts/common/inet/tcp/tcp_input.c
@@ -21,6 +21,7 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
*/
/* This file contains all TCP input processing functions. */
@@ -2230,6 +2231,114 @@ tcp_ack_mp(tcp_t *tcp)
}
/*
+ * Dummy socket upcalls for if/when the conn_t gets detached from a
+ * direct-callback sonode via a user-driven close(). Easy to catch with
+ * DTrace FBT, and should be mostly harmless.
+ */
+
+/* ARGSUSED */
+static sock_upper_handle_t
+tcp_dummy_newconn(sock_upper_handle_t x, sock_lower_handle_t y,
+ sock_downcalls_t *z, cred_t *cr, pid_t pid, sock_upcalls_t **ignored)
+{
+ ASSERT(0); /* Panic in debug, otherwise ignore. */
+ return (NULL);
+}
+
+/* ARGSUSED */
+static void
+tcp_dummy_connected(sock_upper_handle_t x, sock_connid_t y, cred_t *cr,
+ pid_t pid)
+{
+ ASSERT(x == NULL);
+ /* Normally we'd crhold(cr) and attach it to socket state. */
+ /* LINTED */
+}
+
+/* ARGSUSED */
+static int
+tcp_dummy_disconnected(sock_upper_handle_t x, sock_connid_t y, int blah)
+{
+ ASSERT(0); /* Panic in debug, otherwise ignore. */
+ return (-1);
+}
+
+/* ARGSUSED */
+static void
+tcp_dummy_opctl(sock_upper_handle_t x, sock_opctl_action_t y, uintptr_t blah)
+{
+ ASSERT(x == NULL);
+ /* We really want this one to be a harmless NOP for now. */
+ /* LINTED */
+}
+
+/* ARGSUSED */
+static ssize_t
+tcp_dummy_recv(sock_upper_handle_t x, mblk_t *mp, size_t len, int flags,
+ int *error, boolean_t *push)
+{
+ ASSERT(x == NULL);
+
+ /*
+ * Consume the message, set ESHUTDOWN, and return an error.
+ * Nobody's home!
+ */
+ freemsg(mp);
+ *error = ESHUTDOWN;
+ return (-1);
+}
+
+/* ARGSUSED */
+static void
+tcp_dummy_set_proto_props(sock_upper_handle_t x, struct sock_proto_props *y)
+{
+ ASSERT(0); /* Panic in debug, otherwise ignore. */
+}
+
+/* ARGSUSED */
+static void
+tcp_dummy_txq_full(sock_upper_handle_t x, boolean_t y)
+{
+ ASSERT(0); /* Panic in debug, otherwise ignore. */
+}
+
+/* ARGSUSED */
+static void
+tcp_dummy_signal_oob(sock_upper_handle_t x, ssize_t len)
+{
+ ASSERT(x == NULL);
+ /* Otherwise, this would signal socket state about OOB data. */
+}
+
+/* ARGSUSED */
+static void
+tcp_dummy_set_error(sock_upper_handle_t x, int err)
+{
+ ASSERT(0); /* Panic in debug, otherwise ignore. */
+}
+
+/* ARGSUSED */
+static void
+tcp_dummy_onearg(sock_upper_handle_t x)
+{
+ ASSERT(0); /* Panic in debug, otherwise ignore. */
+}
+
+static sock_upcalls_t tcp_dummy_upcalls = {
+ tcp_dummy_newconn,
+ tcp_dummy_connected,
+ tcp_dummy_disconnected,
+ tcp_dummy_opctl,
+ tcp_dummy_recv,
+ tcp_dummy_set_proto_props,
+ tcp_dummy_txq_full,
+ tcp_dummy_signal_oob,
+ tcp_dummy_onearg,
+ tcp_dummy_set_error,
+ tcp_dummy_onearg
+};
+
+/*
* Handle M_DATA messages from IP. Its called directly from IP via
* squeue for received IP packets.
*
@@ -2271,6 +2380,7 @@ tcp_input_data(void *arg, mblk_t *mp, void *arg2, ip_recv_attr_t *ira)
squeue_t *sqp = (squeue_t *)arg2;
tcp_t *tcp = connp->conn_tcp;
tcp_stack_t *tcps = tcp->tcp_tcps;
+ sock_upcalls_t *sockupcalls;
/*
* RST from fused tcp loopback peer should trigger an unfuse.
@@ -2396,6 +2506,11 @@ tcp_input_data(void *arg, mblk_t *mp, void *arg2, ip_recv_attr_t *ira)
}
}
+ sockupcalls = connp->conn_upcalls;
+ /* A conn_t may have belonged to a now-closed socket. Be careful. */
+ if (sockupcalls == NULL)
+ sockupcalls = &tcp_dummy_upcalls;
+
switch (tcp->tcp_state) {
case TCPS_SYN_SENT:
if (connp->conn_final_sqp == NULL &&
@@ -2607,8 +2722,7 @@ tcp_input_data(void *arg, mblk_t *mp, void *arg2, ip_recv_attr_t *ira)
}
putnext(connp->conn_rq, mp1);
} else {
- (*connp->conn_upcalls->
- su_connected)
+ (*sockupcalls->su_connected)
(connp->conn_upper_handle,
tcp->tcp_connid,
ira->ira_cred,
@@ -2635,7 +2749,7 @@ tcp_input_data(void *arg, mblk_t *mp, void *arg2, ip_recv_attr_t *ira)
}
putnext(connp->conn_rq, mp1);
} else {
- (*connp->conn_upcalls->su_connected)
+ (*sockupcalls->su_connected)
(connp->conn_upper_handle,
tcp->tcp_connid, ira->ira_cred,
ira->ira_cpid);
@@ -3009,8 +3123,7 @@ try_again:;
tcp->tcp_urp_last))) {
if (IPCL_IS_NONSTR(connp)) {
if (!TCP_IS_DETACHED(tcp)) {
- (*connp->conn_upcalls->
- su_signal_oob)
+ (*sockupcalls->su_signal_oob)
(connp->conn_upper_handle,
urp);
}
@@ -3288,7 +3401,7 @@ ok:;
*/
if (IPCL_IS_NONSTR(connp)) {
if (!TCP_IS_DETACHED(tcp)) {
- (*connp->conn_upcalls->su_signal_oob)
+ (*sockupcalls->su_signal_oob)
(connp->conn_upper_handle, urp);
}
} else {
@@ -3447,7 +3560,7 @@ ok:;
if (IPCL_IS_NONSTR(connp)) {
int error;
- (*connp->conn_upcalls->su_recv)
+ (*sockupcalls->su_recv)
(connp->conn_upper_handle, mp, seg_len,
MSG_OOB, &error, NULL);
/*
@@ -4626,8 +4739,7 @@ update_ack:
boolean_t push = flags & (TH_PUSH|TH_FIN);
int error;
- if ((*connp->conn_upcalls->su_recv)(
- connp->conn_upper_handle,
+ if ((*sockupcalls->su_recv)(connp->conn_upper_handle,
mp, seg_len, 0, &error, &push) <= 0) {
/*
* We should never be in middle of a
@@ -4869,8 +4981,8 @@ ack_check:
if (IPCL_IS_NONSTR(connp)) {
ASSERT(tcp->tcp_ordrel_mp == NULL);
tcp->tcp_ordrel_done = B_TRUE;
- (*connp->conn_upcalls->su_opctl)
- (connp->conn_upper_handle, SOCK_OPCTL_SHUT_RECV, 0);
+ (*sockupcalls->su_opctl)(connp->conn_upper_handle,
+ SOCK_OPCTL_SHUT_RECV, 0);
goto done;
}
diff --git a/usr/src/uts/common/io/devpoll.c b/usr/src/uts/common/io/devpoll.c
index 09b21abf66..111c4c243f 100644
--- a/usr/src/uts/common/io/devpoll.c
+++ b/usr/src/uts/common/io/devpoll.c
@@ -23,6 +23,7 @@
* Use is subject to license terms.
*/
+/* Copyright (c) 2011 by Delphix. All rights reserved. */
#include <sys/types.h>
#include <sys/devops.h>
@@ -46,7 +47,7 @@
#define RESERVED 1
/* local data struct */
-static dp_entry_t **devpolltbl; /* dev poll entries */
+static dp_entry_t **devpolltbl; /* dev poll entries */
static size_t dptblsize;
static kmutex_t devpoll_lock; /* lock protecting dev tbl */
@@ -238,7 +239,7 @@ dp_pcache_poll(pollfd_t *pfdp, pollcache_t *pcp, nfds_t nfds, int *fdcntp)
{
int start, ostart, end;
int fdcnt, fd;
- boolean_t done;
+ boolean_t done;
file_t *fp;
short revent;
boolean_t no_wrap;
@@ -492,7 +493,7 @@ dpopen(dev_t *devp, int flag, int otyp, cred_t *credp)
static int
dpwrite(dev_t dev, struct uio *uiop, cred_t *credp)
{
- minor_t minor;
+ minor_t minor;
dp_entry_t *dpep;
pollcache_t *pcp;
pollfd_t *pollfdp, *pfdp;
@@ -691,21 +692,12 @@ dpwrite(dev_t dev, struct uio *uiop, cred_t *credp)
static int
dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
{
- timestruc_t now;
- timestruc_t rqtime;
- timestruc_t *rqtp = NULL;
- int timecheck = 0;
- minor_t minor;
+ minor_t minor;
dp_entry_t *dpep;
pollcache_t *pcp;
- int error = 0;
+ int error = 0;
STRUCT_DECL(dvpoll, dvpoll);
- if (cmd == DP_POLL) {
- /* do this now, before we sleep on DP_WRITER_PRESENT below */
- timecheck = timechanged;
- gethrestime(&now);
- }
minor = getminor(dev);
mutex_enter(&devpoll_lock);
ASSERT(minor < dptblsize);
@@ -730,11 +722,12 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
switch (cmd) {
case DP_POLL:
{
- pollstate_t *ps;
- nfds_t nfds;
- int fdcnt = 0;
- int time_out;
- int rval;
+ pollstate_t *ps;
+ nfds_t nfds;
+ int fdcnt = 0;
+ int time_out;
+ clock_t *deltap = NULL;
+ clock_t delta;
STRUCT_INIT(dvpoll, mode);
error = copyin((caddr_t)arg, STRUCT_BUF(dvpoll),
@@ -747,12 +740,15 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
time_out = STRUCT_FGET(dvpoll, dp_timeout);
if (time_out > 0) {
/*
- * Determine the future time of the requested timeout.
+ * cv_relwaituntil_sig operates at the tick
+ * granularity, which by default is 10 ms.
+ * This results in rounding user specified
+ * timeouts up but prevents the system
+ * from being flooded with small high
+ * resolution timers.
*/
- rqtp = &rqtime;
- rqtp->tv_sec = time_out / MILLISEC;
- rqtp->tv_nsec = (time_out % MILLISEC) * MICROSEC;
- timespecadd(rqtp, &now);
+ delta = MSEC_TO_TICK_ROUNDUP(time_out);
+ deltap = &delta;
}
if ((nfds = STRUCT_FGET(dvpoll, dp_nfds)) == 0) {
@@ -765,17 +761,19 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
if (time_out == 0)
return (0);
mutex_enter(&curthread->t_delay_lock);
- while ((rval = cv_waituntil_sig(&curthread->t_delay_cv,
- &curthread->t_delay_lock, rqtp, timecheck)) > 0)
+ while ((delta = cv_relwaituntil_sig(
+ &curthread->t_delay_cv, &curthread->t_delay_lock,
+ deltap, TR_MILLISEC)) > 0) {
continue;
+ }
mutex_exit(&curthread->t_delay_lock);
- return ((rval == 0)? EINTR : 0);
+ return (delta == 0 ? EINTR : 0);
}
/*
- * XXX It'd be nice not to have to alloc each time.
- * But it requires another per thread structure hook.
- * Do it later if there is data suggest that.
+ * XXX It would be nice not to have to alloc each time, but it
+ * requires another per thread structure hook. This can be
+ * implemented later if data suggests that it's necessary.
*/
if ((ps = curthread->t_pollstate) == NULL) {
curthread->t_pollstate = pollstate_create();
@@ -820,14 +818,15 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp)
*/
if (time_out == 0) /* immediate timeout */
break;
- rval = cv_waituntil_sig(&pcp->pc_cv, &pcp->pc_lock,
- rqtp, timecheck);
+
+ delta = cv_relwaituntil_sig(&pcp->pc_cv, &pcp->pc_lock,
+ deltap, TR_MILLISEC);
/*
* If we were awakened by a signal or timeout
* then break the loop, else poll again.
*/
- if (rval <= 0) {
- if (rval == 0) /* signal */
+ if (delta <= 0) {
+ if (delta == 0) /* signal */
error = EINTR;
break;
}
@@ -915,7 +914,7 @@ dppoll(dev_t dev, short events, int anyyet, short *reventsp,
static int
dpclose(dev_t dev, int flag, int otyp, cred_t *credp)
{
- minor_t minor;
+ minor_t minor;
dp_entry_t *dpep;
pollcache_t *pcp;
int i;
diff --git a/usr/src/uts/common/os/condvar.c b/usr/src/uts/common/os/condvar.c
index 38051475f4..62945ae41f 100644
--- a/usr/src/uts/common/os/condvar.c
+++ b/usr/src/uts/common/os/condvar.c
@@ -24,6 +24,8 @@
* Use is subject to license terms.
*/
+/* Copyright (c) 2011 by Delphix. All rights reserved. */
+
#include <sys/thread.h>
#include <sys/proc.h>
#include <sys/debug.h>
@@ -500,6 +502,30 @@ cv_reltimedwait_sig(kcondvar_t *cvp, kmutex_t *mp, clock_t delta,
}
/*
+ * Same as cv_reltimedwait_sig() except that the timeout is optional. If
+ * there is no timeout then the function will block until woken up
+ * or interrupted.
+ */
+clock_t
+cv_relwaituntil_sig(kcondvar_t *cvp, kmutex_t *mp, clock_t *delta,
+ time_res_t res)
+{
+ /*
+ * If there is no timeout specified wait indefinitely for a
+ * signal or a wakeup.
+ */
+ if (delta == NULL) {
+ return (cv_wait_sig_swap(cvp, mp));
+ }
+
+ /*
+ * cv_reltimedwait_sig will wait for the relative timeout
+ * specified by delta.
+ */
+ return (cv_reltimedwait_sig(cvp, mp, *delta, res));
+}
+
+/*
* Like cv_wait_sig_swap but allows the caller to indicate (with a
* non-NULL sigret) that they will take care of signalling the cv
* after wakeup, if necessary. This is a vile hack that should only
diff --git a/usr/src/uts/common/sys/condvar.h b/usr/src/uts/common/sys/condvar.h
index 3a7fdc5f24..3aa569a73e 100644
--- a/usr/src/uts/common/sys/condvar.h
+++ b/usr/src/uts/common/sys/condvar.h
@@ -23,6 +23,8 @@
* Use is subject to license terms.
*/
+/* Copyright (c) 2011 by Delphix. All rights reserved. */
+
/*
* condvar.h:
*
@@ -95,6 +97,8 @@ extern int cv_wait_sig(kcondvar_t *, kmutex_t *);
extern clock_t cv_timedwait_sig(kcondvar_t *, kmutex_t *, clock_t);
extern clock_t cv_reltimedwait_sig(kcondvar_t *, kmutex_t *, clock_t,
time_res_t);
+extern clock_t cv_relwaituntil_sig(kcondvar_t *, kmutex_t *, clock_t *,
+ time_res_t);
extern int cv_wait_sig_swap(kcondvar_t *, kmutex_t *);
extern int cv_wait_sig_swap_core(kcondvar_t *, kmutex_t *, int *);
extern void cv_signal(kcondvar_t *);
diff --git a/usr/src/uts/common/syscall/poll.c b/usr/src/uts/common/syscall/poll.c
index dfcbb6dc9f..04bd862478 100644
--- a/usr/src/uts/common/syscall/poll.c
+++ b/usr/src/uts/common/syscall/poll.c
@@ -24,6 +24,7 @@
* Use is subject to license terms.
*/
+/* Copyright (c) 2011 by Delphix. All rights reserved. */
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
@@ -286,11 +287,10 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp)
klwp_t *lwp = ttolwp(t);
proc_t *p = ttoproc(t);
int fdcnt = 0;
- int rval;
int i;
- timespec_t *rqtp = NULL;
- int timecheck = 0;
int imm_timeout = 0;
+ clock_t *deltap = NULL;
+ clock_t delta;
pollfd_t *pollfdp;
pollstate_t *ps;
pollcache_t *pcp;
@@ -302,14 +302,22 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp)
* Determine the precise future time of the requested timeout, if any.
*/
if (tsp != NULL) {
- if (tsp->tv_sec == 0 && tsp->tv_nsec == 0)
+ if (tsp->tv_sec == 0 && tsp->tv_nsec == 0) {
imm_timeout = 1;
- else {
- timespec_t now;
- timecheck = timechanged;
- gethrestime(&now);
- rqtp = tsp;
- timespecadd(rqtp, &now);
+ } else {
+ /*
+ * cv_relwaituntil_sig operates at
+ * the tick granularity, which by default is 10 ms.
+ * Convert the specified timespec to ticks, rounding
+ * up to at least 1 tick to avoid flooding the
+ * system with small high resolution timers.
+ */
+ delta = SEC_TO_TICK(tsp->tv_sec) +
+ NSEC_TO_TICK(tsp->tv_nsec);
+ if (delta < 1) {
+ delta = 1;
+ }
+ deltap = &delta;
}
}
@@ -347,11 +355,11 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp)
*/
if (!imm_timeout) {
mutex_enter(&t->t_delay_lock);
- while ((rval = cv_waituntil_sig(&t->t_delay_cv,
- &t->t_delay_lock, rqtp, timecheck)) > 0)
+ while ((delta = cv_relwaituntil_sig(&t->t_delay_cv,
+ &t->t_delay_lock, deltap, TR_MILLISEC)) > 0)
continue;
mutex_exit(&t->t_delay_lock);
- if (rval == 0)
+ if (delta == 0)
error = EINTR;
}
goto pollout;
@@ -542,18 +550,19 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp)
* Do not check for signals if we have a zero timeout.
*/
mutex_exit(&ps->ps_lock);
- if (imm_timeout)
- rval = -1;
- else
- rval = cv_waituntil_sig(&pcp->pc_cv, &pcp->pc_lock,
- rqtp, timecheck);
+ if (imm_timeout) {
+ delta = -1;
+ } else {
+ delta = cv_relwaituntil_sig(&pcp->pc_cv, &pcp->pc_lock,
+ deltap, TR_MILLISEC);
+ }
mutex_exit(&pcp->pc_lock);
/*
* If we have received a signal or timed out
* then break out and return.
*/
- if (rval <= 0) {
- if (rval == 0)
+ if (delta <= 0) {
+ if (delta == 0)
error = EINTR;
break;
}
diff --git a/usr/src/uts/intel/ip/ip.global-objs.debug64 b/usr/src/uts/intel/ip/ip.global-objs.debug64
index 7062aac6db..40d5bd498b 100644
--- a/usr/src/uts/intel/ip/ip.global-objs.debug64
+++ b/usr/src/uts/intel/ip/ip.global-objs.debug64
@@ -20,6 +20,7 @@
#
#
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright 2011 Nexenta Systems, Inc. All rights reserved
#
arp_m_tbl
@@ -253,6 +254,7 @@ tcp_conn_cache
tcp_conn_hash_size
tcp_do_reclaim
tcp_drop_ack_unsent_cnt
+tcp_dummy_upcalls
tcp_early_abort
tcp_fallback_sock_winit
tcp_free_list_max_cnt
diff --git a/usr/src/uts/intel/ip/ip.global-objs.obj64 b/usr/src/uts/intel/ip/ip.global-objs.obj64
index 6c095dd832..5c56fe7efd 100644
--- a/usr/src/uts/intel/ip/ip.global-objs.obj64
+++ b/usr/src/uts/intel/ip/ip.global-objs.obj64
@@ -20,6 +20,7 @@
#
#
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright 2011 Nexenta Systems, Inc. All rights reserved
#
arp_m_tbl
@@ -250,6 +251,7 @@ tcp_conn_cache
tcp_conn_hash_size
tcp_do_reclaim
tcp_drop_ack_unsent_cnt
+tcp_dummy_upcalls
tcp_early_abort
tcp_fallback_sock_winit
tcp_free_list_max_cnt
diff --git a/usr/src/uts/sparc/ip/ip.global-objs.debug64 b/usr/src/uts/sparc/ip/ip.global-objs.debug64
index 7062aac6db..40d5bd498b 100644
--- a/usr/src/uts/sparc/ip/ip.global-objs.debug64
+++ b/usr/src/uts/sparc/ip/ip.global-objs.debug64
@@ -20,6 +20,7 @@
#
#
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright 2011 Nexenta Systems, Inc. All rights reserved
#
arp_m_tbl
@@ -253,6 +254,7 @@ tcp_conn_cache
tcp_conn_hash_size
tcp_do_reclaim
tcp_drop_ack_unsent_cnt
+tcp_dummy_upcalls
tcp_early_abort
tcp_fallback_sock_winit
tcp_free_list_max_cnt
diff --git a/usr/src/uts/sparc/ip/ip.global-objs.obj64 b/usr/src/uts/sparc/ip/ip.global-objs.obj64
index 6c095dd832..5c56fe7efd 100644
--- a/usr/src/uts/sparc/ip/ip.global-objs.obj64
+++ b/usr/src/uts/sparc/ip/ip.global-objs.obj64
@@ -20,6 +20,7 @@
#
#
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright 2011 Nexenta Systems, Inc. All rights reserved
#
arp_m_tbl
@@ -250,6 +251,7 @@ tcp_conn_cache
tcp_conn_hash_size
tcp_do_reclaim
tcp_drop_ack_unsent_cnt
+tcp_dummy_upcalls
tcp_early_abort
tcp_fallback_sock_winit
tcp_free_list_max_cnt