From 80db2734acbc78db12798cfb611d6acc7fe389e6 Mon Sep 17 00:00:00 2001 From: Fredrick John Berchmans Date: Fri, 2 May 2014 19:50:15 -0700 Subject: [PATCH] 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: Fredrick John Berchmans Signed-off-by: Greg Kroah-Hartman --- .../lustre/lnet/klnds/socklnd/socklnd_lib-linux.c | 47 +++++----------------- .../lustre/lustre/libcfs/linux/linux-tcpip.c | 41 ++++--------------- 2 files changed, 17 insertions(+), 71 deletions(-) diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib-linux.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib-linux.c index 37758d1..82b7d9f 100644 --- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib-linux.c +++ b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd_lib-linux.c @@ -188,7 +188,6 @@ void ksocknal_lib_eager_ack (ksock_conn_t *conn) { int opt = 1; - mm_segment_t oldmm = get_fs(); struct socket *sock = conn->ksnc_sock; /* 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) * on, introducing delay in completing zero-copy sends in my * peer. */ - set_fs(KERNEL_DS); - sock->ops->setsockopt (sock, SOL_TCP, TCP_QUICKACK, + kernel_setsockopt(sock, SOL_TCP, TCP_QUICKACK, (char *)&opt, sizeof (opt)); - set_fs(oldmm); } int @@ -428,7 +425,6 @@ ksocknal_lib_csum_tx(ksock_tx_t *tx) int 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; int len; int rc; @@ -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); if (rc == 0) { len = sizeof(*nagle); - set_fs(KERNEL_DS); - rc = sock->ops->getsockopt(sock, SOL_TCP, TCP_NODELAY, + rc = kernel_getsockopt(sock, SOL_TCP, TCP_NODELAY, (char *)nagle, &len); - set_fs(oldmm); } ksocknal_connsock_decref(conn); @@ -462,7 +456,6 @@ ksocknal_lib_get_conn_tunables (ksock_conn_t *conn, int *txmem, int *rxmem, int int ksocknal_lib_setup_sock (struct socket *sock) { - mm_segment_t oldmm = get_fs (); int rc; int option; int keep_idle; @@ -479,20 +472,16 @@ ksocknal_lib_setup_sock (struct socket *sock) linger.l_onoff = 0; linger.l_linger = 0; - set_fs (KERNEL_DS); - rc = sock_setsockopt (sock, SOL_SOCKET, SO_LINGER, + rc = kernel_setsockopt(sock, SOL_SOCKET, SO_LINGER, (char *)&linger, sizeof (linger)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set SO_LINGER: %d\n", rc); return (rc); } option = -1; - set_fs (KERNEL_DS); - rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_LINGER2, + rc = kernel_setsockopt(sock, SOL_TCP, TCP_LINGER2, (char *)&option, sizeof (option)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set SO_LINGER2: %d\n", rc); return (rc); @@ -501,10 +490,8 @@ ksocknal_lib_setup_sock (struct socket *sock) if (!*ksocknal_tunables.ksnd_nagle) { option = 1; - set_fs (KERNEL_DS); - rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_NODELAY, + rc = kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY, (char *)&option, sizeof (option)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't disable nagle: %d\n", rc); return (rc); @@ -531,10 +518,8 @@ ksocknal_lib_setup_sock (struct socket *sock) do_keepalive = (keep_idle > 0 && keep_count > 0 && keep_intvl > 0); option = (do_keepalive ? 1 : 0); - set_fs (KERNEL_DS); - rc = sock_setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE, + rc = kernel_setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&option, sizeof (option)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set SO_KEEPALIVE: %d\n", rc); return (rc); @@ -543,28 +528,22 @@ ksocknal_lib_setup_sock (struct socket *sock) if (!do_keepalive) return (0); - set_fs (KERNEL_DS); - rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPIDLE, + rc = kernel_setsockopt(sock, SOL_TCP, TCP_KEEPIDLE, (char *)&keep_idle, sizeof (keep_idle)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set TCP_KEEPIDLE: %d\n", rc); return (rc); } - set_fs (KERNEL_DS); - rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPINTVL, + rc = kernel_setsockopt(sock, SOL_TCP, TCP_KEEPINTVL, (char *)&keep_intvl, sizeof (keep_intvl)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set TCP_KEEPINTVL: %d\n", rc); return (rc); } - set_fs (KERNEL_DS); - rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_KEEPCNT, + rc = kernel_setsockopt(sock, SOL_TCP, TCP_KEEPCNT, (char *)&keep_count, sizeof (keep_count)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set TCP_KEEPCNT: %d\n", rc); return (rc); @@ -581,7 +560,6 @@ ksocknal_lib_push_conn (ksock_conn_t *conn) int nonagle; int val = 1; int rc; - mm_segment_t oldmm; rc = ksocknal_connsock_addref(conn); if (rc != 0) /* being shut down */ @@ -595,15 +573,10 @@ ksocknal_lib_push_conn (ksock_conn_t *conn) tp->nonagle = 1; release_sock (sk); - oldmm = get_fs (); - set_fs (KERNEL_DS); - - rc = sk->sk_prot->setsockopt (sk, SOL_TCP, TCP_NODELAY, + rc = kernel_setsockopt(conn->ksnc_sock, SOL_TCP, TCP_NODELAY, (char *)&val, sizeof (val)); LASSERT (rc == 0); - set_fs (oldmm); - lock_sock (sk); tp->nonagle = nonagle; release_sock (sk); diff --git a/drivers/staging/lustre/lustre/libcfs/linux/linux-tcpip.c b/drivers/staging/lustre/lustre/libcfs/linux/linux-tcpip.c index 7539fe1..4153b4a 100644 --- a/drivers/staging/lustre/lustre/libcfs/linux/linux-tcpip.c +++ b/drivers/staging/lustre/lustre/libcfs/linux/linux-tcpip.c @@ -56,21 +56,8 @@ libcfs_sock_ioctl(int cmd, unsigned long arg) CERROR ("Can't create socket: %d\n", rc); return rc; } - - sock_filp = sock_alloc_file(sock, 0, NULL); - if (IS_ERR(sock_filp)) { - 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: + rc = kernel_sock_ioctl(sock, cmd, arg); + sock_release(sock); return rc; } @@ -255,7 +242,6 @@ int libcfs_sock_write (struct socket *sock, void *buffer, int nob, int timeout) { int rc; - mm_segment_t oldmm = get_fs(); long ticks = timeout * HZ; unsigned long then; struct timeval tv; @@ -279,10 +265,8 @@ libcfs_sock_write (struct socket *sock, void *buffer, int nob, int timeout) .tv_sec = ticks / HZ, .tv_usec = ((ticks % HZ) * 1000000) / HZ }; - set_fs(KERNEL_DS); - rc = sock_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, + rc = kernel_setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(tv)); - set_fs(oldmm); if (rc != 0) { CERROR("Can't set socket send timeout " "%ld.%06d: %d\n", @@ -321,7 +305,6 @@ int libcfs_sock_read (struct socket *sock, void *buffer, int nob, int timeout) { int rc; - mm_segment_t oldmm = get_fs(); long ticks = timeout * HZ; unsigned long then; struct timeval tv; @@ -343,10 +326,8 @@ libcfs_sock_read (struct socket *sock, void *buffer, int nob, int timeout) .tv_sec = ticks / HZ, .tv_usec = ((ticks % HZ) * 1000000) / HZ }; - set_fs(KERNEL_DS); - rc = sock_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, + rc = kernel_setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)); - set_fs(oldmm); if (rc != 0) { CERROR("Can't set socket recv timeout %ld.%06d: %d\n", (long)tv.tv_sec, (int)tv.tv_usec, rc); @@ -384,7 +365,6 @@ libcfs_sock_create (struct socket **sockp, int *fatal, struct socket *sock; int rc; int option; - mm_segment_t oldmm = get_fs(); /* All errors are fatal except bind failure if the port is in use */ *fatal = 1; @@ -396,11 +376,9 @@ libcfs_sock_create (struct socket **sockp, int *fatal, return (rc); } - set_fs (KERNEL_DS); option = 1; - rc = sock_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, + rc = kernel_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&option, sizeof (option)); - set_fs (oldmm); if (rc != 0) { CERROR("Can't set SO_REUSEADDR for socket: %d\n", rc); goto failed; @@ -437,16 +415,13 @@ libcfs_sock_create (struct socket **sockp, int *fatal, int libcfs_sock_setbuf (struct socket *sock, int txbufsize, int rxbufsize) { - mm_segment_t oldmm = get_fs(); int option; int rc; if (txbufsize != 0) { option = txbufsize; - set_fs (KERNEL_DS); - rc = sock_setsockopt(sock, SOL_SOCKET, SO_SNDBUF, + rc = kernel_setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *)&option, sizeof (option)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set send buffer %d: %d\n", option, rc); @@ -456,10 +431,8 @@ libcfs_sock_setbuf (struct socket *sock, int txbufsize, int rxbufsize) if (rxbufsize != 0) { option = rxbufsize; - set_fs (KERNEL_DS); - rc = sock_setsockopt (sock, SOL_SOCKET, SO_RCVBUF, + rc = kernel_setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&option, sizeof (option)); - set_fs (oldmm); if (rc != 0) { CERROR ("Can't set receive buffer %d: %d\n", option, rc); -- 2.7.4