{
struct connection *con;
- hlist_for_each_entry_rcu(con, &connection_hash[r], list) {
+ hlist_for_each_entry_srcu(con, &connection_hash[r], list,
+ srcu_read_lock_held(&connections_srcu)) {
if (con->nodeid == nodeid)
return con;
}
idx = srcu_read_lock(&connections_srcu);
for (i = 0; i < CONN_HASH_SIZE; i++) {
- hlist_for_each_entry_rcu(con, &connection_hash[i], list) {
+ hlist_for_each_entry_srcu(con, &connection_hash[i], list,
+ srcu_read_lock_held(&connections_srcu)) {
WARN_ON_ONCE(!con->addr_count);
spin_lock(&con->addrs_lock);
idx = srcu_read_lock(&connections_srcu);
for (i = 0; i < CONN_HASH_SIZE; i++) {
- hlist_for_each_entry_rcu(con, &connection_hash[i], list) {
+ hlist_for_each_entry_srcu(con, &connection_hash[i], list,
+ srcu_read_lock_held(&connections_srcu)) {
shutdown_connection(con, true);
stop_connection_io(con);
flush_workqueue(process_workqueue);
idx = srcu_read_lock(&connections_srcu);
for (i = 0; i < CONN_HASH_SIZE; i++) {
- hlist_for_each_entry_rcu(con, &connection_hash[i], list) {
+ hlist_for_each_entry_srcu(con, &connection_hash[i], list,
+ srcu_read_lock_held(&connections_srcu)) {
spin_lock(&connections_lock);
hlist_del_rcu(&con->list);
spin_unlock(&connections_lock);
{
struct midcomms_node *node;
- hlist_for_each_entry_rcu(node, &node_hash[r], hlist) {
+ hlist_for_each_entry_srcu(node, &node_hash[r], hlist,
+ srcu_read_lock_held(&nodes_srcu)) {
if (node->nodeid == nodeid)
return node;
}
idx = srcu_read_lock(&nodes_srcu);
for (i = 0; i < CONN_HASH_SIZE; i++) {
- hlist_for_each_entry_rcu(node, &node_hash[i], hlist) {
+ hlist_for_each_entry_srcu(node, &node_hash[i], hlist,
+ srcu_read_lock_held(&nodes_srcu)) {
dlm_delete_debug_comms_file(node->debugfs);
spin_lock(&nodes_lock);
idx = srcu_read_lock(&nodes_srcu);
for (i = 0; i < CONN_HASH_SIZE; i++) {
- hlist_for_each_entry_rcu(node, &node_hash[i], hlist) {
+ hlist_for_each_entry_srcu(node, &node_hash[i], hlist,
+ srcu_read_lock_held(&nodes_srcu)) {
ret = wait_event_timeout(node->shutdown_wait,
node->version != DLM_VERSION_NOT_SET ||
node->state == DLM_CLOSED ||
mutex_lock(&close_lock);
idx = srcu_read_lock(&nodes_srcu);
for (i = 0; i < CONN_HASH_SIZE; i++) {
- hlist_for_each_entry_rcu(node, &node_hash[i], hlist) {
+ hlist_for_each_entry_srcu(node, &node_hash[i], hlist,
+ srcu_read_lock_held(&nodes_srcu)) {
midcomms_shutdown(node);
}
}
dlm_lowcomms_shutdown();
for (i = 0; i < CONN_HASH_SIZE; i++) {
- hlist_for_each_entry_rcu(node, &node_hash[i], hlist) {
+ hlist_for_each_entry_srcu(node, &node_hash[i], hlist,
+ srcu_read_lock_held(&nodes_srcu)) {
midcomms_node_reset(node);
}
}