X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fptlrpc%2Frpc.c;h=dad8744db8e1ba5efc26157cbc3d046b5b805ebc;hb=37391a643dffc94f92e7e502f0d5f410d9a098d6;hp=1ea5145aba060e5fb72fb70ffcb9cde0c64e0440;hpb=60033bf91464a9d55735737a7933ae8a641e15ce;p=fs%2Flustre-release.git diff --git a/lustre/ptlrpc/rpc.c b/lustre/ptlrpc/rpc.c index 1ea5145..dad8744 100644 --- a/lustre/ptlrpc/rpc.c +++ b/lustre/ptlrpc/rpc.c @@ -24,7 +24,11 @@ #define DEBUG_SUBSYSTEM S_RPC #include +#include +#include +#include #include +#include extern int ptlrpc_init_portals(void); extern void ptlrpc_exit_portals(void); @@ -35,46 +39,16 @@ int connmgr_setup(struct obd_device *obddev, obd_count len, void *buf) int err; ENTRY; + MOD_INC_USE_COUNT; memset(recovd, 0, sizeof(*recovd)); - OBD_ALLOC(recovd->recovd_client, sizeof(*recovd->recovd_client)); - if (!recovd) - RETURN(-ENOMEM); - err = recovd_setup(recovd); - if (err) - GOTO(err_free, err); - - recovd->recovd_service = - ptlrpc_init_svc(128 * 1024,CONNMGR_REQUEST_PORTAL, - CONNMGR_REPLY_PORTAL, "self", connmgr_handle); - if (!recovd->recovd_service) { - CERROR("failed to start service\n"); - GOTO(err_recovd, err = -EINVAL); - } - - ptlrpc_init_client(NULL, NULL, CONNMGR_REQUEST_PORTAL, - CONNMGR_REPLY_PORTAL, recovd->recovd_client); - recovd->recovd_client->cli_name = "connmgr"; - - err = ptlrpc_start_thread(obddev, recovd->recovd_service, "lustre_connmgr"); if (err) { - CERROR("cannot start thread\n"); - GOTO(err_svc, err); + MOD_DEC_USE_COUNT; + RETURN(err); } - MOD_INC_USE_COUNT; - ptlrpc_connmgr = recovd; RETURN(0); - - err_svc: - rpc_unregister_service(recovd->recovd_service); - err_recovd: - recovd_cleanup(recovd); - err_free: - if (recovd->recovd_client) - OBD_FREE(recovd->recovd_client, sizeof(*recovd->recovd_client)); - RETURN(err); } int connmgr_cleanup(struct obd_device *dev) @@ -82,35 +56,26 @@ int connmgr_cleanup(struct obd_device *dev) struct recovd_obd *recovd = &dev->u.recovd; int err; - err = recovd_cleanup(recovd); - if (err) + err = recovd_cleanup(recovd); + if (err) LBUG(); - ptlrpc_stop_all_threads(recovd->recovd_service); - rpc_unregister_service(recovd->recovd_service); - if (!list_empty(&recovd->recovd_service->srv_reqs)) { - // XXX reply with errors and clean up - CERROR("Request list not empty!\n"); - } - - OBD_FREE(recovd->recovd_service, sizeof(*recovd->recovd_service)); - ptlrpc_cleanup_client(recovd->recovd_client); - OBD_FREE(recovd->recovd_client, sizeof(*recovd->recovd_client)); MOD_DEC_USE_COUNT; RETURN(0); } +/* should this be in llite? */ -int connmgr_iocontrol(long cmd, struct obd_conn *conn, int len, void *karg, +int connmgr_iocontrol(long cmd, struct lustre_handle *conn, int len, void *karg, void *uarg) { - struct recovd_obd *recovd = &conn->oc_dev->u.recovd; + struct obd_device *obd = class_conn2obd(conn); + struct recovd_obd *recovd = &obd->u.recovd; ENTRY; - if (cmd == OBD_RECOVD_NEWCONN) { + if (cmd == OBD_IOC_RECOVD_NEWCONN) { spin_lock(&recovd->recovd_lock); - recovd->recovd_flags |= RECOVD_UPCALL_ANSWER; - recovd->recovd_wakeup_flag = 1; + /* XXX shaver flag upcall answer */ wake_up(&recovd->recovd_waitq); spin_unlock(&recovd->recovd_lock); EXIT; @@ -123,7 +88,7 @@ int connmgr_iocontrol(long cmd, struct obd_conn *conn, int len, void *karg, static struct obd_ops recovd_obd_ops = { o_setup: connmgr_setup, o_cleanup: connmgr_cleanup, - o_iocontrol: connmgr_iocontrol, + o_iocontrol: connmgr_iocontrol, }; static int __init ptlrpc_init(void) @@ -133,24 +98,22 @@ static int __init ptlrpc_init(void) if (rc) RETURN(rc); ptlrpc_init_connection(); - obd_register_type(&recovd_obd_ops, LUSTRE_HA_NAME); + class_register_type(&recovd_obd_ops, LUSTRE_HA_NAME); return 0; } static void __exit ptlrpc_exit(void) { - obd_unregister_type(LUSTRE_HA_NAME); + class_unregister_type(LUSTRE_HA_NAME); ptlrpc_exit_portals(); ptlrpc_cleanup_connection(); } -/* connmgr.c */ -EXPORT_SYMBOL(ptlrpc_connmgr); -EXPORT_SYMBOL(connmgr_connect); -EXPORT_SYMBOL(connmgr_handle); -EXPORT_SYMBOL(recovd_cli_fail); -EXPORT_SYMBOL(recovd_cli_manage); -EXPORT_SYMBOL(recovd_cli_fixed); +/* recovd.c */ +EXPORT_SYMBOL(ptlrpc_recovd); +EXPORT_SYMBOL(recovd_conn_fail); +EXPORT_SYMBOL(recovd_conn_manage); +EXPORT_SYMBOL(recovd_conn_fixed); EXPORT_SYMBOL(recovd_setup); EXPORT_SYMBOL(recovd_cleanup); @@ -194,7 +157,7 @@ EXPORT_SYMBOL(ptlrpc_check_status); EXPORT_SYMBOL(ptlrpc_init_svc); EXPORT_SYMBOL(ptlrpc_stop_all_threads); EXPORT_SYMBOL(ptlrpc_start_thread); -EXPORT_SYMBOL(rpc_unregister_service); +EXPORT_SYMBOL(ptlrpc_unregister_service); /* pack_generic.c */ EXPORT_SYMBOL(lustre_pack_msg); @@ -202,9 +165,9 @@ EXPORT_SYMBOL(lustre_msg_size); EXPORT_SYMBOL(lustre_unpack_msg); EXPORT_SYMBOL(lustre_msg_buf); -MODULE_AUTHOR("Peter J. Braam "); +MODULE_AUTHOR("Cluster File Systems, Inc "); MODULE_DESCRIPTION("Lustre Request Processor v1.0"); -MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL"); module_init(ptlrpc_init); module_exit(ptlrpc_exit);