summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
492902b)
when LWP is being evicted, because it is not replayable,
the request might return ESHUTDOWN or EWOULDBLOCK, instead
of failed, which might cause application failure, fld
client will retry RPC, until the connection is being setup
again or the LWP is being closed.
Signed-off-by: wang di <di.wang@intel.com>
Change-Id: Iea0480a9ceae455834768e18545796f26f3cef0b
Reviewed-on: http://review.whamcloud.com/10285
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Johann Lombardi <johann.lombardi@intel.com>
rc = ptlrpc_queue_wait(req);
obd_put_request_slot(&exp->exp_obd->u.cli);
if (rc != 0) {
rc = ptlrpc_queue_wait(req);
obd_put_request_slot(&exp->exp_obd->u.cli);
if (rc != 0) {
- if (rc == -EWOULDBLOCK) {
- /* For no_delay req(see above), EWOULDBLOCK means the
- * connection is being evicted, but this seq lookup
- * should not return error, since it would cause
- * unecessary failure of the application, instead
- * it should retry here */
+ if (rc == -EWOULDBLOCK || rc == -ESHUTDOWN) {
+ /* For no_delay req(see above), EWOULDBLOCK and
+ * ESHUTDOWN means the connection is being evicted,
+ * but this seq lookup should not return error,
+ * since it would cause unecessary failure of the
+ * application, instead it should retry here */
ptlrpc_req_finished(req);
rc = 0;
goto again;
ptlrpc_req_finished(req);
rc = 0;
goto again;