rcu_read_lock();
if (!hlist_unhashed(&conn->c_hash_node)) {
rcu_read_unlock();
- if (conn->c_laddr >= conn->c_faddr)
- rds_queue_reconnect(conn);
+ rds_queue_reconnect(conn);
} else {
rcu_read_unlock();
}
rdsdebug("%lu delay %lu ceil conn %p for %pI4 -> %pI4\n",
rand % conn->c_reconnect_jiffies, conn->c_reconnect_jiffies,
conn, &conn->c_laddr, &conn->c_faddr);
- queue_delayed_work(rds_wq, &conn->c_conn_w,
+ if (conn->c_laddr >= conn->c_faddr)
+ queue_delayed_work(rds_wq, &conn->c_conn_w,
rand % conn->c_reconnect_jiffies);
+ else
+ queue_delayed_work(rds_wq, &conn->c_conn_w,
+ msecs_to_jiffies(100));
conn->c_reconnect_jiffies = min(conn->c_reconnect_jiffies * 2,
rds_sysctl_reconnect_max_jiffies);