6813959 I/OAT should be removed from TCP and STREAMS
--HG--
rename : usr/src/uts/common/sys/sodirect.h => usr/src/uts/common/fs/sockfs/sodirect.h
diff --git a/usr/src/uts/common/fs/sockfs/sockcommon_subr.c b/usr/src/uts/common/fs/sockfs/sockcommon_subr.c
index 90bc351..799f154 100644
--- a/usr/src/uts/common/fs/sockfs/sockcommon_subr.c
+++ b/usr/src/uts/common/fs/sockfs/sockcommon_subr.c
@@ -33,7 +33,6 @@
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <sys/sockio.h>
-#include <sys/sodirect.h>
#include <sys/strsubr.h>
#include <sys/strsun.h>
#include <sys/atomic.h>
@@ -41,6 +40,7 @@
#include <fs/sockfs/sockcommon.h>
#include <fs/sockfs/socktpi.h>
+#include <fs/sockfs/sodirect.h>
#include <sys/ddi.h>
#include <inet/ip.h>
#include <sys/time.h>
@@ -681,10 +681,7 @@
* First move messages from the dump area to processing area
*/
if (sodp != NULL) {
- /* No need to grab sod_lockp since it pointers to so_lock */
- if (sodp->sod_state & SOD_ENABLED) {
- ASSERT(sodp->sod_lockp == &so->so_lock);
-
+ if (sodp->sod_enabled) {
if (sodp->sod_uioa.uioa_state & UIOA_ALLOC) {
/* nothing to uioamove */
sodp = NULL;
@@ -780,12 +777,12 @@
ssize_t copied = 0;
if (sodp != NULL && (DB_FLAGS(mp) & DBLK_UIOA)) {
- mutex_enter(sodp->sod_lockp);
+ mutex_enter(&so->so_lock);
ASSERT(uiop == (uio_t *)&sodp->sod_uioa);
copied = sod_uioa_mblk(so, mp);
if (copied > 0)
partial_read = B_TRUE;
- mutex_exit(sodp->sod_lockp);
+ mutex_exit(&so->so_lock);
/* mark this mblk as processed */
mp = NULL;
} else {
@@ -988,8 +985,8 @@
ASSERT(so->so_rcv_wakeup == B_FALSE);
done:
if (sodp != NULL) {
- mutex_enter(sodp->sod_lockp);
- if ((sodp->sod_state & SOD_ENABLED) &&
+ mutex_enter(&so->so_lock);
+ if (sodp->sod_enabled &&
(sodp->sod_uioa.uioa_state & UIOA_ENABLED)) {
SOD_UIOAFINI(sodp);
if (sodp->sod_uioa.uioa_mbytes > 0) {
@@ -1000,7 +997,7 @@
error = 0;
}
}
- mutex_exit(sodp->sod_lockp);
+ mutex_exit(&so->so_lock);
}
#ifdef DEBUG
if (so_debug_length) {
@@ -1296,11 +1293,6 @@
so->so_pollev = pso->so_pollev & SO_POLLEV_ALWAYS;
mutex_exit(&pso->so_lock);
-
- if (uioasync.enabled) {
- sod_sock_init(so, NULL, NULL, NULL, &so->so_lock);
- }
- return (0);
} else {
struct sockparams *sp = so->so_sockparams;
sock_upcalls_t *upcalls_to_use;
@@ -1367,8 +1359,12 @@
return (EPROTONOSUPPORT);
}
}
- return (0);
}
+
+ if (uioasync.enabled)
+ sod_sock_init(so);
+
+ return (0);
}
/*
@@ -2262,12 +2258,12 @@
if (so->so_direct != NULL) {
sodirect_t *sodp = so->so_direct;
- mutex_enter(sodp->sod_lockp);
+ mutex_enter(&so->so_lock);
- so->so_direct->sod_state &= ~SOD_ENABLED;
+ so->so_direct->sod_enabled = B_FALSE;
so->so_state &= ~SS_SODIRECT;
ASSERT(sodp->sod_uioafh == NULL);
- mutex_exit(sodp->sod_lockp);
+ mutex_exit(&so->so_lock);
}
/* Turn sonode into a TPI socket */