X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fptlbd%2Fserver.c;h=99ddeaae3d2ce01d1c526ed377d31162e81ed114;hb=4161eaece092a47b24fe2da5fcb3b19332ccd2ea;hp=34ec737fd86c36f1fde6cc216a22649792339dbd;hpb=96ec6856f91f7f9031cfce4273c714d72cfe59ae;p=fs%2Flustre-release.git diff --git a/lustre/ptlbd/server.c b/lustre/ptlbd/server.c index 34ec737..99ddeaa 100644 --- a/lustre/ptlbd/server.c +++ b/lustre/ptlbd/server.c @@ -36,9 +36,22 @@ static int ptlbd_sv_already_setup = 1; -static int ptlbd_sv_setup(struct obd_device *obddev, obd_count len, void *buf) +static int ptlbd_sv_attach(struct obd_device *obd, obd_count len, void *buf) { - struct ptlbd_obd *ptlbd = &obddev->u.ptlbd; + struct lprocfs_static_vars lvars; + + lprocfs_init_vars(ptlbd_sv, &lvars); + return lprocfs_obd_attach(obd, lvars.obd_vars); +} + +static int ptlbd_sv_detach(struct obd_device *obd) +{ + return lprocfs_obd_detach(obd); +} + +static int ptlbd_sv_setup(struct obd_device *obd, obd_count len, void *buf) +{ + struct ptlbd_obd *ptlbd = &obd->u.ptlbd; int rc; ENTRY; @@ -49,16 +62,16 @@ static int ptlbd_sv_setup(struct obd_device *obddev, obd_count len, void *buf) RETURN(PTR_ERR(ptlbd->filp)); ptlbd->ptlbd_service = - ptlrpc_init_svc(PTLBD_NEVENTS, PTLBD_NBUFS, PTLBD_BUFSIZE, - PTLBD_MAXREQSIZE, PTLBD_REQUEST_PORTAL, - PTLBD_REPLY_PORTAL, - ptlbd_handle, "ptlbd_sv", obddev); + ptlrpc_init_svc(PTLBD_NBUFS, PTLBD_BUFSIZE, PTLBD_MAXREQSIZE, + PTLBD_REQUEST_PORTAL, PTLBD_REPLY_PORTAL, 30000, + ptlbd_handle, "ptlbd_sv", + obd->obd_proc_entry); - if (ptlbd->ptlbd_service == NULL) + if (ptlbd->ptlbd_service == NULL) GOTO(out_filp, rc = -ENOMEM); - rc = ptlrpc_start_thread(obddev, ptlbd->ptlbd_service, "ptldb"); - if (rc != 0) + rc = ptlrpc_start_n_threads(obd, ptlbd->ptlbd_service, 1, "ptldb"); + if (rc != 0) GOTO(out_thread, rc); ptlbd_sv_already_setup = 1; @@ -66,21 +79,18 @@ static int ptlbd_sv_setup(struct obd_device *obddev, obd_count len, void *buf) RETURN(0); out_thread: - ptlrpc_stop_all_threads(ptlbd->ptlbd_service); ptlrpc_unregister_service(ptlbd->ptlbd_service); out_filp: filp_close(ptlbd->filp, NULL); - RETURN(rc); } -static int ptlbd_sv_cleanup(struct obd_device *obddev, int force, int failover) +static int ptlbd_sv_cleanup(struct obd_device *obd, int flags) { - struct ptlbd_obd *ptlbd = &obddev->u.ptlbd; + struct ptlbd_obd *ptlbd = &obd->u.ptlbd; ENTRY; /* XXX check for state */ - ptlrpc_stop_all_threads(ptlbd->ptlbd_service); ptlrpc_unregister_service(ptlbd->ptlbd_service); if ( ! IS_ERR(ptlbd->filp) ) @@ -90,20 +100,35 @@ static int ptlbd_sv_cleanup(struct obd_device *obddev, int force, int failover) RETURN(0); } +static int ptlbd_connect(struct lustre_handle *conn, struct obd_device *obd, + struct obd_uuid *cluuid, unsigned long connect_flags) +{ + int rc; + + rc = class_connect(conn, obd, cluuid); + RETURN(rc); +} + static struct obd_ops ptlbd_sv_obd_ops = { - o_owner: THIS_MODULE, - o_setup: ptlbd_sv_setup, - o_cleanup: ptlbd_sv_cleanup, - o_connect: class_connect, - o_disconnect: class_disconnect, + .o_owner = THIS_MODULE, + .o_attach = ptlbd_sv_attach, + .o_detach = ptlbd_sv_detach, + .o_setup = ptlbd_sv_setup, + .o_cleanup = ptlbd_sv_cleanup, + .o_connect = ptlbd_connect, + .o_disconnect = class_disconnect, }; +static struct lprocfs_vars lprocfs_obd_vars[] = { {0} }; +static struct lprocfs_vars lprocfs_module_vars[] = { {0} }; +LPROCFS_INIT_VARS(ptlbd_sv, lprocfs_module_vars, lprocfs_obd_vars) + int ptlbd_sv_init(void) { struct lprocfs_static_vars lvars; - lprocfs_init_vars(&lvars); - return class_register_type(&ptlbd_sv_obd_ops, lvars.module_vars, + lprocfs_init_vars(ptlbd_sv,&lvars); + return class_register_type(&ptlbd_sv_obd_ops, NULL, lvars.module_vars, OBD_PTLBD_SV_DEVICENAME); }