0001
0002 #ifndef DRBD_STATE_CHANGE_H
0003 #define DRBD_STATE_CHANGE_H
0004
0005 struct drbd_resource_state_change {
0006 struct drbd_resource *resource;
0007 enum drbd_role role[2];
0008 bool susp[2];
0009 bool susp_nod[2];
0010 bool susp_fen[2];
0011 };
0012
0013 struct drbd_device_state_change {
0014 struct drbd_device *device;
0015 enum drbd_disk_state disk_state[2];
0016 };
0017
0018 struct drbd_connection_state_change {
0019 struct drbd_connection *connection;
0020 enum drbd_conns cstate[2];
0021 enum drbd_role peer_role[2];
0022 };
0023
0024 struct drbd_peer_device_state_change {
0025 struct drbd_peer_device *peer_device;
0026 enum drbd_disk_state disk_state[2];
0027 enum drbd_conns repl_state[2];
0028 bool resync_susp_user[2];
0029 bool resync_susp_peer[2];
0030 bool resync_susp_dependency[2];
0031 };
0032
0033 struct drbd_state_change {
0034 struct list_head list;
0035 unsigned int n_devices;
0036 unsigned int n_connections;
0037 struct drbd_resource_state_change resource[1];
0038 struct drbd_device_state_change *devices;
0039 struct drbd_connection_state_change *connections;
0040 struct drbd_peer_device_state_change *peer_devices;
0041 };
0042
0043 extern struct drbd_state_change *remember_old_state(struct drbd_resource *, gfp_t);
0044 extern void copy_old_to_new_state_change(struct drbd_state_change *);
0045 extern void forget_state_change(struct drbd_state_change *);
0046
0047 extern int notify_resource_state_change(struct sk_buff *,
0048 unsigned int,
0049 struct drbd_resource_state_change *,
0050 enum drbd_notification_type type);
0051 extern int notify_connection_state_change(struct sk_buff *,
0052 unsigned int,
0053 struct drbd_connection_state_change *,
0054 enum drbd_notification_type type);
0055 extern int notify_device_state_change(struct sk_buff *,
0056 unsigned int,
0057 struct drbd_device_state_change *,
0058 enum drbd_notification_type type);
0059 extern int notify_peer_device_state_change(struct sk_buff *,
0060 unsigned int,
0061 struct drbd_peer_device_state_change *,
0062 enum drbd_notification_type type);
0063
0064 #endif