return lustre_pack_msg(0, NULL, NULL, &req->rq_replen, &req->rq_repmsg);
}
+static int mgmt_msg_check_version(struct lustre_msg *msg)
+{
+ if (lustre_msg_check_version(msg, LUSTRE_OBD_VERSION)) {
+ CERROR("bad opc %u version %08x, expecting %08x\n",
+ msg->opc, msg->version, LUSTRE_OBD_VERSION);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static int mgmt_handler(struct ptlrpc_request *req)
{
int rc;
ENTRY;
+ rc = mgmt_msg_check_version(req->rq_reqmsg);
+ if (rc) {
+ CERROR("MGMT drop mal-formed request\n");
+ RETURN(rc);
+ }
+
switch (req->rq_reqmsg->opc) {
case OBD_PING:
DEBUG_REQ(D_RPCTRACE, req, "ping");
break;
case MGMT_CONNECT:
DEBUG_REQ(D_RPCTRACE, req, "connect");
- rc = target_handle_connect(req, NULL /* no recovery handler */);
+ rc = target_handle_connect(req);
break;
case MGMT_DISCONNECT:
DEBUG_REQ(D_RPCTRACE, req, "disconnect");
RETURN(-EALREADY);
mgmt_service =
- ptlrpc_init_svc(MGMT_NBUFS, MGMT_BUFSIZE, MGMT_MAXREQSIZE,
- MGMT_REQUEST_PORTAL, MGMT_REPLY_PORTAL,
- mgmt_handler, "mgmt",
- obd->obd_proc_entry);
+ ptlrpc_init_svc(MGMT_NBUFS, MGMT_BUFSIZE, MGMT_MAXREQSIZE,
+ MGMT_REQUEST_PORTAL, MGMT_REPLY_PORTAL, 30000,
+ mgmt_handler, "mgmt", obd->obd_proc_entry);
if (!mgmt_service) {
CERROR("Failed to start mgmt service\n");
RETURN(-ENOMEM);
static int __init mgmt_init(void)
{
- int rc = class_register_type(&mgmt_obd_ops, 0, MGMT_DEVICE_NAME);
+ int rc = class_register_type(&mgmt_obd_ops, NULL,
+ 0, MGMT_DEVICE_NAME);
return rc;
}