Lines Matching defs:connection
46 struct drbd_connection *connection;
54 for_each_connection(connection, resource)
79 state_change->connections[n].connection = NULL;
88 struct drbd_connection *connection;
112 for_each_connection(connection, resource) {
113 kref_get(&connection->kref);
114 connection_state_change->connection = connection;
116 connection->cstate;
118 conn_highest_peer(connection);
131 for_each_connection(connection, resource) {
134 peer_device = conn_peer_device(connection, device->vnr);
184 struct drbd_connection *connection =
185 connection_state_change->connection;
187 connection_state_change->cstate[NEW] = connection->cstate;
189 conn_highest_peer(connection);
270 struct drbd_connection *connection =
271 state_change->connections[n].connection;
273 if (connection)
274 kref_put(&connection->kref, drbd_destroy_connection);
294 bool conn_all_vols_unconf(struct drbd_connection *connection)
301 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
335 enum drbd_role conn_highest_role(struct drbd_connection *connection)
342 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
351 enum drbd_role conn_highest_peer(struct drbd_connection *connection)
358 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
367 enum drbd_disk_state conn_highest_disk(struct drbd_connection *connection)
374 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
383 enum drbd_disk_state conn_lowest_disk(struct drbd_connection *connection)
390 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
399 enum drbd_disk_state conn_highest_pdsk(struct drbd_connection *connection)
406 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
415 enum drbd_conns conn_lowest_conn(struct drbd_connection *connection)
422 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
431 static bool no_peer_wf_report_params(struct drbd_connection *connection)
438 idr_for_each_entry(&connection->peer_devices, peer_device, vnr)
448 static void wake_up_all_devices(struct drbd_connection *connection)
454 idr_for_each_entry(&connection->peer_devices, peer_device, vnr)
542 rv = is_valid_soft_transition(os, ns, first_peer_device(device)->connection);
591 rv = is_valid_soft_transition(os, ns, first_peer_device(device)->connection);
625 D_ASSERT(device, current != first_peer_device(device)->connection->worker.task);
799 static void conn_pr_state_change(struct drbd_connection *connection, union drbd_state os, union drbd_state ns,
813 drbd_info(connection, "%s\n", pb);
838 nc = rcu_dereference(first_peer_device(device)->connection->net_conf);
843 else if (conn_highest_peer(first_peer_device(device)->connection) == R_PRIMARY)
884 first_peer_device(device)->connection->agreed_pro_version < 88)
909 * @connection: DRBD connection.
912 is_valid_soft_transition(union drbd_state os, union drbd_state ns, struct drbd_connection *connection)
935 /* While establishing a connection only allow cstate to change.
937 if (test_bit(STATE_SENT, &connection->flags) &&
976 /* no change -> nothing to do, at least for the connection part */
980 /* disconnect of an unconfigured connection does not make sense */
988 /* When establishing a connection we need to go through WF_REPORT_PARAMS!
1049 * When we loose connection, we have to set the state of the peers disk (pdsk)
1069 /* Implications from connection to peer and peer_isp */
1081 /* An implication of the disk states onto the connection state */
1113 /* Implications of the connection state on the disk states */
1229 if (peer_device->connection->agreed_pro_version < 90)
1267 struct drbd_connection *connection = peer_device ? peer_device->connection : NULL;
1294 rv = is_valid_soft_transition(os, ns, connection);
1296 rv = is_valid_soft_transition(os, ns, connection);
1313 conn_pr_state_change(connection, os, ns,
1345 start_new_tl_epoch(connection);
1350 /* Wake up role changes, that were delayed because of connection establishing */
1352 no_peer_wf_report_params(connection)) {
1353 clear_bit(STATE_SENT, &connection->flags);
1354 wake_up_all_devices(connection);
1359 wake_up(&connection->ping_wait);
1447 drbd_thread_stop_nowait(&connection->receiver);
1451 drbd_thread_stop_nowait(&connection->receiver);
1456 drbd_thread_restart_nowait(&connection->receiver);
1458 /* Resume AL writing if we get a connection */
1461 connection->connect_cnt++;
1480 drbd_queue_work(&connection->sender_work,
1529 D_ASSERT(device, current == first_peer_device(device)->connection->worker.task);
1564 struct drbd_connection *connection = connection_state_change->connection;
1570 return notify_connection_state(skb, seq, connection, &connection_info, type);
1710 struct drbd_connection *connection = peer_device ? peer_device->connection : NULL;
1740 if (os.conn < C_CONNECTED && conn_lowest_conn(connection) >= C_CONNECTED)
1744 conn_lowest_disk(connection) == D_UP_TO_DATE)
1748 _tl_restart(connection, what);
1749 _conn_request_state(connection,
1759 if (resource->susp_fen && conn_lowest_conn(connection) >= C_CONNECTED) {
1760 /* case2: The connection was established again: */
1765 idr_for_each_entry(&connection->peer_devices, peer_device, vnr)
1775 _tl_restart(connection, RESEND);
1776 _conn_request_state(connection,
1790 connection->agreed_pro_version >= 96 && get_ldev(device)) {
1808 /* No point in queuing send_bitmap if we don't have a connection
2039 struct drbd_connection *connection;
2047 struct drbd_connection *connection = acscw->connection;
2059 drbd_thread_start(&connection->receiver);
2065 idr_for_each_entry(&connection->peer_devices, peer_device, vnr)
2068 notify_connection_state(NULL, 0, connection, NULL, NOTIFY_DESTROY);
2071 mutex_lock(&connection->resource->conf_update);
2072 old_conf = connection->net_conf;
2073 connection->my_addr_len = 0;
2074 connection->peer_addr_len = 0;
2075 RCU_INIT_POINTER(connection->net_conf, NULL);
2076 conn_free_crypto(connection);
2077 mutex_unlock(&connection->resource->conf_update);
2086 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
2094 spin_lock_irq(&connection->resource->req_lock);
2095 _tl_restart(connection, CONNECTION_LOST_WHILE_PENDING);
2096 _conn_request_state(connection,
2100 spin_unlock_irq(&connection->resource->req_lock);
2103 conn_md_sync(connection);
2104 kref_put(&connection->kref, drbd_destroy_connection);
2109 static void conn_old_common_state(struct drbd_connection *connection, union drbd_state *pcs, enum chg_state_flags *pf)
2117 .conn = connection->cstate,
2123 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
2156 conn_is_valid_transition(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
2165 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
2182 rv = is_valid_soft_transition(os, ns, connection);
2184 rv = is_valid_soft_transition(os, ns, connection);
2199 conn_set_state(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
2218 if (connection->cstate != C_WF_REPORT_PARAMS && val.conn == C_WF_REPORT_PARAMS)
2219 connection->last_reconnect_jif = jiffies;
2221 connection->cstate = val.conn;
2225 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) {
2262 ns_min.susp = ns_max.susp = connection->resource->susp;
2263 ns_min.susp_nod = ns_max.susp_nod = connection->resource->susp_nod;
2264 ns_min.susp_fen = ns_max.susp_fen = connection->resource->susp_fen;
2271 _conn_rq_cond(struct drbd_connection *connection, union drbd_state mask, union drbd_state val)
2275 if (test_and_clear_bit(CONN_WD_ST_CHG_OKAY, &connection->flags))
2278 if (test_and_clear_bit(CONN_WD_ST_CHG_FAIL, &connection->flags))
2281 err = conn_is_valid_transition(connection, mask, val, 0);
2282 if (err == SS_SUCCESS && connection->cstate == C_WF_REPORT_PARAMS)
2289 _conn_request_state(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
2294 enum drbd_conns oc = connection->cstate;
2305 rv = conn_is_valid_transition(connection, mask, val, flags);
2315 spin_unlock_irq(&connection->resource->req_lock);
2316 mutex_lock(&connection->cstate_mutex);
2319 set_bit(CONN_WD_ST_CHG_REQ, &connection->flags);
2320 if (conn_send_state_req(connection, mask, val)) {
2322 clear_bit(CONN_WD_ST_CHG_REQ, &connection->flags);
2329 set_bit(DISCONNECT_SENT, &connection->flags);
2334 spin_lock_irq(&connection->resource->req_lock);
2335 wait_event_lock_irq(connection->ping_wait,
2336 (rv = _conn_rq_cond(connection, mask, val)),
2337 connection->resource->req_lock);
2338 clear_bit(CONN_WD_ST_CHG_REQ, &connection->flags);
2343 state_change = remember_old_state(connection->resource, GFP_ATOMIC);
2344 conn_old_common_state(connection, &os, &flags);
2346 conn_set_state(connection, mask, val, &ns_min, &ns_max, flags);
2347 conn_pr_state_change(connection, os, ns_max, flags);
2357 kref_get(&connection->kref);
2358 acscw->connection = connection;
2360 drbd_queue_work(&connection->sender_work, &acscw->w);
2362 drbd_err(connection, "Could not kmalloc an acscw\n");
2369 spin_unlock_irq(&connection->resource->req_lock);
2371 mutex_unlock(&connection->cstate_mutex);
2372 spin_lock_irq(&connection->resource->req_lock);
2375 drbd_err(connection, "State change failed: %s\n", drbd_set_st_err_str(rv));
2376 drbd_err(connection, " mask = 0x%x val = 0x%x\n", mask.i, val.i);
2377 drbd_err(connection, " old_conn:%s wanted_conn:%s\n", drbd_conn_str(oc), drbd_conn_str(val.conn));
2383 conn_request_state(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
2388 spin_lock_irq(&connection->resource->req_lock);
2389 rv = _conn_request_state(connection, mask, val, flags);
2390 spin_unlock_irq(&connection->resource->req_lock);