diff options
author | Paul Mackerras <paulus@samba.org> | 2008-04-14 07:11:02 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-14 07:11:02 -0400 |
commit | ac7c5353b189e10cf5dd27399f64f7b013abffc6 (patch) | |
tree | 8222d92b774c256d6ec4399c716d76b3f05ddc4b /net/sunrpc | |
parent | a8f75ea70c58546205fb7673be41455b9da5d9a7 (diff) | |
parent | 120dd64cacd4fb796bca0acba3665553f1d9ecaa (diff) |
Merge branch 'linux-2.6'
Diffstat (limited to 'net/sunrpc')
-rw-r--r-- | net/sunrpc/clnt.c | 4 | ||||
-rw-r--r-- | net/sunrpc/xdr.c | 9 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 21 |
3 files changed, 17 insertions, 17 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 8c6a7f1a25e9..8834d68972cb 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -261,10 +261,6 @@ struct rpc_clnt *rpc_create(struct rpc_create_args *args) | |||
261 | }; | 261 | }; |
262 | char servername[48]; | 262 | char servername[48]; |
263 | 263 | ||
264 | xprt = xprt_create_transport(&xprtargs); | ||
265 | if (IS_ERR(xprt)) | ||
266 | return (struct rpc_clnt *)xprt; | ||
267 | |||
268 | /* | 264 | /* |
269 | * If the caller chooses not to specify a hostname, whip | 265 | * If the caller chooses not to specify a hostname, whip |
270 | * up a string representation of the passed-in address. | 266 | * up a string representation of the passed-in address. |
diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c index 995c3fdc16c2..79a55d56cc98 100644 --- a/net/sunrpc/xdr.c +++ b/net/sunrpc/xdr.c | |||
@@ -244,7 +244,7 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len) | |||
244 | pgto = pages + (pgbase >> PAGE_CACHE_SHIFT); | 244 | pgto = pages + (pgbase >> PAGE_CACHE_SHIFT); |
245 | pgbase &= ~PAGE_CACHE_MASK; | 245 | pgbase &= ~PAGE_CACHE_MASK; |
246 | 246 | ||
247 | do { | 247 | for (;;) { |
248 | copy = PAGE_CACHE_SIZE - pgbase; | 248 | copy = PAGE_CACHE_SIZE - pgbase; |
249 | if (copy > len) | 249 | if (copy > len) |
250 | copy = len; | 250 | copy = len; |
@@ -253,6 +253,10 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len) | |||
253 | memcpy(vto + pgbase, p, copy); | 253 | memcpy(vto + pgbase, p, copy); |
254 | kunmap_atomic(vto, KM_USER0); | 254 | kunmap_atomic(vto, KM_USER0); |
255 | 255 | ||
256 | len -= copy; | ||
257 | if (len == 0) | ||
258 | break; | ||
259 | |||
256 | pgbase += copy; | 260 | pgbase += copy; |
257 | if (pgbase == PAGE_CACHE_SIZE) { | 261 | if (pgbase == PAGE_CACHE_SIZE) { |
258 | flush_dcache_page(*pgto); | 262 | flush_dcache_page(*pgto); |
@@ -260,8 +264,7 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len) | |||
260 | pgto++; | 264 | pgto++; |
261 | } | 265 | } |
262 | p += copy; | 266 | p += copy; |
263 | 267 | } | |
264 | } while ((len -= copy) != 0); | ||
265 | flush_dcache_page(*pgto); | 268 | flush_dcache_page(*pgto); |
266 | } | 269 | } |
267 | 270 | ||
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c index 971271602dd0..c22d6b6f2db4 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | |||
@@ -322,15 +322,6 @@ next_sge: | |||
322 | ctxt->direction = DMA_FROM_DEVICE; | 322 | ctxt->direction = DMA_FROM_DEVICE; |
323 | clear_bit(RDMACTXT_F_READ_DONE, &ctxt->flags); | 323 | clear_bit(RDMACTXT_F_READ_DONE, &ctxt->flags); |
324 | clear_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); | 324 | clear_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); |
325 | if ((ch+1)->rc_discrim == 0) { | ||
326 | /* | ||
327 | * Checked in sq_cq_reap to see if we need to | ||
328 | * be enqueued | ||
329 | */ | ||
330 | set_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); | ||
331 | ctxt->next = hdr_ctxt; | ||
332 | hdr_ctxt->next = head; | ||
333 | } | ||
334 | 325 | ||
335 | /* Prepare READ WR */ | 326 | /* Prepare READ WR */ |
336 | memset(&read_wr, 0, sizeof read_wr); | 327 | memset(&read_wr, 0, sizeof read_wr); |
@@ -348,7 +339,17 @@ next_sge: | |||
348 | rdma_set_ctxt_sge(ctxt, &sge[ch_sge_ary[ch_no].start], | 339 | rdma_set_ctxt_sge(ctxt, &sge[ch_sge_ary[ch_no].start], |
349 | &sgl_offset, | 340 | &sgl_offset, |
350 | read_wr.num_sge); | 341 | read_wr.num_sge); |
351 | 342 | if (((ch+1)->rc_discrim == 0) && | |
343 | (read_wr.num_sge == ch_sge_ary[ch_no].count)) { | ||
344 | /* | ||
345 | * Mark the last RDMA_READ with a bit to | ||
346 | * indicate all RPC data has been fetched from | ||
347 | * the client and the RPC needs to be enqueued. | ||
348 | */ | ||
349 | set_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); | ||
350 | ctxt->next = hdr_ctxt; | ||
351 | hdr_ctxt->next = head; | ||
352 | } | ||
352 | /* Post the read */ | 353 | /* Post the read */ |
353 | err = svc_rdma_send(xprt, &read_wr); | 354 | err = svc_rdma_send(xprt, &read_wr); |
354 | if (err) { | 355 | if (err) { |