aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/xprtsock.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sunrpc/xprtsock.c')
-rw-r--r--net/sunrpc/xprtsock.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 0b84fab68d7e..9b62923a9c06 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -215,7 +215,6 @@ static inline int xs_sendpages(struct socket *sock, struct sockaddr *addr, int a
215 struct page **ppage = xdr->pages; 215 struct page **ppage = xdr->pages;
216 unsigned int len, pglen = xdr->page_len; 216 unsigned int len, pglen = xdr->page_len;
217 int err, ret = 0; 217 int err, ret = 0;
218 ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int);
219 218
220 if (unlikely(!sock)) 219 if (unlikely(!sock))
221 return -ENOTCONN; 220 return -ENOTCONN;
@@ -248,7 +247,6 @@ static inline int xs_sendpages(struct socket *sock, struct sockaddr *addr, int a
248 base &= ~PAGE_CACHE_MASK; 247 base &= ~PAGE_CACHE_MASK;
249 } 248 }
250 249
251 sendpage = sock->ops->sendpage ? : sock_no_sendpage;
252 do { 250 do {
253 int flags = XS_SENDMSG_FLAGS; 251 int flags = XS_SENDMSG_FLAGS;
254 252
@@ -261,10 +259,7 @@ static inline int xs_sendpages(struct socket *sock, struct sockaddr *addr, int a
261 if (pglen != len || xdr->tail[0].iov_len != 0) 259 if (pglen != len || xdr->tail[0].iov_len != 0)
262 flags |= MSG_MORE; 260 flags |= MSG_MORE;
263 261
264 /* Hmm... We might be dealing with highmem pages */ 262 err = kernel_sendpage(sock, *ppage, base, len, flags);
265 if (PageHighMem(*ppage))
266 sendpage = sock_no_sendpage;
267 err = sendpage(sock, *ppage, base, len, flags);
268 if (ret == 0) 263 if (ret == 0)
269 ret = err; 264 ret = err;
270 else if (err > 0) 265 else if (err > 0)
@@ -1044,7 +1039,7 @@ static int xs_bindresvport(struct rpc_xprt *xprt, struct socket *sock)
1044 1039
1045 do { 1040 do {
1046 myaddr.sin_port = htons(port); 1041 myaddr.sin_port = htons(port);
1047 err = sock->ops->bind(sock, (struct sockaddr *) &myaddr, 1042 err = kernel_bind(sock, (struct sockaddr *) &myaddr,
1048 sizeof(myaddr)); 1043 sizeof(myaddr));
1049 if (err == 0) { 1044 if (err == 0) {
1050 xprt->port = port; 1045 xprt->port = port;
@@ -1140,7 +1135,7 @@ static void xs_tcp_reuse_connection(struct rpc_xprt *xprt)
1140 */ 1135 */
1141 memset(&any, 0, sizeof(any)); 1136 memset(&any, 0, sizeof(any));
1142 any.sa_family = AF_UNSPEC; 1137 any.sa_family = AF_UNSPEC;
1143 result = sock->ops->connect(sock, &any, sizeof(any), 0); 1138 result = kernel_connect(sock, &any, sizeof(any), 0);
1144 if (result) 1139 if (result)
1145 dprintk("RPC: AF_UNSPEC connect return code %d\n", 1140 dprintk("RPC: AF_UNSPEC connect return code %d\n",
1146 result); 1141 result);
@@ -1211,7 +1206,7 @@ static void xs_tcp_connect_worker(void *args)
1211 /* Tell the socket layer to start connecting... */ 1206 /* Tell the socket layer to start connecting... */
1212 xprt->stat.connect_count++; 1207 xprt->stat.connect_count++;
1213 xprt->stat.connect_start = jiffies; 1208 xprt->stat.connect_start = jiffies;
1214 status = sock->ops->connect(sock, (struct sockaddr *) &xprt->addr, 1209 status = kernel_connect(sock, (struct sockaddr *) &xprt->addr,
1215 xprt->addrlen, O_NONBLOCK); 1210 xprt->addrlen, O_NONBLOCK);
1216 dprintk("RPC: %p connect status %d connected %d sock state %d\n", 1211 dprintk("RPC: %p connect status %d connected %d sock state %d\n",
1217 xprt, -status, xprt_connected(xprt), sock->sk->sk_state); 1212 xprt, -status, xprt_connected(xprt), sock->sk->sk_state);