Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
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];  /* drbd9: enum drbd_conn_state */
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];  /* drbd9: enum drbd_repl_state */
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  /* DRBD_STATE_CHANGE_H */