}
}
+static inline int mdc_queue_wait(struct ptlrpc_request *req)
+{
+ struct client_obd *cli = &req->rq_import->imp_obd->u.cli;
+ int rc;
+
+ /* mdc_enter_request() ensures that this client has no more
+ * than cl_max_rpcs_in_flight RPCs simultaneously inf light
+ * against an MDT. */
+ rc = mdc_enter_request(cli);
+ if (rc != 0)
+ return rc;
+
+ rc = ptlrpc_queue_wait(req);
+ mdc_exit_request(cli);
+
+ return rc;
+}
+
/* Helper that implements most of mdc_getstatus and signal_completed_replay. */
/* XXX this should become mdc_get_info("key"), sending MDS_GET_INFO RPC */
static int send_getstatus(struct obd_import *imp, struct lu_fid *rootfid,
ptlrpc_request_set_replen(req);
- rc = ptlrpc_queue_wait(req);
+ rc = mdc_queue_wait(req);
GOTO(out, rc);
out:
ptlrpc_req_finished(req);
ptlrpc_request_set_replen(req);
- rc = ptlrpc_queue_wait(req);
+ rc = mdc_queue_wait(req);
GOTO(out, rc);
out:
ptlrpc_req_finished(req);
ptlrpc_request_set_replen(req);
- rc = ptlrpc_queue_wait(req);
+ rc = mdc_queue_wait(req);
if (rc)
GOTO(out, rc);
ptlrpc_request_set_replen(req);
- rc = ptlrpc_queue_wait(req);
+ rc = mdc_queue_wait(req);
GOTO(out, rc);
out:
ptlrpc_req_finished(req);
ptlrpc_request_set_replen(req);
- rc = ptlrpc_queue_wait(req);
+ rc = mdc_queue_wait(req);
if (rc)
GOTO(out, rc);
ptlrpc_request_set_replen(req);
- rc = ptlrpc_queue_wait(req);
+ rc = mdc_queue_wait(req);
GOTO(out, rc);
EXIT;
ptlrpc_request_set_replen(req);
- rc = ptlrpc_queue_wait(req);
+ rc = mdc_queue_wait(req);
GOTO(out, rc);
out: