diff options
Diffstat (limited to 'net/sunrpc/xprtsock.c')
-rw-r--r-- | net/sunrpc/xprtsock.c | 13 |
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); |