Lines Matching refs:state_change
29 struct drbd_state_change *state_change;
60 struct drbd_state_change *state_change;
67 state_change = kmalloc(size, gfp);
68 if (!state_change)
70 state_change->n_devices = n_devices;
71 state_change->n_connections = n_connections;
72 state_change->devices = (void *)(state_change + 1);
73 state_change->connections = (void *)&state_change->devices[n_devices];
74 state_change->peer_devices = (void *)&state_change->connections[n_connections];
75 state_change->resource->resource = NULL;
77 state_change->devices[n].device = NULL;
79 state_change->connections[n].connection = NULL;
80 return state_change;
85 struct drbd_state_change *state_change;
99 state_change = alloc_state_change(n_devices, n_connections, gfp);
100 if (!state_change)
104 state_change->resource->resource = resource;
105 state_change->resource->role[OLD] =
107 state_change->resource->susp[OLD] = resource->susp;
108 state_change->resource->susp_nod[OLD] = resource->susp_nod;
109 state_change->resource->susp_fen[OLD] = resource->susp_fen;
111 connection_state_change = state_change->connections;
122 device_state_change = state_change->devices;
123 peer_device_state_change = state_change->peer_devices;
152 return state_change;
155 static void remember_new_state(struct drbd_state_change *state_change)
161 if (!state_change)
164 resource_state_change = &state_change->resource[0];
173 for (n = 0; n < state_change->n_devices; n++) {
175 &state_change->devices[n];
181 for (n = 0; n < state_change->n_connections; n++) {
183 &state_change->connections[n];
192 for (n = 0; n < state_change->n_devices * state_change->n_connections; n++) {
194 &state_change->peer_devices[n];
211 void copy_old_to_new_state_change(struct drbd_state_change *state_change)
213 struct drbd_resource_state_change *resource_state_change = &state_change->resource[0];
224 for (n_connection = 0; n_connection < state_change->n_connections; n_connection++) {
226 &state_change->connections[n_connection];
232 for (n_device = 0; n_device < state_change->n_devices; n_device++) {
234 &state_change->devices[n_device];
239 n_peer_devices = state_change->n_devices * state_change->n_connections;
242 &state_change->peer_devices[n_peer_device];
254 void forget_state_change(struct drbd_state_change *state_change)
258 if (!state_change)
261 if (state_change->resource->resource)
262 kref_put(&state_change->resource->resource->kref, drbd_destroy_resource);
263 for (n = 0; n < state_change->n_devices; n++) {
264 struct drbd_device *device = state_change->devices[n].device;
269 for (n = 0; n < state_change->n_connections; n++) {
271 state_change->connections[n].connection;
276 kfree(state_change);
1270 struct drbd_state_change *state_change;
1326 state_change = remember_old_state(device->resource, GFP_ATOMIC);
1338 remember_new_state(state_change);
1477 ascw->state_change = state_change;
1493 after_state_ch(device, ascw->os, ascw->ns, ascw->flags, ascw->state_change);
1494 forget_state_change(ascw->state_change);
1600 static void broadcast_state_change(struct drbd_state_change *state_change)
1602 struct drbd_resource_state_change *resource_state_change = &state_change->resource[0];
1632 for (n_connection = 0; n_connection < state_change->n_connections; n_connection++) {
1634 &state_change->connections[n_connection];
1642 for (n_device = 0; n_device < state_change->n_devices; n_device++) {
1644 &state_change->devices[n_device];
1651 n_peer_devices = state_change->n_devices * state_change->n_connections;
1654 &state_change->peer_devices[n_peer_device];
1702 struct drbd_state_change *state_change)
1709 broadcast_state_change(state_change);
2034 struct drbd_state_change *state_change;
2047 broadcast_state_change(acscw->state_change);
2048 forget_state_change(acscw->state_change);
2292 struct drbd_state_change *state_change;
2338 state_change = remember_old_state(connection->resource, GFP_ATOMIC);
2343 remember_new_state(state_change);
2354 acscw->state_change = state_change;