-/*
- * Init client sequence manager which is used by local MDS to talk to sequence
- * controller on remote node.
- */
-static int lod_seq_init_cli(const struct lu_env *env,
- struct lod_device *lod,
- char *tgtuuid, int index)
-{
- struct seq_server_site *ss;
- struct obd_device *osp;
- int rc;
- char *prefix;
- struct obd_uuid obd_uuid;
- ENTRY;
-
- ss = lu_site2seq(lod2lu_dev(lod)->ld_site);
- LASSERT(ss != NULL);
-
- /* check if this is adding the first MDC and controller is not yet
- * initialized. */
- if (index != 0 || ss->ss_client_seq)
- RETURN(0);
-
- obd_str2uuid(&obd_uuid, tgtuuid);
- osp = class_find_client_obd(&obd_uuid, LUSTRE_OSP_NAME,
- &lod->lod_dt_dev.dd_lu_dev.ld_obd->obd_uuid);
- if (osp == NULL) {
- CERROR("%s: can't find %s device\n",
- lod->lod_dt_dev.dd_lu_dev.ld_obd->obd_name,
- tgtuuid);
- RETURN(-EINVAL);
- }
-
- if (!osp->obd_set_up) {
- CERROR("target %s not set up\n", osp->obd_name);
- rc = -EINVAL;
- }
-
- LASSERT(ss->ss_control_exp);
- OBD_ALLOC_PTR(ss->ss_client_seq);
- if (ss->ss_client_seq == NULL)
- RETURN(-ENOMEM);
-
- OBD_ALLOC(prefix, MAX_OBD_NAME + 5);
- if (!prefix) {
- OBD_FREE_PTR(ss->ss_client_seq);
- ss->ss_client_seq = NULL;
- RETURN(-ENOMEM);
- }
-
- snprintf(prefix, MAX_OBD_NAME + 5, "ctl-%s", osp->obd_name);
- rc = seq_client_init(ss->ss_client_seq, ss->ss_control_exp,
- LUSTRE_SEQ_METADATA, prefix, NULL);
- OBD_FREE(prefix, MAX_OBD_NAME + 5);
- if (rc) {
- OBD_FREE_PTR(ss->ss_client_seq);
- ss->ss_client_seq = NULL;
- RETURN(rc);
- }
-
- LASSERT(ss->ss_server_seq != NULL);
- rc = seq_server_set_cli(ss->ss_server_seq, ss->ss_client_seq,
- env);
-
- RETURN(rc);
-}
-
-static void lod_seq_fini_cli(struct lod_device *lod)
-{
- struct seq_server_site *ss;
-
- ENTRY;
-
- ss = lu_site2seq(lod2lu_dev(lod)->ld_site);
- if (ss == NULL) {
- EXIT;
- return;
- }
-
- if (ss->ss_server_seq)
- seq_server_set_cli(ss->ss_server_seq,
- NULL, NULL);
-
- if (ss->ss_control_exp) {
- class_export_put(ss->ss_control_exp);
- ss->ss_control_exp = NULL;
- }
-
- EXIT;
- return;
-}
-