X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fptlbd%2Fclient.c;h=c44f9552c3a314e7f7a231b1207e1f75fe7f7cb5;hb=e52a140eb7f65a63f07dbb7e2aaff7f9e22974f2;hp=2ccf00ea56ec0e850c6ffd3462ae1cea17803353;hpb=7a7e17d4db28fac1ca4bc333d60cbeb8dbc530d6;p=fs%2Flustre-release.git diff --git a/lustre/ptlbd/client.c b/lustre/ptlbd/client.c index 2ccf00e..c44f955 100644 --- a/lustre/ptlbd/client.c +++ b/lustre/ptlbd/client.c @@ -32,28 +32,40 @@ #include #include +static int ptlbd_cl_attach(struct obd_device *obd, obd_count len, void *buf) +{ + struct lprocfs_static_vars lvars; + + lprocfs_init_vars(ptlbd_cl, &lvars); + return lprocfs_obd_attach(obd, lvars.obd_vars); +} + +static int ptlbd_cl_detach(struct obd_device *obd) +{ + return lprocfs_obd_detach(obd); +} + static int ptlbd_cl_setup(struct obd_device *obd, obd_count len, void *buf) { struct ptlbd_obd *ptlbd = &obd->u.ptlbd; - struct lprocfs_static_vars lvars; - struct obd_import *imp; struct lustre_cfg* lcfg = buf; + struct obd_import *imp; ENTRY; if (ptlbd->bd_import != NULL) RETURN(-EALREADY); - if (lcfg->lcfg_inllen1 < 1) { + if (LUSTRE_CFG_BUFLEN(lcfg, 1) < 1) { CERROR("requires a PTLBD server UUID\n"); RETURN(-EINVAL); } - if (lcfg->lcfg_inllen1 > 37) { + if (LUSTRE_CFG_BUFLEN(lcfg, 1) > 37) { CERROR("PTLBD server UUID must be less than 38 characters\n"); RETURN(-EINVAL); } - obd_str2uuid(&ptlbd->bd_server_uuid, lcfg->lcfg_inlbuf1); + obd_str2uuid(&ptlbd->bd_server_uuid, lustre_cfg_string(lcfg, 1)); /* * from client_obd_connect.. *shrug* @@ -71,13 +83,10 @@ static int ptlbd_cl_setup(struct obd_device *obd, obd_count len, void *buf) "ptlbd", &ptlbd->bd_client); imp->imp_client = &ptlbd->bd_client; imp->imp_obd = obd; - memcpy(imp->imp_target_uuid.uuid, lcfg->lcfg_inlbuf1, - lcfg->lcfg_inllen1); + memcpy(imp->imp_target_uuid.uuid, lustre_cfg_string(lcfg, 1), + LUSTRE_CFG_BUFLEN(lcfg, 1)); ptlbd_blk_register(ptlbd); - lprocfs_init_vars(ptlbd_cl, &lvars); - lprocfs_obd_setup(obd, lvars.obd_vars); - RETURN(0); } @@ -93,8 +102,6 @@ static int ptlbd_cl_cleanup(struct obd_device *obd, int flags) if (!imp->imp_connection) RETURN(-ENOENT); - lprocfs_obd_cleanup(obd); - ptlrpc_cleanup_client(imp); ptlrpc_put_connection(imp->imp_connection); @@ -104,10 +111,9 @@ static int ptlbd_cl_cleanup(struct obd_device *obd, int flags) RETURN(0); } - /* modelled after ptlrpc_import_connect() */ int ptlbd_cl_connect(struct lustre_handle *conn, struct obd_device *obd, - struct obd_uuid *target_uuid) + struct obd_uuid *target_uuid, unsigned long connect_flags) { struct ptlbd_obd *ptlbd = &obd->u.ptlbd; struct obd_import *imp = ptlbd->bd_import; @@ -129,9 +135,11 @@ int ptlbd_cl_connect(struct lustre_handle *conn, struct obd_device *obd, RETURN(rc); exp = class_conn2export(conn); - request = ptlrpc_prep_req(imp, PTLBD_CONNECT, 3, size, tmp); + request = ptlrpc_prep_req(imp, LUSTRE_PBD_VERSION, PTLBD_CONNECT, + 3, size, tmp); if (!request) GOTO(out_disco, rc = -ENOMEM); + request->rq_send_state = LUSTRE_IMP_NEW; request->rq_replen = lustre_msg_size(0, NULL); @@ -158,7 +166,7 @@ out_disco: /* modelled after ptlrpc_import_disconnect() */ -int ptlbd_cl_disconnect(struct obd_export *exp, int failover) +int ptlbd_cl_disconnect(struct obd_export *exp, unsigned long flags) { struct obd_device *obd = exp->exp_obd; struct ptlbd_obd *ptlbd = &obd->u.ptlbd; @@ -170,7 +178,9 @@ int ptlbd_cl_disconnect(struct obd_export *exp, int failover) if (!obd) RETURN(-EINVAL); - request = ptlrpc_prep_req(imp, PTLBD_DISCONNECT, 0, NULL, NULL); + request = ptlrpc_prep_req(imp, LUSTRE_PBD_VERSION, + PTLBD_DISCONNECT, + 0, NULL, NULL); if (!request) GOTO(out_req, rc = -ENOMEM); @@ -191,11 +201,13 @@ out_req: static struct obd_ops ptlbd_cl_obd_ops = { - o_owner: THIS_MODULE, - o_setup: ptlbd_cl_setup, - o_cleanup: ptlbd_cl_cleanup, - o_connect: ptlbd_cl_connect, - o_disconnect: ptlbd_cl_disconnect, + .o_owner = THIS_MODULE, + .o_attach = ptlbd_cl_attach, + .o_detach = ptlbd_cl_detach, + .o_setup = ptlbd_cl_setup, + .o_cleanup = ptlbd_cl_cleanup, + .o_connect = ptlbd_cl_connect, + .o_disconnect = ptlbd_cl_disconnect, }; static struct lprocfs_vars lprocfs_obd_vars[] = { {0} }; @@ -207,7 +219,7 @@ int ptlbd_cl_init(void) struct lprocfs_static_vars lvars; lprocfs_init_vars(ptlbd_cl,&lvars); - return class_register_type(&ptlbd_cl_obd_ops, lvars.module_vars, + return class_register_type(&ptlbd_cl_obd_ops, NULL, lvars.module_vars, OBD_PTLBD_CL_DEVICENAME); } @@ -216,8 +228,6 @@ void ptlbd_cl_exit(void) class_unregister_type(OBD_PTLBD_CL_DEVICENAME); } - - int ptlbd_do_connect(struct ptlbd_obd *ptlbd) { int rc; @@ -226,7 +236,7 @@ int ptlbd_do_connect(struct ptlbd_obd *ptlbd) ENTRY; memset(&conn, 0, sizeof(conn)); - rc = obd_connect(&conn, obd, &ptlbd->bd_server_uuid); + rc = obd_connect(&conn, obd, &ptlbd->bd_server_uuid, NULL, 0); if (rc < 0) RETURN(rc); ptlbd->bd_exp = class_conn2export(&conn);