Commit 80db2734 authored by Fredrick John Berchmans's avatar Fredrick John Berchmans Committed by Greg Kroah-Hartman

staging: lustre use kernel socket sockopt apis

Change old way of ops->setsockopt or ops->getsockopt in kernel
to kernel_setsockopt or kernel_getsockopt.
Signed-off-by: default avatarFredrick John Berchmans <fredrickprashanth@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1d316792
...@@ -188,7 +188,6 @@ void ...@@ -188,7 +188,6 @@ void
ksocknal_lib_eager_ack (ksock_conn_t *conn) ksocknal_lib_eager_ack (ksock_conn_t *conn)
{ {
int opt = 1; int opt = 1;
mm_segment_t oldmm = get_fs();
struct socket *sock = conn->ksnc_sock; struct socket *sock = conn->ksnc_sock;
/* Remind the socket to ACK eagerly. If I don't, the socket might /* Remind the socket to ACK eagerly. If I don't, the socket might
...@@ -196,10 +195,8 @@ ksocknal_lib_eager_ack (ksock_conn_t *conn) ...@@ -196,10 +195,8 @@ ksocknal_lib_eager_ack (ksock_conn_t *conn)
* on, introducing delay in completing zero-copy sends in my * on, introducing delay in completing zero-copy sends in my
* peer. */ * peer. */
set_fs(KERNEL_DS); kernel_setsockopt(sock, SOL_TCP, TCP_QUICKACK,
sock->ops->setsockopt (sock, SOL_TCP, TCP_QUICKACK,
(char *)&opt, sizeof (opt)); (char *)&opt, sizeof (opt));
set_fs(oldmm);
} }
int int
...@@ -428,7 +425,6 @@ ksocknal_lib_csum_tx(ksock_tx_t *tx) ...@@ -428,7 +425,6 @@ ksocknal_lib_csum_tx(ksock_tx_t *tx)
int int
ksocknal_lib_get_conn_tunables (ksock_conn_t *conn, int *txmem, int *rxmem, int *nagle) ksocknal_lib_get_conn_tunables (ksock_conn_t *conn, int *txmem, int *rxmem, int *nagle)
{ {
mm_segment_t oldmm = get_fs ();
struct socket *sock = conn->ksnc_sock; struct socket *sock = conn->ksnc_sock;
int len; int len;
int rc; int rc;
...@@ -443,10 +439,8 @@ ksocknal_lib_get_conn_tunables (ksock_conn_t *conn, int *txmem, int *rxmem, int ...@@ -443,10 +439,8 @@ ksocknal_lib_get_conn_tunables (ksock_conn_t *conn, int *txmem, int *rxmem, int
rc = libcfs_sock_getbuf(sock, txmem, rxmem); rc = libcfs_sock_getbuf(sock, txmem, rxmem);
if (rc == 0) { if (rc == 0) {
len = sizeof(*nagle); len = sizeof(*nagle);
set_fs(KERNEL_DS); rc = kernel_getsockopt(sock, SOL_TCP, TCP_NODELAY,
rc = sock->ops->getsockopt(sock, SOL_TCP, TCP_NODELAY,
(char *)nagle, &len); (char *)nagle, &len);
set_fs(oldmm);
} }
ksocknal_connsock_decref(conn); ksocknal_connsock_decref(conn);
...@@ -462,7 +456,6 @@ ksocknal_lib_get_conn_tunables (ksock_conn_t *conn, int *txmem, int *rxmem, int ...@@ -462,7 +456,6 @@ ksocknal_lib_get_conn_tunables (ksock_conn_t *conn, int *txmem, int *rxmem, int
int int
ksocknal_lib_setup_sock (struct socket *sock) ksocknal_lib_setup_sock (struct socket *sock)
{ {
mm_segment_t oldmm = get_fs ();
int rc; int rc;
int option; int option;
int keep_idle; int keep_idle;
...@@ -479,20 +472,16 @@ ksocknal_lib_setup_sock (struct socket *sock) ...@@ -479,20 +472,16 @@ ksocknal_lib_setup_sock (struct socket *sock)
linger.l_onoff = 0; linger.l_onoff = 0;
linger.l_linger = 0; linger.l_linger = 0;
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER,
rc = sock_setsockopt (sock, SOL_SOCKET, SO_LINGER,
(char *)&linger, sizeof (linger)); (char *)&linger, sizeof (linger));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set SO_LINGER: %d\n", rc); CERROR ("Can't set SO_LINGER: %d\n", rc);
return (rc); return (rc);
} }
option = -1; option = -1;
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_TCP, TCP_LINGER2,
rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_LINGER2,
(char *)&option, sizeof (option)); (char *)&option, sizeof (option));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set SO_LINGER2: %d\n", rc); CERROR ("Can't set SO_LINGER2: %d\n", rc);
return (rc); return (rc);
...@@ -501,10 +490,8 @@ ksocknal_lib_setup_sock (struct socket *sock) ...@@ -501,10 +490,8 @@ ksocknal_lib_setup_sock (struct socket *sock)
if (!*ksocknal_tunables.ksnd_nagle) { if (!*ksocknal_tunables.ksnd_nagle) {
option = 1; option = 1;
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY,
rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_NODELAY,
(char *)&option, sizeof (option)); (char *)&option, sizeof (option));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't disable nagle: %d\n", rc); CERROR ("Can't disable nagle: %d\n", rc);
return (rc); return (rc);
...@@ -531,10 +518,8 @@ ksocknal_lib_setup_sock (struct socket *sock) ...@@ -531,10 +518,8 @@ ksocknal_lib_setup_sock (struct socket *sock)
do_keepalive = (keep_idle > 0 && keep_count > 0 && keep_intvl > 0); do_keepalive = (keep_idle > 0 && keep_count > 0 && keep_intvl > 0);
option = (do_keepalive ? 1 : 0); option = (do_keepalive ? 1 : 0);
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE,
rc = sock_setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE,
(char *)&option, sizeof (option)); (char *)&option, sizeof (option));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set SO_KEEPALIVE: %d\n", rc); CERROR ("Can't set SO_KEEPALIVE: %d\n", rc);
return (rc); return (rc);
...@@ -543,28 +528,22 @@ ksocknal_lib_setup_sock (struct socket *sock) ...@@ -543,28 +528,22 @@ ksocknal_lib_setup_sock (struct socket *sock)
if (!do_keepalive) if (!do_keepalive)
return (0); return (0);
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_TCP, TCP_KEEPIDLE,
rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPIDLE,
(char *)&keep_idle, sizeof (keep_idle)); (char *)&keep_idle, sizeof (keep_idle));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set TCP_KEEPIDLE: %d\n", rc); CERROR ("Can't set TCP_KEEPIDLE: %d\n", rc);
return (rc); return (rc);
} }
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_TCP, TCP_KEEPINTVL,
rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPINTVL,
(char *)&keep_intvl, sizeof (keep_intvl)); (char *)&keep_intvl, sizeof (keep_intvl));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set TCP_KEEPINTVL: %d\n", rc); CERROR ("Can't set TCP_KEEPINTVL: %d\n", rc);
return (rc); return (rc);
} }
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_TCP, TCP_KEEPCNT,
rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPCNT,
(char *)&keep_count, sizeof (keep_count)); (char *)&keep_count, sizeof (keep_count));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set TCP_KEEPCNT: %d\n", rc); CERROR ("Can't set TCP_KEEPCNT: %d\n", rc);
return (rc); return (rc);
...@@ -581,7 +560,6 @@ ksocknal_lib_push_conn (ksock_conn_t *conn) ...@@ -581,7 +560,6 @@ ksocknal_lib_push_conn (ksock_conn_t *conn)
int nonagle; int nonagle;
int val = 1; int val = 1;
int rc; int rc;
mm_segment_t oldmm;
rc = ksocknal_connsock_addref(conn); rc = ksocknal_connsock_addref(conn);
if (rc != 0) /* being shut down */ if (rc != 0) /* being shut down */
...@@ -595,15 +573,10 @@ ksocknal_lib_push_conn (ksock_conn_t *conn) ...@@ -595,15 +573,10 @@ ksocknal_lib_push_conn (ksock_conn_t *conn)
tp->nonagle = 1; tp->nonagle = 1;
release_sock (sk); release_sock (sk);
oldmm = get_fs (); rc = kernel_setsockopt(conn->ksnc_sock, SOL_TCP, TCP_NODELAY,
set_fs (KERNEL_DS);
rc = sk->sk_prot->setsockopt (sk, SOL_TCP, TCP_NODELAY,
(char *)&val, sizeof (val)); (char *)&val, sizeof (val));
LASSERT (rc == 0); LASSERT (rc == 0);
set_fs (oldmm);
lock_sock (sk); lock_sock (sk);
tp->nonagle = nonagle; tp->nonagle = nonagle;
release_sock (sk); release_sock (sk);
......
...@@ -56,21 +56,8 @@ libcfs_sock_ioctl(int cmd, unsigned long arg) ...@@ -56,21 +56,8 @@ libcfs_sock_ioctl(int cmd, unsigned long arg)
CERROR ("Can't create socket: %d\n", rc); CERROR ("Can't create socket: %d\n", rc);
return rc; return rc;
} }
rc = kernel_sock_ioctl(sock, cmd, arg);
sock_filp = sock_alloc_file(sock, 0, NULL);
if (IS_ERR(sock_filp)) {
sock_release(sock); sock_release(sock);
rc = PTR_ERR(sock_filp);
goto out;
}
set_fs(KERNEL_DS);
if (sock_filp->f_op->unlocked_ioctl)
rc = sock_filp->f_op->unlocked_ioctl(sock_filp, cmd, arg);
set_fs(oldmm);
fput(sock_filp);
out:
return rc; return rc;
} }
...@@ -255,7 +242,6 @@ int ...@@ -255,7 +242,6 @@ int
libcfs_sock_write (struct socket *sock, void *buffer, int nob, int timeout) libcfs_sock_write (struct socket *sock, void *buffer, int nob, int timeout)
{ {
int rc; int rc;
mm_segment_t oldmm = get_fs();
long ticks = timeout * HZ; long ticks = timeout * HZ;
unsigned long then; unsigned long then;
struct timeval tv; struct timeval tv;
...@@ -279,10 +265,8 @@ libcfs_sock_write (struct socket *sock, void *buffer, int nob, int timeout) ...@@ -279,10 +265,8 @@ libcfs_sock_write (struct socket *sock, void *buffer, int nob, int timeout)
.tv_sec = ticks / HZ, .tv_sec = ticks / HZ,
.tv_usec = ((ticks % HZ) * 1000000) / HZ .tv_usec = ((ticks % HZ) * 1000000) / HZ
}; };
set_fs(KERNEL_DS); rc = kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO,
rc = sock_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO,
(char *)&tv, sizeof(tv)); (char *)&tv, sizeof(tv));
set_fs(oldmm);
if (rc != 0) { if (rc != 0) {
CERROR("Can't set socket send timeout " CERROR("Can't set socket send timeout "
"%ld.%06d: %d\n", "%ld.%06d: %d\n",
...@@ -321,7 +305,6 @@ int ...@@ -321,7 +305,6 @@ int
libcfs_sock_read (struct socket *sock, void *buffer, int nob, int timeout) libcfs_sock_read (struct socket *sock, void *buffer, int nob, int timeout)
{ {
int rc; int rc;
mm_segment_t oldmm = get_fs();
long ticks = timeout * HZ; long ticks = timeout * HZ;
unsigned long then; unsigned long then;
struct timeval tv; struct timeval tv;
...@@ -343,10 +326,8 @@ libcfs_sock_read (struct socket *sock, void *buffer, int nob, int timeout) ...@@ -343,10 +326,8 @@ libcfs_sock_read (struct socket *sock, void *buffer, int nob, int timeout)
.tv_sec = ticks / HZ, .tv_sec = ticks / HZ,
.tv_usec = ((ticks % HZ) * 1000000) / HZ .tv_usec = ((ticks % HZ) * 1000000) / HZ
}; };
set_fs(KERNEL_DS); rc = kernel_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO,
rc = sock_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO,
(char *)&tv, sizeof(tv)); (char *)&tv, sizeof(tv));
set_fs(oldmm);
if (rc != 0) { if (rc != 0) {
CERROR("Can't set socket recv timeout %ld.%06d: %d\n", CERROR("Can't set socket recv timeout %ld.%06d: %d\n",
(long)tv.tv_sec, (int)tv.tv_usec, rc); (long)tv.tv_sec, (int)tv.tv_usec, rc);
...@@ -384,7 +365,6 @@ libcfs_sock_create (struct socket **sockp, int *fatal, ...@@ -384,7 +365,6 @@ libcfs_sock_create (struct socket **sockp, int *fatal,
struct socket *sock; struct socket *sock;
int rc; int rc;
int option; int option;
mm_segment_t oldmm = get_fs();
/* All errors are fatal except bind failure if the port is in use */ /* All errors are fatal except bind failure if the port is in use */
*fatal = 1; *fatal = 1;
...@@ -396,11 +376,9 @@ libcfs_sock_create (struct socket **sockp, int *fatal, ...@@ -396,11 +376,9 @@ libcfs_sock_create (struct socket **sockp, int *fatal,
return (rc); return (rc);
} }
set_fs (KERNEL_DS);
option = 1; option = 1;
rc = sock_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, rc = kernel_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,
(char *)&option, sizeof (option)); (char *)&option, sizeof (option));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR("Can't set SO_REUSEADDR for socket: %d\n", rc); CERROR("Can't set SO_REUSEADDR for socket: %d\n", rc);
goto failed; goto failed;
...@@ -437,16 +415,13 @@ libcfs_sock_create (struct socket **sockp, int *fatal, ...@@ -437,16 +415,13 @@ libcfs_sock_create (struct socket **sockp, int *fatal,
int int
libcfs_sock_setbuf (struct socket *sock, int txbufsize, int rxbufsize) libcfs_sock_setbuf (struct socket *sock, int txbufsize, int rxbufsize)
{ {
mm_segment_t oldmm = get_fs();
int option; int option;
int rc; int rc;
if (txbufsize != 0) { if (txbufsize != 0) {
option = txbufsize; option = txbufsize;
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_SOCKET, SO_SNDBUF,
rc = sock_setsockopt(sock, SOL_SOCKET, SO_SNDBUF,
(char *)&option, sizeof (option)); (char *)&option, sizeof (option));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set send buffer %d: %d\n", CERROR ("Can't set send buffer %d: %d\n",
option, rc); option, rc);
...@@ -456,10 +431,8 @@ libcfs_sock_setbuf (struct socket *sock, int txbufsize, int rxbufsize) ...@@ -456,10 +431,8 @@ libcfs_sock_setbuf (struct socket *sock, int txbufsize, int rxbufsize)
if (rxbufsize != 0) { if (rxbufsize != 0) {
option = rxbufsize; option = rxbufsize;
set_fs (KERNEL_DS); rc = kernel_setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
rc = sock_setsockopt (sock, SOL_SOCKET, SO_RCVBUF,
(char *)&option, sizeof (option)); (char *)&option, sizeof (option));
set_fs (oldmm);
if (rc != 0) { if (rc != 0) {
CERROR ("Can't set receive buffer %d: %d\n", CERROR ("Can't set receive buffer %d: %d\n",
option, rc); option, rc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment