int err;
ENTRY;
- MOD_INC_USE_COUNT;
memset(recovd, 0, sizeof(*recovd));
err = recovd_setup(recovd);
- if (err) {
- MOD_DEC_USE_COUNT;
- RETURN(err);
- }
-
- RETURN(0);
+ RETURN(err);
}
int connmgr_cleanup(struct obd_device *dev)
int err;
err = recovd_cleanup(recovd);
- if (err)
- LBUG();
-
- MOD_DEC_USE_COUNT;
- RETURN(0);
+ RETURN(err);
}
-int connmgr_iocontrol(unsigned int cmd, struct lustre_handle *hdl, int len, void *karg,
- void *uarg)
+int connmgr_iocontrol(unsigned int cmd, struct lustre_handle *hdl, int len,
+ void *karg, void *uarg)
{
struct ptlrpc_connection *conn = NULL;
struct obd_device *obd = class_conn2obd(hdl);
if (cmd != OBD_IOC_RECOVD_NEWCONN && cmd != OBD_IOC_RECOVD_FAILCONN)
RETURN(-EINVAL); /* XXX ENOSYS? */
-
+
/* Find the connection that's been rebuilt or has failed. */
spin_lock(&recovd->recovd_lock);
list_for_each(tmp, &recovd->recovd_troubled_items) {
list_for_each(tmp, &recovd->recovd_managed_items) {
conn = list_entry(tmp, struct ptlrpc_connection,
c_recovd_data.rd_managed_chain);
-
+
LASSERT(conn->c_recovd_data.rd_recovd == recovd);
-
+
if (!strcmp(conn->c_remote_uuid, data->ioc_inlbuf1))
break;
conn = NULL;
}
ptlrpc_readdress_connection(conn, conn->c_remote_uuid);
spin_unlock(&conn->c_lock);
-
+
conn->c_recovd_data.rd_phase = RD_PREPARED;
wake_up(&recovd->recovd_waitq);
out:
{
return lprocfs_dereg_obd(dev);
}
+
/* use obd ops to offer management infrastructure */
static struct obd_ops recovd_obd_ops = {
- o_attach: connmgr_attach,
- o_detach: conmgr_detach,
- o_setup: connmgr_setup,
- o_cleanup: connmgr_cleanup,
- o_iocontrol: connmgr_iocontrol,
- o_connect: connmgr_connect,
- o_disconnect: class_disconnect
+ o_owner: THIS_MODULE,
+ o_attach: connmgr_attach,
+ o_detach: conmgr_detach,
+ o_setup: connmgr_setup,
+ o_cleanup: connmgr_cleanup,
+ o_iocontrol: connmgr_iocontrol,
+ o_connect: connmgr_connect,
+ o_disconnect: class_disconnect
};
static int __init ptlrpc_init(void)
{
- int rc;
+ int rc;
rc = ptlrpc_init_portals();
- if (rc)
+ if (rc)
RETURN(rc);
ptlrpc_init_connection();
rc = class_register_type(&recovd_obd_ops, status_class_var,
LUSTRE_HA_NAME);
- if (rc)
+ if (rc)
RETURN(rc);
ptlrpc_put_connection_superhack = ptlrpc_put_connection;
return 0;