- switch (opc) {
- case MGS_CONNECT:
- DEBUG_REQ(D_MGS, req, "connect");
- /* MGS and MDS have same request format for connect */
- req_capsule_set(&req->rq_pill, &RQF_MDS_CONNECT);
- rc = target_handle_connect(req);
- if (rc == 0)
- rc = mgs_connect_check_sptlrpc(req);
-
- if (!rc && (lustre_msg_get_conn_cnt(req->rq_reqmsg) > 1))
- /* Make clients trying to reconnect after a MGS restart
- happy; also requires obd_replayable */
- lustre_msg_add_op_flags(req->rq_repmsg,
- MSG_CONNECT_RECONNECT);
- break;
- case MGS_DISCONNECT:
- DEBUG_REQ(D_MGS, req, "disconnect");
- /* MGS and MDS have same request format for disconnect */
- req_capsule_set(&req->rq_pill, &RQF_MDS_DISCONNECT);
- rc = target_handle_disconnect(req);
- req->rq_status = rc; /* superfluous? */
- break;
- case MGS_EXCEPTION:
- DEBUG_REQ(D_MGS, req, "exception");
- rc = mgs_handle_exception(req);
- break;
- case MGS_TARGET_REG:
- DEBUG_REQ(D_MGS, req, "target add");
- req_capsule_set(&req->rq_pill, &RQF_MGS_TARGET_REG);
- rc = mgs_handle_target_reg(req);
- break;
- case MGS_TARGET_DEL:
- DEBUG_REQ(D_MGS, req, "target del");
- rc = mgs_handle_target_del(req);
- break;
- case MGS_SET_INFO:
- DEBUG_REQ(D_MGS, req, "set_info");
- req_capsule_set(&req->rq_pill, &RQF_MGS_SET_INFO);
- rc = mgs_set_info_rpc(req);
- break;
- case MGS_CONFIG_READ:
- DEBUG_REQ(D_MGS, req, "read config");
- req_capsule_set(&req->rq_pill, &RQF_MGS_CONFIG_READ);
- rc = mgs_config_read(req);
- break;
- case LDLM_ENQUEUE:
- DEBUG_REQ(D_MGS, req, "enqueue");
- req_capsule_set(&req->rq_pill, &RQF_LDLM_ENQUEUE);
- rc = ldlm_handle_enqueue(req, ldlm_server_completion_ast,
- ldlm_server_blocking_ast, NULL);
- break;
- case LDLM_BL_CALLBACK:
- case LDLM_CP_CALLBACK:
- DEBUG_REQ(D_MGS, req, "callback");
- CERROR("callbacks should not happen on MGS\n");
- LBUG();
- break;
-
- case OBD_PING:
- DEBUG_REQ(D_INFO, req, "ping");
- req_capsule_set(&req->rq_pill, &RQF_OBD_PING);
- rc = target_handle_ping(req);
- break;
- case OBD_LOG_CANCEL:
- DEBUG_REQ(D_MGS, req, "log cancel");
- rc = -ENOTSUPP; /* la la la */
- break;
-
- case LLOG_ORIGIN_HANDLE_CREATE:
- DEBUG_REQ(D_MGS, req, "llog_open");
- req_capsule_set(&req->rq_pill, &RQF_LLOG_ORIGIN_HANDLE_CREATE);
- rc = llog_origin_handle_open(req);
- if (rc == 0)
- (void)mgs_handle_fslog_hack(req);
- break;
- case LLOG_ORIGIN_HANDLE_NEXT_BLOCK:
- DEBUG_REQ(D_MGS, req, "llog next block");
- req_capsule_set(&req->rq_pill,
- &RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK);
- rc = llog_origin_handle_next_block(req);
- break;
- case LLOG_ORIGIN_HANDLE_PREV_BLOCK:
- DEBUG_REQ(D_MGS, req, "llog prev block");
- req_capsule_set(&req->rq_pill,
- &RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK);
- rc = llog_origin_handle_prev_block(req);
- break;
- case LLOG_ORIGIN_HANDLE_READ_HEADER:
- DEBUG_REQ(D_MGS, req, "llog read header");
- req_capsule_set(&req->rq_pill,
- &RQF_LLOG_ORIGIN_HANDLE_READ_HEADER);
- rc = llog_origin_handle_read_header(req);
- break;
- case LLOG_ORIGIN_HANDLE_CLOSE:
- DEBUG_REQ(D_MGS, req, "llog close");
- rc = llog_origin_handle_close(req);
- break;
- default:
- rc = -EOPNOTSUPP;
- }