#include <linux/drbd_limits.h>
#include "drbd_int.h"
#include "drbd_protocol.h"
#include "drbd_req.h"
#include "drbd_state_change.h"
struct after_state_chg_work { … };
enum sanitize_state_warnings { … };
static void count_objects(struct drbd_resource *resource,
unsigned int *n_devices,
unsigned int *n_connections)
{ … }
static struct drbd_state_change *alloc_state_change(unsigned int n_devices, unsigned int n_connections, gfp_t gfp)
{ … }
struct drbd_state_change *remember_old_state(struct drbd_resource *resource, gfp_t gfp)
{ … }
static void remember_new_state(struct drbd_state_change *state_change)
{ … }
void copy_old_to_new_state_change(struct drbd_state_change *state_change)
{ … }
void forget_state_change(struct drbd_state_change *state_change)
{ … }
static int w_after_state_ch(struct drbd_work *w, int unused);
static void after_state_ch(struct drbd_device *device, union drbd_state os,
union drbd_state ns, enum chg_state_flags flags,
struct drbd_state_change *);
static enum drbd_state_rv is_valid_state(struct drbd_device *, union drbd_state);
static enum drbd_state_rv is_valid_soft_transition(union drbd_state, union drbd_state, struct drbd_connection *);
static enum drbd_state_rv is_valid_transition(union drbd_state os, union drbd_state ns);
static union drbd_state sanitize_state(struct drbd_device *device, union drbd_state os,
union drbd_state ns, enum sanitize_state_warnings *warn);
static inline bool is_susp(union drbd_state s)
{ … }
bool conn_all_vols_unconf(struct drbd_connection *connection)
{ … }
static enum drbd_role max_role(enum drbd_role role1, enum drbd_role role2)
{ … }
static enum drbd_role min_role(enum drbd_role role1, enum drbd_role role2)
{ … }
enum drbd_role conn_highest_role(struct drbd_connection *connection)
{ … }
enum drbd_role conn_highest_peer(struct drbd_connection *connection)
{ … }
enum drbd_disk_state conn_highest_disk(struct drbd_connection *connection)
{ … }
enum drbd_disk_state conn_lowest_disk(struct drbd_connection *connection)
{ … }
enum drbd_disk_state conn_highest_pdsk(struct drbd_connection *connection)
{ … }
enum drbd_conns conn_lowest_conn(struct drbd_connection *connection)
{ … }
static bool no_peer_wf_report_params(struct drbd_connection *connection)
{ … }
static void wake_up_all_devices(struct drbd_connection *connection)
{ … }
static int cl_wide_st_chg(struct drbd_device *device,
union drbd_state os, union drbd_state ns)
{ … }
static union drbd_state
apply_mask_val(union drbd_state os, union drbd_state mask, union drbd_state val)
{ … }
enum drbd_state_rv
drbd_change_state(struct drbd_device *device, enum chg_state_flags f,
union drbd_state mask, union drbd_state val)
{ … }
void drbd_force_state(struct drbd_device *device,
union drbd_state mask, union drbd_state val)
{ … }
static enum drbd_state_rv
_req_st_cond(struct drbd_device *device, union drbd_state mask,
union drbd_state val)
{ … }
static enum drbd_state_rv
drbd_req_state(struct drbd_device *device, union drbd_state mask,
union drbd_state val, enum chg_state_flags f)
{ … }
enum drbd_state_rv
_drbd_request_state(struct drbd_device *device, union drbd_state mask,
union drbd_state val, enum chg_state_flags f)
{ … }
static enum drbd_state_rv
request_detach(struct drbd_device *device)
{ … }
int drbd_request_detach_interruptible(struct drbd_device *device)
{ … }
enum drbd_state_rv
_drbd_request_state_holding_state_mutex(struct drbd_device *device, union drbd_state mask,
union drbd_state val, enum chg_state_flags f)
{ … }
static void print_st(struct drbd_device *device, const char *name, union drbd_state ns)
{ … }
void print_st_err(struct drbd_device *device, union drbd_state os,
union drbd_state ns, enum drbd_state_rv err)
{ … }
static long print_state_change(char *pb, union drbd_state os, union drbd_state ns,
enum chg_state_flags flags)
{ … }
static void drbd_pr_state_change(struct drbd_device *device, union drbd_state os, union drbd_state ns,
enum chg_state_flags flags)
{ … }
static void conn_pr_state_change(struct drbd_connection *connection, union drbd_state os, union drbd_state ns,
enum chg_state_flags flags)
{ … }
static enum drbd_state_rv
is_valid_state(struct drbd_device *device, union drbd_state ns)
{ … }
static enum drbd_state_rv
is_valid_soft_transition(union drbd_state os, union drbd_state ns, struct drbd_connection *connection)
{ … }
static enum drbd_state_rv
is_valid_conn_transition(enum drbd_conns oc, enum drbd_conns nc)
{ … }
static enum drbd_state_rv
is_valid_transition(union drbd_state os, union drbd_state ns)
{ … }
static void print_sanitize_warnings(struct drbd_device *device, enum sanitize_state_warnings warn)
{ … }
static union drbd_state sanitize_state(struct drbd_device *device, union drbd_state os,
union drbd_state ns, enum sanitize_state_warnings *warn)
{ … }
void drbd_resume_al(struct drbd_device *device)
{ … }
static void set_ov_position(struct drbd_peer_device *peer_device, enum drbd_conns cs)
{ … }
enum drbd_state_rv
_drbd_set_state(struct drbd_device *device, union drbd_state ns,
enum chg_state_flags flags, struct completion *done)
{ … }
static int w_after_state_ch(struct drbd_work *w, int unused)
{ … }
static void abw_start_sync(struct drbd_device *device, int rv)
{ … }
int drbd_bitmap_io_from_worker(struct drbd_device *device,
int (*io_fn)(struct drbd_device *, struct drbd_peer_device *),
char *why, enum bm_flag flags,
struct drbd_peer_device *peer_device)
{ … }
int notify_resource_state_change(struct sk_buff *skb,
unsigned int seq,
void *state_change,
enum drbd_notification_type type)
{ … }
int notify_connection_state_change(struct sk_buff *skb,
unsigned int seq,
void *state_change,
enum drbd_notification_type type)
{ … }
int notify_device_state_change(struct sk_buff *skb,
unsigned int seq,
void *state_change,
enum drbd_notification_type type)
{ … }
int notify_peer_device_state_change(struct sk_buff *skb,
unsigned int seq,
void *state_change,
enum drbd_notification_type type)
{ … }
static void broadcast_state_change(struct drbd_state_change *state_change)
{ … }
static bool lost_contact_to_peer_data(enum drbd_disk_state os, enum drbd_disk_state ns)
{ … }
static void after_state_ch(struct drbd_device *device, union drbd_state os,
union drbd_state ns, enum chg_state_flags flags,
struct drbd_state_change *state_change)
{ … }
struct after_conn_state_chg_work { … };
static int w_after_conn_state_ch(struct drbd_work *w, int unused)
{ … }
static void conn_old_common_state(struct drbd_connection *connection, union drbd_state *pcs, enum chg_state_flags *pf)
{ … }
static enum drbd_state_rv
conn_is_valid_transition(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
enum chg_state_flags flags)
{ … }
static void
conn_set_state(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
union drbd_state *pns_min, union drbd_state *pns_max, enum chg_state_flags flags)
{ … }
static enum drbd_state_rv
_conn_rq_cond(struct drbd_connection *connection, union drbd_state mask, union drbd_state val)
{ … }
enum drbd_state_rv
_conn_request_state(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
enum chg_state_flags flags)
{ … }
enum drbd_state_rv
conn_request_state(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
enum chg_state_flags flags)
{ … }