@@ -366,7 +366,7 @@ rpcrdma_encode_read_list(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
366
366
seg = r_xprt -> rx_ia .ri_ops -> ro_map (r_xprt , seg , nsegs ,
367
367
false, & mr );
368
368
if (IS_ERR (seg ))
369
- goto out_maperr ;
369
+ return PTR_ERR ( seg ) ;
370
370
rpcrdma_mr_push (mr , & req -> rl_registered );
371
371
372
372
if (encode_read_segment (xdr , mr , pos ) < 0 )
@@ -378,11 +378,6 @@ rpcrdma_encode_read_list(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
378
378
} while (nsegs );
379
379
380
380
return 0 ;
381
-
382
- out_maperr :
383
- if (PTR_ERR (seg ) == - EAGAIN )
384
- xprt_wait_for_buffer_space (rqst -> rq_task , NULL );
385
- return PTR_ERR (seg );
386
381
}
387
382
388
383
/* Register and XDR encode the Write list. Supports encoding a list
@@ -429,7 +424,7 @@ rpcrdma_encode_write_list(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
429
424
seg = r_xprt -> rx_ia .ri_ops -> ro_map (r_xprt , seg , nsegs ,
430
425
true, & mr );
431
426
if (IS_ERR (seg ))
432
- goto out_maperr ;
427
+ return PTR_ERR ( seg ) ;
433
428
rpcrdma_mr_push (mr , & req -> rl_registered );
434
429
435
430
if (encode_rdma_segment (xdr , mr ) < 0 )
@@ -446,11 +441,6 @@ rpcrdma_encode_write_list(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
446
441
* segcount = cpu_to_be32 (nchunks );
447
442
448
443
return 0 ;
449
-
450
- out_maperr :
451
- if (PTR_ERR (seg ) == - EAGAIN )
452
- xprt_wait_for_buffer_space (rqst -> rq_task , NULL );
453
- return PTR_ERR (seg );
454
444
}
455
445
456
446
/* Register and XDR encode the Reply chunk. Supports encoding an array
@@ -492,7 +482,7 @@ rpcrdma_encode_reply_chunk(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
492
482
seg = r_xprt -> rx_ia .ri_ops -> ro_map (r_xprt , seg , nsegs ,
493
483
true, & mr );
494
484
if (IS_ERR (seg ))
495
- goto out_maperr ;
485
+ return PTR_ERR ( seg ) ;
496
486
rpcrdma_mr_push (mr , & req -> rl_registered );
497
487
498
488
if (encode_rdma_segment (xdr , mr ) < 0 )
@@ -509,11 +499,6 @@ rpcrdma_encode_reply_chunk(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
509
499
* segcount = cpu_to_be32 (nchunks );
510
500
511
501
return 0 ;
512
-
513
- out_maperr :
514
- if (PTR_ERR (seg ) == - EAGAIN )
515
- xprt_wait_for_buffer_space (rqst -> rq_task , NULL );
516
- return PTR_ERR (seg );
517
502
}
518
503
519
504
/**
@@ -884,7 +869,15 @@ rpcrdma_marshal_req(struct rpcrdma_xprt *r_xprt, struct rpc_rqst *rqst)
884
869
return 0 ;
885
870
886
871
out_err :
887
- r_xprt -> rx_stats .failed_marshal_count ++ ;
872
+ switch (ret ) {
873
+ case - EAGAIN :
874
+ xprt_wait_for_buffer_space (rqst -> rq_task , NULL );
875
+ break ;
876
+ case - ENOBUFS :
877
+ break ;
878
+ default :
879
+ r_xprt -> rx_stats .failed_marshal_count ++ ;
880
+ }
888
881
return ret ;
889
882
}
890
883
0 commit comments