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 441bd53f5eca..897bdd982315 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -174,7 +174,6 @@ static inline int xs_sendpages(struct socket *sock, struct sockaddr *addr, int a | |||
174 | struct page **ppage = xdr->pages; | 174 | struct page **ppage = xdr->pages; |
175 | unsigned int len, pglen = xdr->page_len; | 175 | unsigned int len, pglen = xdr->page_len; |
176 | int err, ret = 0; | 176 | int err, ret = 0; |
177 | ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int); | ||
178 | 177 | ||
179 | if (unlikely(!sock)) | 178 | if (unlikely(!sock)) |
180 | return -ENOTCONN; | 179 | return -ENOTCONN; |
@@ -207,7 +206,6 @@ static inline int xs_sendpages(struct socket *sock, struct sockaddr *addr, int a | |||
207 | base &= ~PAGE_CACHE_MASK; | 206 | base &= ~PAGE_CACHE_MASK; |
208 | } | 207 | } |
209 | 208 | ||
210 | sendpage = sock->ops->sendpage ? : sock_no_sendpage; | ||
211 | do { | 209 | do { |
212 | int flags = XS_SENDMSG_FLAGS; | 210 | int flags = XS_SENDMSG_FLAGS; |
213 | 211 | ||
@@ -220,10 +218,7 @@ static inline int xs_sendpages(struct socket *sock, struct sockaddr *addr, int a | |||
220 | if (pglen != len || xdr->tail[0].iov_len != 0) | 218 | if (pglen != len || xdr->tail[0].iov_len != 0) |
221 | flags |= MSG_MORE; | 219 | flags |= MSG_MORE; |
222 | 220 | ||
223 | /* Hmm... We might be dealing with highmem pages */ | 221 | err = kernel_sendpage(sock, *ppage, base, len, flags); |
224 | if (PageHighMem(*ppage)) | ||
225 | sendpage = sock_no_sendpage; | ||
226 | err = sendpage(sock, *ppage, base, len, flags); | ||
227 | if (ret == 0) | 222 | if (ret == 0) |
228 | ret = err; | 223 | ret = err; |
229 | else if (err > 0) | 224 | else if (err > 0) |
@@ -986,7 +981,7 @@ static int xs_bindresvport(struct rpc_xprt *xprt, struct socket *sock) | |||
986 | 981 | ||
987 | do { | 982 | do { |
988 | myaddr.sin_port = htons(port); | 983 | myaddr.sin_port = htons(port); |
989 | err = sock->ops->bind(sock, (struct sockaddr *) &myaddr, | 984 | err = kernel_bind(sock, (struct sockaddr *) &myaddr, |
990 | sizeof(myaddr)); | 985 | sizeof(myaddr)); |
991 | if (err == 0) { | 986 | if (err == 0) { |
992 | xprt->port = port; | 987 | xprt->port = port; |
@@ -1081,7 +1076,7 @@ static void xs_tcp_reuse_connection(struct rpc_xprt *xprt) | |||
1081 | */ | 1076 | */ |
1082 | memset(&any, 0, sizeof(any)); | 1077 | memset(&any, 0, sizeof(any)); |
1083 | any.sa_family = AF_UNSPEC; | 1078 | any.sa_family = AF_UNSPEC; |
1084 | result = sock->ops->connect(sock, &any, sizeof(any), 0); | 1079 | result = kernel_connect(sock, &any, sizeof(any), 0); |
1085 | if (result) | 1080 | if (result) |
1086 | dprintk("RPC: AF_UNSPEC connect return code %d\n", | 1081 | dprintk("RPC: AF_UNSPEC connect return code %d\n", |
1087 | result); | 1082 | result); |
@@ -1151,7 +1146,7 @@ static void xs_tcp_connect_worker(void *args) | |||
1151 | /* Tell the socket layer to start connecting... */ | 1146 | /* Tell the socket layer to start connecting... */ |
1152 | xprt->stat.connect_count++; | 1147 | xprt->stat.connect_count++; |
1153 | xprt->stat.connect_start = jiffies; | 1148 | xprt->stat.connect_start = jiffies; |
1154 | status = sock->ops->connect(sock, (struct sockaddr *) &xprt->addr, | 1149 | status = kernel_connect(sock, (struct sockaddr *) &xprt->addr, |
1155 | sizeof(xprt->addr), O_NONBLOCK); | 1150 | sizeof(xprt->addr), O_NONBLOCK); |
1156 | dprintk("RPC: %p connect status %d connected %d sock state %d\n", | 1151 | dprintk("RPC: %p connect status %d connected %d sock state %d\n", |
1157 | xprt, -status, xprt_connected(xprt), sock->sk->sk_state); | 1152 | xprt, -status, xprt_connected(xprt), sock->sk->sk_state); |