From: liangzhen Date: Tue, 25 Mar 2008 06:07:19 +0000 (+0000) Subject: Branch HEAD X-Git-Tag: v1_7_0_51~94 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=bf671feeae05d67d314687a7dc7e14c40e5c0083;p=fs%2Flustre-release.git Branch HEAD b=15002 i=isaac Fix a race between ksocknal_terminate_conn and ksocknal_scheduler --- diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 7118a80..05b9e5c 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -1504,12 +1504,13 @@ ksocknal_terminate_conn (ksock_conn_t *conn) /* wake up the scheduler to "send" all remaining packets to /dev/null */ spin_lock_bh (&sched->kss_lock); + /* a closing conn is always ready to tx */ + conn->ksnc_tx_ready = 1; + if (!conn->ksnc_tx_scheduled && !list_empty(&conn->ksnc_tx_queue)){ list_add_tail (&conn->ksnc_tx_list, &sched->kss_tx_conns); - /* a closing conn is always ready to tx */ - conn->ksnc_tx_ready = 1; conn->ksnc_tx_scheduled = 1; /* extra ref for scheduler */ ksocknal_conn_addref(conn);