Lines Matching refs:os

25 	union drbd_state os;
280 static void after_state_ch(struct drbd_device *device, union drbd_state os,
285 static enum drbd_state_rv is_valid_transition(union drbd_state os, union drbd_state ns);
286 static union drbd_state sanitize_state(struct drbd_device *device, union drbd_state os,
464 * @os: old (current) state.
468 union drbd_state os, union drbd_state ns)
470 return (os.conn >= C_CONNECTED && ns.conn >= C_CONNECTED &&
471 ((os.role != R_PRIMARY && ns.role == R_PRIMARY) ||
472 (os.conn != C_STARTING_SYNC_T && ns.conn == C_STARTING_SYNC_T) ||
473 (os.conn != C_STARTING_SYNC_S && ns.conn == C_STARTING_SYNC_S) ||
474 (os.disk != D_FAILED && ns.disk == D_FAILED))) ||
475 (os.conn >= C_CONNECTED && ns.conn == C_DISCONNECTING) ||
476 (os.conn == C_CONNECTED && ns.conn == C_VERIFY_S) ||
477 (os.conn == C_CONNECTED && ns.conn == C_WF_REPORT_PARAMS);
481 apply_mask_val(union drbd_state os, union drbd_state mask, union drbd_state val)
484 ns.i = (os.i & ~mask.i) | val.i;
520 union drbd_state os, ns;
531 os = drbd_read_state(device);
532 ns = sanitize_state(device, os, apply_mask_val(os, mask, val), NULL);
533 rv = is_valid_transition(os, ns);
537 if (!cl_wide_st_chg(device, os, ns))
542 rv = is_valid_soft_transition(os, ns, first_peer_device(device)->connection);
568 union drbd_state os, ns;
580 os = drbd_read_state(device);
581 ns = sanitize_state(device, os, apply_mask_val(os, mask, val), NULL);
582 rv = is_valid_transition(os, ns);
588 if (cl_wide_st_chg(device, os, ns)) {
591 rv = is_valid_soft_transition(os, ns, first_peer_device(device)->connection);
596 print_st_err(device, os, ns, rv);
603 print_st_err(device, os, ns, rv);
612 print_st_err(device, os, ns, rv);
733 void print_st_err(struct drbd_device *device, union drbd_state os,
739 print_st(device, " state", os);
743 static long print_state_change(char *pb, union drbd_state os, union drbd_state ns,
750 if (ns.role != os.role && flags & CS_DC_ROLE)
752 drbd_role_str(os.role),
754 if (ns.peer != os.peer && flags & CS_DC_PEER)
756 drbd_role_str(os.peer),
758 if (ns.conn != os.conn && flags & CS_DC_CONN)
760 drbd_conn_str(os.conn),
762 if (ns.disk != os.disk && flags & CS_DC_DISK)
764 drbd_disk_str(os.disk),
766 if (ns.pdsk != os.pdsk && flags & CS_DC_PDSK)
768 drbd_disk_str(os.pdsk),
774 static void drbd_pr_state_change(struct drbd_device *device, union drbd_state os, union drbd_state ns,
780 pbp += print_state_change(pbp, os, ns, flags ^ CS_DC_MASK);
782 if (ns.aftr_isp != os.aftr_isp)
784 os.aftr_isp,
786 if (ns.peer_isp != os.peer_isp)
788 os.peer_isp,
790 if (ns.user_isp != os.user_isp)
792 os.user_isp,
799 static void conn_pr_state_change(struct drbd_connection *connection, union drbd_state os, union drbd_state ns,
805 pbp += print_state_change(pbp, os, ns, flags);
807 if (is_susp(ns) != is_susp(os) && flags & CS_DC_SUSP)
809 is_susp(os),
909 * @os: old state.
912 is_valid_soft_transition(union drbd_state os, union drbd_state ns, struct drbd_connection *connection)
917 os.conn > C_CONNECTED)
920 if (ns.conn == C_DISCONNECTING && os.conn == C_STANDALONE)
923 if (ns.disk > D_ATTACHING && os.disk == D_DISKLESS)
926 if (ns.conn == C_WF_CONNECTION && os.conn < C_UNCONNECTED)
929 if (ns.disk == D_OUTDATED && os.disk < D_OUTDATED && os.disk != D_ATTACHING)
932 if (ns.conn == C_DISCONNECTING && os.conn == C_UNCONNECTED)
938 !((ns.conn == C_WF_REPORT_PARAMS && os.conn == C_WF_CONNECTION) ||
939 (ns.conn >= C_CONNECTED && os.conn == C_WF_REPORT_PARAMS)))
945 if (os.role != R_PRIMARY && ns.role == R_PRIMARY
948 && (ns.conn <= C_WF_SYNC_UUID || ns.conn != os.conn))
951 if ((ns.conn == C_VERIFY_S || ns.conn == C_VERIFY_T) && os.conn < C_CONNECTED)
955 ns.conn != os.conn && os.conn > C_CONNECTED)
959 os.conn < C_CONNECTED)
963 && os.conn < C_WF_REPORT_PARAMS)
967 os.conn < C_CONNECTED && os.pdsk > D_OUTDATED)
1011 * @os: old state.
1014 is_valid_transition(union drbd_state os, union drbd_state ns)
1018 rv = is_valid_conn_transition(os.conn, ns.conn);
1021 if (ns.disk == D_FAILED && os.disk == D_DISKLESS)
1045 * @os: old state.
1052 static union drbd_state sanitize_state(struct drbd_device *device, union drbd_state os,
1195 !(os.role == R_PRIMARY && os.conn < C_CONNECTED && os.pdsk > D_OUTDATED))
1200 !(os.role == R_PRIMARY && os.disk < D_UP_TO_DATE && os.pdsk < D_UP_TO_DATE))
1266 union drbd_state os;
1272 os = drbd_read_state(device);
1274 ns = sanitize_state(device, os, ns, &ssw);
1275 if (ns.i == os.i)
1278 rv = is_valid_transition(os, ns);
1291 if (is_valid_state(device, os) == rv)
1292 rv = is_valid_soft_transition(os, ns, connection);
1294 rv = is_valid_soft_transition(os, ns, connection);
1299 print_st_err(device, os, ns, rv);
1305 drbd_pr_state_change(device, os, ns, flags);
1311 conn_pr_state_change(connection, os, ns,
1318 if ((os.disk != D_FAILED && ns.disk == D_FAILED) ||
1319 (os.disk != D_DISKLESS && ns.disk == D_DISKLESS))
1322 if (!is_sync_state(os.conn) && is_sync_state(ns.conn))
1341 if (drbd_should_do_remote((union drbd_dev_state)os.i) !=
1345 if (os.disk == D_ATTACHING && ns.disk >= D_NEGOTIATING)
1349 if (os.conn == C_WF_REPORT_PARAMS && ns.conn != C_WF_REPORT_PARAMS &&
1361 if ((os.conn == C_VERIFY_S || os.conn == C_VERIFY_T) &&
1370 if ((os.conn == C_PAUSED_SYNC_T || os.conn == C_PAUSED_SYNC_S) &&
1379 if ((os.conn == C_SYNC_TARGET || os.conn == C_SYNC_SOURCE) &&
1385 if (os.conn == C_CONNECTED &&
1433 if (os.disk < D_CONSISTENT && ns.disk >= D_CONSISTENT)
1439 if (os.disk == D_INCONSISTENT && os.pdsk == D_INCONSISTENT &&
1440 os.peer == R_SECONDARY && ns.peer == R_PRIMARY)
1444 if (os.conn != C_DISCONNECTING && ns.conn == C_DISCONNECTING)
1448 if (os.conn != C_STANDALONE && ns.conn == C_STANDALONE)
1452 if (os.conn > C_WF_CONNECTION &&
1457 if (os.conn < C_CONNECTED && ns.conn >= C_CONNECTED) {
1465 if ((os.disk == D_ATTACHING || os.disk == D_NEGOTIATING) &&
1471 ascw->os = os;
1493 after_state_ch(device, ascw->os, ascw->ns, ascw->flags, ascw->state_change);
1674 static bool lost_contact_to_peer_data(enum drbd_disk_state os, enum drbd_disk_state ns)
1676 if ((os >= D_INCONSISTENT && os != D_UNKNOWN && os != D_OUTDATED)
1686 if (os == D_UNKNOWN
1696 * @os: old state.
1700 static void after_state_ch(struct drbd_device *device, union drbd_state os,
1712 sib.os = os;
1715 if ((os.disk != D_UP_TO_DATE || os.pdsk != D_UP_TO_DATE)
1725 if (!(os.role == R_PRIMARY && os.disk < D_UP_TO_DATE && os.pdsk < D_UP_TO_DATE) &&
1736 if (os.conn < C_CONNECTED && conn_lowest_conn(connection) >= C_CONNECTED)
1739 if ((os.disk == D_ATTACHING || os.disk == D_NEGOTIATING) &&
1784 if ((os.conn != C_SYNC_SOURCE && os.conn != C_PAUSED_SYNC_S) &&
1792 if (os.pdsk == D_DISKLESS &&
1807 if (os.conn != C_WF_BITMAP_S && ns.conn == C_WF_BITMAP_S &&
1814 if (lost_contact_to_peer_data(os.pdsk, ns.pdsk)) {
1830 if (os.peer != R_PRIMARY && ns.peer == R_PRIMARY &&
1836 if (os.peer == R_PRIMARY && ns.peer == R_SECONDARY)
1848 if (os.role == R_PRIMARY && ns.role == R_SECONDARY &&
1859 os.disk == D_ATTACHING && ns.disk == D_NEGOTIATING) {
1867 ((os.aftr_isp != ns.aftr_isp) ||
1868 (os.user_isp != ns.user_isp)))
1872 if ((!os.aftr_isp && !os.peer_isp && !os.user_isp) &&
1878 if (os.conn == C_WF_REPORT_PARAMS && ns.conn >= C_CONNECTED)
1881 if (os.conn != C_AHEAD && ns.conn == C_AHEAD)
1885 if ((os.conn != C_STARTING_SYNC_T && ns.conn == C_STARTING_SYNC_T) ||
1886 (os.conn != C_STARTING_SYNC_S && ns.conn == C_STARTING_SYNC_S))
1894 if (os.disk != D_FAILED && ns.disk == D_FAILED) {
1955 if (os.disk != D_DISKLESS && ns.disk == D_DISKLESS) {
1971 if (os.disk == D_UP_TO_DATE && ns.disk == D_INCONSISTENT && ns.conn >= C_CONNECTED)
1982 if ((os.conn > C_CONNECTED && ns.conn <= C_CONNECTED) ||
1983 (os.peer_isp && !ns.peer_isp) ||
1984 (os.user_isp && !ns.user_isp))
1989 if (os.disk < D_UP_TO_DATE && os.conn >= C_SYNC_SOURCE && ns.conn == C_CONNECTED)
1995 if (os.conn == C_VERIFY_S && ns.conn == C_CONNECTED
2010 if ((os.conn > C_CONNECTED && os.conn < C_AHEAD) &&
2020 if (os.aftr_isp != ns.aftr_isp)
2109 union drbd_dev_state os, cs = {
2120 os = device->state;
2123 cs = os;
2128 if (cs.role != os.role)
2131 if (cs.peer != os.peer)
2134 if (cs.conn != os.conn)
2137 if (cs.disk != os.disk)
2140 if (cs.pdsk != os.pdsk)
2155 union drbd_state ns, os;
2162 os = drbd_read_state(device);
2163 ns = sanitize_state(device, os, apply_mask_val(os, mask, val), NULL);
2165 if (flags & CS_IGN_OUTD_FAIL && ns.disk == D_OUTDATED && os.disk < D_OUTDATED)
2166 ns.disk = os.disk;
2168 if (ns.i == os.i)
2171 rv = is_valid_transition(os, ns);
2176 if (is_valid_state(device, os) == rv)
2177 rv = is_valid_soft_transition(os, ns, connection);
2179 rv = is_valid_soft_transition(os, ns, connection);
2184 print_st_err(device, os, ns, rv);
2197 union drbd_state ns, os, ns_max = { };
2223 os = drbd_read_state(device);
2224 ns = apply_mask_val(os, mask, val);
2225 ns = sanitize_state(device, os, ns, NULL);
2227 if (flags & CS_IGN_OUTD_FAIL && ns.disk == D_OUTDATED && os.disk < D_OUTDATED)
2228 ns.disk = os.disk;
2290 union drbd_state ns_max, ns_min, os;
2339 conn_old_common_state(connection, &os, &flags);
2342 conn_pr_state_change(connection, os, ns_max, flags);
2347 acscw->oc = os.conn;