- /* FIXME: this should be a slab once we can validate slab addresses
- * without OOPSing */
- OBD_ALLOC(c, sizeof(*c));
- if (c == NULL)
- GOTO(out, c);
-
- c->c_level = LUSTRE_CONN_NEW;
- c->c_xid_in = 1;
- c->c_xid_out = 1;
- c->c_generation = 1;
- c->c_epoch = 1;
- c->c_bootcount = 0;
- c->c_flags = 0;
- if (uuid)
- strcpy(c->c_remote_uuid, uuid);
- INIT_LIST_HEAD(&c->c_delayed_head);
- INIT_LIST_HEAD(&c->c_sending_head);
- INIT_LIST_HEAD(&c->c_dying_head);
- INIT_LIST_HEAD(&c->c_imports);
- INIT_LIST_HEAD(&c->c_exports);
- INIT_LIST_HEAD(&c->c_sb_chain);
- INIT_LIST_HEAD(&c->c_recovd_data.rd_managed_chain);
- atomic_set(&c->c_refcount, 0);
- ptlrpc_connection_addref(c);
- spin_lock_init(&c->c_lock);
-
- memcpy(&c->c_peer, peer, sizeof(c->c_peer));
- list_add(&c->c_link, &conn_list);
+int ptlrpc_connection_init(void)
+{
+ ENTRY;
+
+ conn_hash = lustre_hash_init("CONN_HASH",
+ HASH_CONN_CUR_BITS,
+ HASH_CONN_MAX_BITS,
+ &conn_hash_ops, LH_REHASH);
+ if (!conn_hash)
+ RETURN(-ENOMEM);