X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Finclude%2Flnet%2Flib-lnet.h;h=f195303f3fbdfaa670391c6df9f945130ef98658;hp=47bae483c8465e4a3eb8d8205b62b66747f78726;hb=1abd574b8203676951f676e979c14605752dd0b1;hpb=d77e95cc6d4e947be60757a861c656d8b30d2972 diff --git a/lnet/include/lnet/lib-lnet.h b/lnet/include/lnet/lib-lnet.h index 47bae48..f195303 100644 --- a/lnet/include/lnet/lib-lnet.h +++ b/lnet/include/lnet/lib-lnet.h @@ -78,6 +78,9 @@ extern struct lnet the_lnet; /* THE network */ #define DEFAULT_PEER_CREDITS 8 #define DEFAULT_CREDITS 256 +/* default number of connections per peer */ +#define DEFAULT_CONNS_PER_PEER 0 + #ifdef HAVE_KERN_SOCK_GETNAME_2ARGS #define lnet_kernel_getpeername(sock, addr, addrlen) \ kernel_getpeername(sock, addr) @@ -223,7 +226,7 @@ __must_hold(&ni->ni_lock) if (ni->ni_status && ni->ni_status->ns_status != status) { CDEBUG(D_NET, "ni %s status changed from %#x to %#x\n", - libcfs_nid2str(ni->ni_nid), + libcfs_nidstr(&ni->ni_nid), ni->ni_status->ns_status, status); ni->ni_status->ns_status = status; update = true; @@ -236,7 +239,7 @@ static inline unsigned int lnet_ni_get_status_locked(struct lnet_ni *ni) __must_hold(&ni->ni_lock) { - if (ni->ni_nid == LNET_NID_LO_0) + if (nid_is_lo0(&ni->ni_nid)) return LNET_NI_STATUS_UP; else if (atomic_read(&ni->ni_fatal_error_on)) return LNET_NI_STATUS_DOWN; @@ -261,7 +264,7 @@ lnet_ni_set_status(struct lnet_ni *ni, __u32 status) static inline void lnet_md_wait_handling(struct lnet_libmd *md, int cpt) { wait_queue_head_t *wq = __var_waitqueue(md); -#ifdef HAVE_WAIT_QUEUE_ENTRY +#if defined(HAVE_WAIT_BIT_QUEUE_ENTRY) || !defined(HAVE_WAIT_VAR_EVENT) struct wait_bit_queue_entry entry; wait_queue_entry_t *wqe = &entry.wq_entry; #else @@ -496,9 +499,14 @@ lnet_ni_alloc_w_cpt_array(struct lnet_net *net, __u32 *cpts, __u32 ncpts, char *iface); static inline int -lnet_nid2peerhash(lnet_nid_t nid) +lnet_nid2peerhash(struct lnet_nid *nid) { - return hash_long(nid, LNET_PEER_HASH_BITS); + u32 h = 0; + int i; + + for (i = 0; i < 4; i++) + h = hash_32(nid->nid_addr[i]^h, 32); + return hash_32(LNET_NID_NET(nid) ^ h, LNET_PEER_HASH_BITS); } static inline struct list_head * @@ -512,13 +520,17 @@ lnet_net2rnethash(__u32 net) extern const struct lnet_lnd the_lolnd; extern int avoid_asym_router_failure; -extern unsigned int lnet_nid_cpt_hash(lnet_nid_t nid, unsigned int number); -extern int lnet_cpt_of_nid_locked(lnet_nid_t nid, struct lnet_ni *ni); +extern unsigned int lnet_nid_cpt_hash(struct lnet_nid *nid, + unsigned int number); +extern int lnet_cpt_of_nid_locked(struct lnet_nid *nid, struct lnet_ni *ni); extern int lnet_cpt_of_nid(lnet_nid_t nid, struct lnet_ni *ni); +extern int lnet_nid2cpt(struct lnet_nid *nid, struct lnet_ni *ni); extern struct lnet_ni *lnet_nid2ni_locked(lnet_nid_t nid, int cpt); +extern struct lnet_ni *lnet_nid_to_ni_locked(struct lnet_nid *nid, int cpt); extern struct lnet_ni *lnet_nid2ni_addref(lnet_nid_t nid); extern struct lnet_ni *lnet_net2ni_locked(__u32 net, int cpt); extern struct lnet_ni *lnet_net2ni_addref(__u32 net); +extern struct lnet_ni *lnet_nid_to_ni_addref(struct lnet_nid *nid); struct lnet_net *lnet_get_net_locked(__u32 net_id); int lnet_lib_init(void); @@ -546,7 +558,7 @@ int lnet_notify(struct lnet_ni *ni, lnet_nid_t peer, bool alive, bool reset, time64_t when); void lnet_notify_locked(struct lnet_peer_ni *lp, int notifylnd, int alive, time64_t when); -int lnet_add_route(__u32 net, __u32 hops, lnet_nid_t gateway_nid, +int lnet_add_route(__u32 net, __u32 hops, struct lnet_nid *gateway, __u32 priority, __u32 sensitivity); int lnet_del_route(__u32 net, lnet_nid_t gw_nid); void lnet_move_route(struct lnet_route *route, struct lnet_peer *lp, @@ -569,9 +581,11 @@ extern void lnet_peer_ni_set_healthv(lnet_nid_t nid, int value, bool all); extern void lnet_peer_ni_add_to_recoveryq_locked(struct lnet_peer_ni *lpni, struct list_head *queue, time64_t now); -extern int lnet_peer_add_pref_nid(struct lnet_peer_ni *lpni, lnet_nid_t nid); +extern int lnet_peer_add_pref_nid(struct lnet_peer_ni *lpni, + struct lnet_nid *nid); extern void lnet_peer_clr_pref_nids(struct lnet_peer_ni *lpni); -extern int lnet_peer_del_pref_nid(struct lnet_peer_ni *lpni, lnet_nid_t nid); +extern int lnet_peer_del_pref_nid(struct lnet_peer_ni *lpni, + struct lnet_nid *nid); void lnet_peer_ni_set_selection_priority(struct lnet_peer_ni *lpni, __u32 priority); extern void lnet_ni_add_to_recoveryq_locked(struct lnet_ni *ni, @@ -596,9 +610,10 @@ int lnet_dyn_del_ni(struct lnet_ioctl_config_ni *conf); int lnet_clear_lazy_portal(struct lnet_ni *ni, int portal, char *reason); struct lnet_net *lnet_get_net_locked(__u32 net_id); void lnet_net_clr_pref_rtrs(struct lnet_net *net); -int lnet_net_add_pref_rtr(struct lnet_net *net, lnet_nid_t gw_nid); +int lnet_net_add_pref_rtr(struct lnet_net *net, struct lnet_nid *gw_nid); -int lnet_islocalnid(lnet_nid_t nid); +int lnet_islocalnid4(lnet_nid_t nid); +int lnet_islocalnid(struct lnet_nid *nid); int lnet_islocalnet(__u32 net); int lnet_islocalnet_locked(__u32 net); @@ -656,9 +671,9 @@ lnet_ptl_unsetopt(struct lnet_portal *ptl, int opt) /* match-table functions */ struct list_head *lnet_mt_match_head(struct lnet_match_table *mtable, - struct lnet_process_id id, __u64 mbits); + struct lnet_processid *id, __u64 mbits); struct lnet_match_table *lnet_mt_of_attach(unsigned int index, - struct lnet_process_id id, + struct lnet_processid *id, __u64 mbits, __u64 ignore_bits, enum lnet_ins_pos pos); int lnet_mt_match_md(struct lnet_match_table *mtable, @@ -805,9 +820,9 @@ unsigned int lnet_get_lnd_timeout(void); void lnet_register_lnd(const struct lnet_lnd *lnd); void lnet_unregister_lnd(const struct lnet_lnd *lnd); -struct socket *lnet_connect(lnet_nid_t peer_nid, int interface, +struct socket *lnet_connect(struct lnet_nid *peer_nid, int interface, struct sockaddr *peeraddr, struct net *ns); -void lnet_connect_console_error(int rc, lnet_nid_t peer_nid, +void lnet_connect_console_error(int rc, struct lnet_nid *peer_nid, struct sockaddr *sa); int lnet_count_acceptor_nets(void); int lnet_acceptor_timeout(void); @@ -895,10 +910,16 @@ struct lnet_peer_ni *lnet_get_next_peer_ni_locked(struct lnet_peer *peer, struct lnet_peer_ni *prev); struct lnet_peer_ni *lnet_nid2peerni_locked(lnet_nid_t nid, lnet_nid_t pref, int cpt); -struct lnet_peer_ni *lnet_nid2peerni_ex(lnet_nid_t nid, int cpt); +struct lnet_peer_ni *lnet_peerni_by_nid_locked(struct lnet_nid *nid, + struct lnet_nid *pref, + int cpt); +struct lnet_peer_ni *lnet_nid2peerni_ex(struct lnet_nid *nid, int cpt); struct lnet_peer_ni *lnet_peer_get_ni_locked(struct lnet_peer *lp, lnet_nid_t nid); +struct lnet_peer_ni *lnet_peer_ni_get_locked(struct lnet_peer *lp, + struct lnet_nid *nid); struct lnet_peer_ni *lnet_find_peer_ni_locked(lnet_nid_t nid); +struct lnet_peer_ni *lnet_peer_ni_find_locked(struct lnet_nid *nid); struct lnet_peer *lnet_find_peer(lnet_nid_t nid); void lnet_peer_net_added(struct lnet_net *net); lnet_nid_t lnet_peer_primary_nid_locked(lnet_nid_t nid); @@ -913,14 +934,17 @@ int lnet_peer_tables_create(void); void lnet_debug_peer(lnet_nid_t nid); struct lnet_peer_net *lnet_peer_get_net_locked(struct lnet_peer *peer, __u32 net_id); -bool lnet_peer_is_pref_nid_locked(struct lnet_peer_ni *lpni, lnet_nid_t nid); -int lnet_peer_add_pref_nid(struct lnet_peer_ni *lpni, lnet_nid_t nid); +bool lnet_peer_is_pref_nid_locked(struct lnet_peer_ni *lpni, + struct lnet_nid *nid); +int lnet_peer_add_pref_nid(struct lnet_peer_ni *lpni, struct lnet_nid *nid); void lnet_peer_clr_pref_nids(struct lnet_peer_ni *lpni); -bool lnet_peer_is_pref_rtr_locked(struct lnet_peer_ni *lpni, lnet_nid_t gw_nid); +bool lnet_peer_is_pref_rtr_locked(struct lnet_peer_ni *lpni, + struct lnet_nid *gw_nid); void lnet_peer_clr_pref_rtrs(struct lnet_peer_ni *lpni); -int lnet_peer_add_pref_rtr(struct lnet_peer_ni *lpni, lnet_nid_t nid); -int lnet_peer_ni_set_non_mr_pref_nid(struct lnet_peer_ni *lpni, lnet_nid_t nid); -int lnet_add_peer_ni(lnet_nid_t key_nid, lnet_nid_t nid, bool mr); +int lnet_peer_add_pref_rtr(struct lnet_peer_ni *lpni, struct lnet_nid *nid); +int lnet_peer_ni_set_non_mr_pref_nid(struct lnet_peer_ni *lpni, + struct lnet_nid *nid); +int lnet_add_peer_ni(lnet_nid_t key_nid, lnet_nid_t nid, bool mr, bool temp); int lnet_del_peer_ni(lnet_nid_t key_nid, lnet_nid_t nid); int lnet_get_peer_info(struct lnet_ioctl_peer_cfg *cfg, void __user *bulk); int lnet_get_peer_ni_info(__u32 peer_index, __u64 *nid, @@ -970,7 +994,8 @@ lnet_peer_ni_is_configured(struct lnet_peer_ni *lpni) static inline bool lnet_peer_ni_is_primary(struct lnet_peer_ni *lpni) { - return lpni->lpni_nid == lpni->lpni_peer_net->lpn_peer->lp_primary_nid; + return nid_same(&lpni->lpni_nid, + &lpni->lpni_peer_net->lpn_peer->lp_primary_nid); } bool lnet_peer_is_uptodate(struct lnet_peer *lp); @@ -1144,7 +1169,7 @@ lnet_set_route_aliveness(struct lnet_route *route, bool alive) if (old != alive) CERROR("route to %s through %s has gone from %s to %s\n", libcfs_net2str(route->lr_net), - libcfs_nid2str(route->lr_gateway->lp_primary_nid), + libcfs_nidstr(&route->lr_gateway->lp_primary_nid), old ? "up" : "down", alive ? "up" : "down"); }