X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Fklnds%2Fmxlnd%2Fmxlnd_cb.c;h=f2a05681c3f448eb3f08e4ff1d8cf26821135e74;hb=3315344dfa4c25006e213afbd8872b5cc5c9a02c;hp=5b67392afe99bd2a04c66954d5f577409e436188;hpb=08aa217ce49aba1ded52e0f7adb8a607035123fd;p=fs%2Flustre-release.git diff --git a/lnet/klnds/mxlnd/mxlnd_cb.c b/lnet/klnds/mxlnd/mxlnd_cb.c index 5b67392..f2a0568 100644 --- a/lnet/klnds/mxlnd/mxlnd_cb.c +++ b/lnet/klnds/mxlnd/mxlnd_cb.c @@ -345,8 +345,8 @@ mxlnd_connparams_alloc(kmx_connparams_t **cp, void *context, static inline void mxlnd_set_conn_status(kmx_conn_t *conn, int status) { - conn->mxk_status = status; - cfs_mb(); + conn->mxk_status = status; + smp_mb(); } /** @@ -545,8 +545,8 @@ mxlnd_conn_disconnect(kmx_conn_t *conn, int mx_dis, int send_bye) mxlnd_sleep(msecs_to_jiffies(20)); } - if (cfs_atomic_read(&kmxlnd_data.kmx_shutdown) != 1) { - unsigned long last_msg = 0; + if (atomic_read(&kmxlnd_data.kmx_shutdown) != 1) { + unsigned long last_msg = 0; /* notify LNET that we are giving up on this peer */ if (cfs_time_after(conn->mxk_last_rx, conn->mxk_last_tx)) @@ -614,13 +614,13 @@ mxlnd_conn_alloc_locked(kmx_conn_t **connp, kmx_peer_t *peer) memset(conn->mxk_rxs, 0, MXLND_RX_MSGS() * sizeof(kmx_ctx_t)); - conn->mxk_peer = peer; - CFS_INIT_LIST_HEAD(&conn->mxk_list); - CFS_INIT_LIST_HEAD(&conn->mxk_zombie); - cfs_atomic_set(&conn->mxk_refcount, 2); /* ref for owning peer - and one for the caller */ - if (peer->mxp_nid == kmxlnd_data.kmx_ni->ni_nid) { - u64 nic_id = 0ULL; + conn->mxk_peer = peer; + CFS_INIT_LIST_HEAD(&conn->mxk_list); + CFS_INIT_LIST_HEAD(&conn->mxk_zombie); + atomic_set(&conn->mxk_refcount, 2); /* ref for owning peer + and one for the caller */ + if (peer->mxp_nid == kmxlnd_data.kmx_ni->ni_nid) { + u64 nic_id = 0ULL; u32 ep_id = 0; /* this is localhost, set the epa and status as up */ @@ -771,18 +771,18 @@ mxlnd_deq_pending_ctx(kmx_ctx_t *ctx) void mxlnd_peer_free(kmx_peer_t *peer) { - CDEBUG(D_NET, "freeing peer 0x%p %s\n", peer, libcfs_nid2str(peer->mxp_nid)); + CDEBUG(D_NET, "freeing peer 0x%p %s\n", peer, libcfs_nid2str(peer->mxp_nid)); - LASSERT (cfs_atomic_read(&peer->mxp_refcount) == 0); + LASSERT (atomic_read(&peer->mxp_refcount) == 0); - if (!cfs_list_empty(&peer->mxp_list)) { - /* assume we are locked */ - cfs_list_del_init(&peer->mxp_list); - } + if (!cfs_list_empty(&peer->mxp_list)) { + /* assume we are locked */ + cfs_list_del_init(&peer->mxp_list); + } - MXLND_FREE(peer, sizeof (*peer)); - cfs_atomic_dec(&kmxlnd_data.kmx_npeers); - return; + MXLND_FREE(peer, sizeof (*peer)); + atomic_dec(&kmxlnd_data.kmx_npeers); + return; } static int @@ -843,12 +843,12 @@ mxlnd_ip2nic_id(u32 ip, u64 *nic_id, int tries) if (tmp_id != 0ULL) ret = 0; break; - } else if (ret == -EHOSTUNREACH && try < tries) { - /* add a little backoff */ - CDEBUG(D_NET, "sleeping for %d jiffies\n", - CFS_HZ/4); - mxlnd_sleep(CFS_HZ/4); - } + } else if (ret == -EHOSTUNREACH && try < tries) { + /* add a little backoff */ + CDEBUG(D_NET, "sleeping for %d jiffies\n", + HZ/4); + mxlnd_sleep(HZ/4); + } } } while (try++ < tries); CDEBUG(D_NET, "done trying. ret = %d\n", ret); @@ -889,10 +889,10 @@ mxlnd_peer_alloc(kmx_peer_t **peerp, lnet_nid_t nid, u32 board, u32 ep_id, u64 n memset(peer, 0, sizeof(*peer)); - CFS_INIT_LIST_HEAD(&peer->mxp_list); - peer->mxp_nid = nid; - /* peer->mxp_ni unused - may be used for multi-rail */ - cfs_atomic_set(&peer->mxp_refcount, 1); /* ref for kmx_peers list */ + CFS_INIT_LIST_HEAD(&peer->mxp_list); + peer->mxp_nid = nid; + /* peer->mxp_ni unused - may be used for multi-rail */ + atomic_set(&peer->mxp_refcount, 1); /* ref for kmx_peers list */ peer->mxp_board = board; peer->mxp_ep_id = ep_id; @@ -1008,12 +1008,12 @@ mxlnd_find_peer_by_nid(lnet_nid_t nid, int create) mxlnd_peer_decref(peer); peer = old; } else { - /* no other peer, use this one */ - cfs_list_add_tail(&peer->mxp_list, - &kmxlnd_data.kmx_peers[hash]); - cfs_atomic_inc(&kmxlnd_data.kmx_npeers); - mxlnd_peer_addref(peer); - mxlnd_conn_decref(peer->mxp_conn); /* drop ref from peer_alloc */ + /* no other peer, use this one */ + cfs_list_add_tail(&peer->mxp_list, + &kmxlnd_data.kmx_peers[hash]); + atomic_inc(&kmxlnd_data.kmx_npeers); + mxlnd_peer_addref(peer); + mxlnd_conn_decref(peer->mxp_conn); /* drop ref from peer_alloc */ } write_unlock(g_lock); @@ -1481,12 +1481,12 @@ mxlnd_get_peer_info(int index, lnet_nid_t *nidp, int *count) for (i = 0; i < MXLND_HASH_SIZE; i++) { cfs_list_for_each_entry(peer, &kmxlnd_data.kmx_peers[i], mxp_list) { - if (index-- == 0) { - *nidp = peer->mxp_nid; - *count = cfs_atomic_read(&peer->mxp_refcount); - ret = 0; - break; - } + if (index-- == 0) { + *nidp = peer->mxp_nid; + *count = atomic_read(&peer->mxp_refcount); + ret = 0; + break; + } } } read_unlock(&kmxlnd_data.kmx_global_lock); @@ -2529,9 +2529,9 @@ mxlnd_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, void mxlnd_sleep(unsigned long timeout) { - cfs_set_current_state(CFS_TASK_INTERRUPTIBLE); - cfs_schedule_timeout(timeout); - return; + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout(timeout); + return; } /** @@ -2554,11 +2554,9 @@ mxlnd_tx_queued(void *arg) spinlock_t *tx_q_lock = &kmxlnd_data.kmx_tx_queue_lock; rwlock_t *g_lock = &kmxlnd_data.kmx_global_lock; - cfs_daemonize("mxlnd_tx_queued"); - - while (!(cfs_atomic_read(&kmxlnd_data.kmx_shutdown))) { + while (!(atomic_read(&kmxlnd_data.kmx_shutdown))) { ret = down_interruptible(&kmxlnd_data.kmx_tx_queue_sem); - if (cfs_atomic_read(&kmxlnd_data.kmx_shutdown)) + if (atomic_read(&kmxlnd_data.kmx_shutdown)) break; if (ret != 0) /* Should we check for -EINTR? */ continue; @@ -2637,11 +2635,11 @@ mxlnd_tx_queued(void *arg) } } - if (found == 0) { - cfs_list_add_tail(&peer->mxp_list, - &kmxlnd_data.kmx_peers[hash]); - cfs_atomic_inc(&kmxlnd_data.kmx_npeers); - } else { + if (found == 0) { + cfs_list_add_tail(&peer->mxp_list, + &kmxlnd_data.kmx_peers[hash]); + atomic_inc(&kmxlnd_data.kmx_npeers); + } else { tx->mxc_peer = old; tx->mxc_conn = old->mxp_conn; LASSERT(old->mxp_conn != NULL); @@ -2716,9 +2714,9 @@ mxlnd_iconnect(kmx_peer_t *peer, u8 msg_type) mx_strerror(mxret), mxret, libcfs_nid2str(peer->mxp_nid)); mxlnd_conn_decref(conn); } - mx_set_request_timeout(kmxlnd_data.kmx_endpt, request, - MXLND_CONNECT_TIMEOUT/CFS_HZ*1000); - return; + mx_set_request_timeout(kmxlnd_data.kmx_endpt, request, + MXLND_CONNECT_TIMEOUT/HZ*1000); + return; } #define MXLND_STATS 0 @@ -2766,14 +2764,14 @@ mxlnd_check_sends(kmx_peer_t *peer) } #if MXLND_STATS - if (cfs_time_after(jiffies, last)) { - last = jiffies + CFS_HZ; - CDEBUG(D_NET, "status= %s credits= %d outstanding= %d ntx_msgs= %d " - "ntx_posted= %d ntx_data= %d data_posted= %d\n", - mxlnd_connstatus_to_str(conn->mxk_status), conn->mxk_credits, - conn->mxk_outstanding, conn->mxk_ntx_msgs, conn->mxk_ntx_posted, - conn->mxk_ntx_data, conn->mxk_data_posted); - } + if (cfs_time_after(jiffies, last)) { + last = jiffies + HZ; + CDEBUG(D_NET, "status= %s credits= %d outstanding= %d ntx_msgs= %d " + "ntx_posted= %d ntx_data= %d data_posted= %d\n", + mxlnd_connstatus_to_str(conn->mxk_status), conn->mxk_credits, + conn->mxk_outstanding, conn->mxk_ntx_msgs, conn->mxk_ntx_posted, + conn->mxk_ntx_data, conn->mxk_data_posted); + } #endif spin_lock(&conn->mxk_lock); @@ -3485,7 +3483,6 @@ int mxlnd_request_waitd(void *arg) { long id = (long) arg; - char name[24]; __u32 result = 0; mx_return_t mxret = MX_SUCCESS; mx_status_t status; @@ -3497,16 +3494,12 @@ mxlnd_request_waitd(void *arg) int count = 0; #endif - memset(name, 0, sizeof(name)); - snprintf(name, sizeof(name), "mxlnd_request_waitd_%02ld", id); - cfs_daemonize(name); - memset(&status, 0, sizeof(status)); CDEBUG(D_NET, "%s starting\n", name); - while (!(cfs_atomic_read(&kmxlnd_data.kmx_shutdown))) { - u8 msg_type = 0; + while (!(atomic_read(&kmxlnd_data.kmx_shutdown))) { + u8 msg_type = 0; mxret = MX_SUCCESS; result = 0; @@ -3523,8 +3516,8 @@ mxlnd_request_waitd(void *arg) mxret = mx_wait_any(kmxlnd_data.kmx_endpt, MXLND_WAIT_TIMEOUT, 0ULL, 0ULL, &status, &result); #endif - if (unlikely(cfs_atomic_read(&kmxlnd_data.kmx_shutdown))) - break; + if (unlikely(atomic_read(&kmxlnd_data.kmx_shutdown))) + break; if (result != 1) { /* nothing completed... */ @@ -3611,10 +3604,10 @@ mxlnd_check_timeouts(unsigned long now) cfs_list_for_each_entry(peer, &kmxlnd_data.kmx_peers[i], mxp_list) { - if (unlikely(cfs_atomic_read(&kmxlnd_data.kmx_shutdown))) { + if (unlikely(atomic_read(&kmxlnd_data.kmx_shutdown))) { read_unlock(g_lock); - return next; - } + return next; + } conn = peer->mxp_conn; if (conn) { @@ -3739,11 +3732,11 @@ mxlnd_passive_connect(kmx_connparams_t *cp) peer = existing_peer; mxlnd_conn_addref(peer->mxp_conn); conn = peer->mxp_conn; - } else { - cfs_list_add_tail(&peer->mxp_list, - &kmxlnd_data.kmx_peers[hash]); - cfs_atomic_inc(&kmxlnd_data.kmx_npeers); - } + } else { + cfs_list_add_tail(&peer->mxp_list, + &kmxlnd_data.kmx_peers[hash]); + atomic_inc(&kmxlnd_data.kmx_npeers); + } write_unlock(g_lock); } else { ret = mxlnd_conn_alloc(&conn, peer); /* adds 2nd ref */ @@ -3963,22 +3956,20 @@ mxlnd_free_conn_zombies(void) int mxlnd_connd(void *arg) { - long id = (long) arg; - - cfs_daemonize("mxlnd_connd"); + long id = (long) arg; - CDEBUG(D_NET, "connd starting\n"); + CDEBUG(D_NET, "connd starting\n"); - while (!(cfs_atomic_read(&kmxlnd_data.kmx_shutdown))) { - int ret = 0; - kmx_connparams_t *cp = NULL; + while (!(atomic_read(&kmxlnd_data.kmx_shutdown))) { + int ret = 0; + kmx_connparams_t *cp = NULL; spinlock_t *g_conn_lock = &kmxlnd_data.kmx_conn_lock; cfs_list_t *conn_reqs = &kmxlnd_data.kmx_conn_reqs; ret = down_interruptible(&kmxlnd_data.kmx_conn_sem); - if (cfs_atomic_read(&kmxlnd_data.kmx_shutdown)) - break; + if (atomic_read(&kmxlnd_data.kmx_shutdown)) + break; if (ret != 0) continue; @@ -4030,21 +4021,19 @@ mxlnd_connd(void *arg) int mxlnd_timeoutd(void *arg) { - int i = 0; - long id = (long) arg; - unsigned long now = 0; - unsigned long next = 0; - unsigned long delay = CFS_HZ; - kmx_peer_t *peer = NULL; - kmx_peer_t *temp = NULL; - kmx_conn_t *conn = NULL; + int i = 0; + long id = (long) arg; + unsigned long now = 0; + unsigned long next = 0; + unsigned long delay = HZ; + kmx_peer_t *peer = NULL; + kmx_peer_t *temp = NULL; + kmx_conn_t *conn = NULL; rwlock_t *g_lock = &kmxlnd_data.kmx_global_lock; - cfs_daemonize("mxlnd_timeoutd"); - CDEBUG(D_NET, "timeoutd starting\n"); - while (!(cfs_atomic_read(&kmxlnd_data.kmx_shutdown))) { + while (!(atomic_read(&kmxlnd_data.kmx_shutdown))) { now = jiffies; /* if the next timeout has not arrived, go back to sleep */ @@ -4061,7 +4050,7 @@ mxlnd_timeoutd(void *arg) * not against the removal of temp */ cfs_list_for_each_entry_safe(peer, temp, peers, mxp_list) { - if (cfs_atomic_read(&kmxlnd_data.kmx_shutdown)) + if (atomic_read(&kmxlnd_data.kmx_shutdown)) break; mxlnd_peer_addref(peer); /* add ref... */ conn = peer->mxp_conn; @@ -4074,11 +4063,11 @@ mxlnd_timeoutd(void *arg) continue; } - if ((conn->mxk_status == MXLND_CONN_READY || - conn->mxk_status == MXLND_CONN_FAIL) && - cfs_time_after(now, - conn->mxk_last_tx + - CFS_HZ)) { + if ((conn->mxk_status == MXLND_CONN_READY || + conn->mxk_status == MXLND_CONN_FAIL) && + cfs_time_after(now, + conn->mxk_last_tx + + HZ)) { write_unlock(g_lock); mxlnd_check_sends(peer); write_lock(g_lock);