void rds_conn_connect_if_down(struct rds_connection *conn)
{
if (rds_conn_state(conn) == RDS_CONN_DOWN &&
- !test_and_set_bit(RDS_RECONNECT_PENDING, &conn->c_flags))
- queue_delayed_work(rds_wq, &conn->c_conn_w, 0);
+ !test_and_set_bit(RDS_RECONNECT_PENDING, &conn->c_flags)) {
+ if (conn->c_loopback)
+ queue_delayed_work(rds_local_wq, &conn->c_conn_w, 0);
+ else
+ queue_delayed_work(rds_wq, &conn->c_conn_w, 0);
+ }
}
EXPORT_SYMBOL_GPL(rds_conn_connect_if_down);
__func__,
atomic_read(&conn->c_state));
atomic_set(&conn->c_state, RDS_CONN_ERROR);
- queue_work(rds_wq, &conn->c_down_w);
+ if (conn->c_loopback)
+ queue_work(rds_local_wq, &conn->c_down_w);
+ else
+ queue_work(rds_wq, &conn->c_down_w);
return;
}