gmnal_data_t *global_nal_data = NULL;
#define GLOBAL_NID_STR_LEN 16
char global_nid_str[GLOBAL_NID_STR_LEN] = {0};
+ptl_handle_ni_t kgmnal_ni;
+
+extern int gmnal_cmd(struct portals_cfg *pcfg, void *private);
/*
* Write the global nid /proc/sys/gmnal/globalnid
* nal_t nal our nal to shutdown
*/
void
-gmnal_api_shutdown(nal_t *nal, int interface)
+gmnal_api_shutdown(nal_t *nal)
{
gmnal_data_t *nal_data;
lib_nal_t *libnal;
if (nal->nal_refct != 0)
return;
- CDEBUG(D_TRACE, "gmnal_api_shutdown: nal_data [%p]\n", nal_data);
LASSERT(nal == global_nal_data->nal);
libnal = (lib_nal_t *)nal->nal_data;
nal_data = (gmnal_data_t *)libnal->libnal_data;
LASSERT(nal_data == global_nal_data);
+ CDEBUG(D_TRACE, "gmnal_api_shutdown: nal_data [%p]\n", nal_data);
/* Stop portals calling our ioctl handler */
libcfs_nal_cmd_unregister(GMNAL);
if (nal->nal_refct != 0) {
if (actual_limits != NULL) {
libnal = (lib_nal_t *)nal->nal_data;
- *actual_limits = nal->libnal_ni.ni_actual_limits;
+ *actual_limits = libnal->libnal_ni.ni_actual_limits;
+ }
return (PTL_OK);
}
}
- CDEBUG(D_NET, "Calling gm_open with interface [%d], port [%d], "
- "name [%s], version [%d]\n", interface, GMNAL_GM_PORT,
+ CDEBUG(D_NET, "Calling gm_open with port [%d], "
+ "name [%s], version [%d]\n", GMNAL_GM_PORT,
"gmnal", GM_API_VERSION);
GMNAL_GM_LOCK(nal_data);
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
}
+
nal_data->gm_local_nid = local_nid;
CDEBUG(D_INFO, "Local node id is [%u]\n", local_nid);
+
GMNAL_GM_LOCK(nal_data);
gm_status = gm_node_id_to_global_id(nal_data->gm_port, local_nid,
&global_nid);
}
- if (libcfs_nal_cmd_register(GMNAL, &gmnal_cmd, nal->nal_data) != 0) {
+ if (libcfs_nal_cmd_register(GMNAL, &gmnal_cmd, libnal->libnal_data) != 0) {
CDEBUG(D_INFO, "libcfs_nal_cmd_register failed\n");
/* XXX these cleanup cases should be restructured to
rc = ptl_register_nal(GMNAL, &the_gm_nal);
if (rc != PTL_OK)
CERROR("Can't register GMNAL: %d\n", rc);
+ rc = PtlNIInit(GMNAL, LUSTRE_SRV_PTL_PID, NULL, NULL, &kgmnal_ni);
+ if (rc != PTL_OK && rc != PTL_IFACE_DUP) {
+ ptl_unregister_nal(GMNAL);
+ return (-ENODEV);
+ }
return (rc);
}
CDEBUG(D_TRACE, "gmnal_fini\n");
LASSERT(global_nal_data == NULL);
+ PtlNIFini(kgmnal_ni);
ptl_unregister_nal(GMNAL);
}