|
@@ -473,12 +473,13 @@ static int cl_wide_st_chg(struct drbd_conf *mdev,
|
|
|
(os.conn == C_CONNECTED && ns.conn == C_VERIFY_S);
|
|
|
}
|
|
|
|
|
|
-int drbd_change_state(struct drbd_conf *mdev, enum chg_state_flags f,
|
|
|
- union drbd_state mask, union drbd_state val)
|
|
|
+enum drbd_state_rv
|
|
|
+drbd_change_state(struct drbd_conf *mdev, enum chg_state_flags f,
|
|
|
+ union drbd_state mask, union drbd_state val)
|
|
|
{
|
|
|
unsigned long flags;
|
|
|
union drbd_state os, ns;
|
|
|
- int rv;
|
|
|
+ enum drbd_state_rv rv;
|
|
|
|
|
|
spin_lock_irqsave(&mdev->req_lock, flags);
|
|
|
os = mdev->state;
|
|
@@ -502,9 +503,10 @@ void drbd_force_state(struct drbd_conf *mdev,
|
|
|
drbd_change_state(mdev, CS_HARD, mask, val);
|
|
|
}
|
|
|
|
|
|
-static int is_valid_state(struct drbd_conf *mdev, union drbd_state ns);
|
|
|
-static int is_valid_state_transition(struct drbd_conf *,
|
|
|
- union drbd_state, union drbd_state);
|
|
|
+static enum drbd_state_rv is_valid_state(struct drbd_conf *, union drbd_state);
|
|
|
+static enum drbd_state_rv is_valid_state_transition(struct drbd_conf *,
|
|
|
+ union drbd_state,
|
|
|
+ union drbd_state);
|
|
|
static union drbd_state sanitize_state(struct drbd_conf *mdev, union drbd_state os,
|
|
|
union drbd_state ns, const char **warn_sync_abort);
|
|
|
int drbd_send_state_req(struct drbd_conf *,
|
|
@@ -516,7 +518,7 @@ _req_st_cond(struct drbd_conf *mdev, union drbd_state mask,
|
|
|
{
|
|
|
union drbd_state os, ns;
|
|
|
unsigned long flags;
|
|
|
- int rv;
|
|
|
+ enum drbd_state_rv rv;
|
|
|
|
|
|
if (test_and_clear_bit(CL_ST_CHG_SUCCESS, &mdev->flags))
|
|
|
return SS_CW_SUCCESS;
|
|
@@ -537,7 +539,7 @@ _req_st_cond(struct drbd_conf *mdev, union drbd_state mask,
|
|
|
if (rv == SS_SUCCESS) {
|
|
|
rv = is_valid_state_transition(mdev, ns, os);
|
|
|
if (rv == SS_SUCCESS)
|
|
|
- rv = 0; /* cont waiting, otherwise fail. */
|
|
|
+ rv = SS_UNKNOWN_ERROR; /* cont waiting, otherwise fail. */
|
|
|
}
|
|
|
}
|
|
|
spin_unlock_irqrestore(&mdev->req_lock, flags);
|
|
@@ -555,14 +557,14 @@ _req_st_cond(struct drbd_conf *mdev, union drbd_state mask,
|
|
|
* Should not be called directly, use drbd_request_state() or
|
|
|
* _drbd_request_state().
|
|
|
*/
|
|
|
-static int drbd_req_state(struct drbd_conf *mdev,
|
|
|
- union drbd_state mask, union drbd_state val,
|
|
|
- enum chg_state_flags f)
|
|
|
+static enum drbd_state_rv
|
|
|
+drbd_req_state(struct drbd_conf *mdev, union drbd_state mask,
|
|
|
+ union drbd_state val, enum chg_state_flags f)
|
|
|
{
|
|
|
struct completion done;
|
|
|
unsigned long flags;
|
|
|
union drbd_state os, ns;
|
|
|
- int rv;
|
|
|
+ enum drbd_state_rv rv;
|
|
|
|
|
|
init_completion(&done);
|
|
|
|
|
@@ -637,10 +639,11 @@ abort:
|
|
|
* Cousin of drbd_request_state(), useful with the CS_WAIT_COMPLETE
|
|
|
* flag, or when logging of failed state change requests is not desired.
|
|
|
*/
|
|
|
-int _drbd_request_state(struct drbd_conf *mdev, union drbd_state mask,
|
|
|
- union drbd_state val, enum chg_state_flags f)
|
|
|
+enum drbd_state_rv
|
|
|
+_drbd_request_state(struct drbd_conf *mdev, union drbd_state mask,
|
|
|
+ union drbd_state val, enum chg_state_flags f)
|
|
|
{
|
|
|
- int rv;
|
|
|
+ enum drbd_state_rv rv;
|
|
|
|
|
|
wait_event(mdev->state_wait,
|
|
|
(rv = drbd_req_state(mdev, mask, val, f)) != SS_IN_TRANSIENT_STATE);
|
|
@@ -664,8 +667,8 @@ static void print_st(struct drbd_conf *mdev, char *name, union drbd_state ns)
|
|
|
);
|
|
|
}
|
|
|
|
|
|
-void print_st_err(struct drbd_conf *mdev,
|
|
|
- union drbd_state os, union drbd_state ns, int err)
|
|
|
+void print_st_err(struct drbd_conf *mdev, union drbd_state os,
|
|
|
+ union drbd_state ns, enum drbd_state_rv err)
|
|
|
{
|
|
|
if (err == SS_IN_TRANSIENT_STATE)
|
|
|
return;
|
|
@@ -680,12 +683,13 @@ void print_st_err(struct drbd_conf *mdev,
|
|
|
* @mdev: DRBD device.
|
|
|
* @ns: State to consider.
|
|
|
*/
|
|
|
-static int is_valid_state(struct drbd_conf *mdev, union drbd_state ns)
|
|
|
+static enum drbd_state_rv
|
|
|
+is_valid_state(struct drbd_conf *mdev, union drbd_state ns)
|
|
|
{
|
|
|
/* See drbd_state_sw_errors in drbd_strings.c */
|
|
|
|
|
|
enum drbd_fencing_p fp;
|
|
|
- int rv = SS_SUCCESS;
|
|
|
+ enum drbd_state_rv rv = SS_SUCCESS;
|
|
|
|
|
|
fp = FP_DONT_CARE;
|
|
|
if (get_ldev(mdev)) {
|
|
@@ -748,10 +752,11 @@ static int is_valid_state(struct drbd_conf *mdev, union drbd_state ns)
|
|
|
* @ns: new state.
|
|
|
* @os: old state.
|
|
|
*/
|
|
|
-static int is_valid_state_transition(struct drbd_conf *mdev,
|
|
|
- union drbd_state ns, union drbd_state os)
|
|
|
+static enum drbd_state_rv
|
|
|
+is_valid_state_transition(struct drbd_conf *mdev, union drbd_state ns,
|
|
|
+ union drbd_state os)
|
|
|
{
|
|
|
- int rv = SS_SUCCESS;
|
|
|
+ enum drbd_state_rv rv = SS_SUCCESS;
|
|
|
|
|
|
if ((ns.conn == C_STARTING_SYNC_T || ns.conn == C_STARTING_SYNC_S) &&
|
|
|
os.conn > C_CONNECTED)
|
|
@@ -1029,12 +1034,12 @@ static void drbd_resume_al(struct drbd_conf *mdev)
|
|
|
*
|
|
|
* Caller needs to hold req_lock, and global_state_lock. Do not call directly.
|
|
|
*/
|
|
|
-int __drbd_set_state(struct drbd_conf *mdev,
|
|
|
- union drbd_state ns, enum chg_state_flags flags,
|
|
|
- struct completion *done)
|
|
|
+enum drbd_state_rv
|
|
|
+__drbd_set_state(struct drbd_conf *mdev, union drbd_state ns,
|
|
|
+ enum chg_state_flags flags, struct completion *done)
|
|
|
{
|
|
|
union drbd_state os;
|
|
|
- int rv = SS_SUCCESS;
|
|
|
+ enum drbd_state_rv rv = SS_SUCCESS;
|
|
|
const char *warn_sync_abort = NULL;
|
|
|
struct after_state_chg_work *ascw;
|
|
|
|
|
@@ -2031,7 +2036,7 @@ int drbd_send_state_req(struct drbd_conf *mdev,
|
|
|
(struct p_header80 *)&p, sizeof(p));
|
|
|
}
|
|
|
|
|
|
-int drbd_send_sr_reply(struct drbd_conf *mdev, int retcode)
|
|
|
+int drbd_send_sr_reply(struct drbd_conf *mdev, enum drbd_state_rv retcode)
|
|
|
{
|
|
|
struct p_req_state_reply p;
|
|
|
|