mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-01 03:11:59 +00:00
drbd: Made cmp_after_sb() more generic into convert_after_sb()
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
46e1ce4177
commit
f179d76d76
1 changed files with 9 additions and 16 deletions
|
@ -2984,25 +2984,18 @@ static enum drbd_conns drbd_sync_handshake(struct drbd_conf *mdev, enum drbd_rol
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* returns 1 if invalid */
|
static enum drbd_after_sb_p convert_after_sb(enum drbd_after_sb_p peer)
|
||||||
static int cmp_after_sb(enum drbd_after_sb_p peer, enum drbd_after_sb_p self)
|
|
||||||
{
|
{
|
||||||
/* ASB_DISCARD_REMOTE - ASB_DISCARD_LOCAL is valid */
|
/* ASB_DISCARD_REMOTE - ASB_DISCARD_LOCAL is valid */
|
||||||
if ((peer == ASB_DISCARD_REMOTE && self == ASB_DISCARD_LOCAL) ||
|
if (peer == ASB_DISCARD_REMOTE)
|
||||||
(self == ASB_DISCARD_REMOTE && peer == ASB_DISCARD_LOCAL))
|
return ASB_DISCARD_LOCAL;
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* any other things with ASB_DISCARD_REMOTE or ASB_DISCARD_LOCAL are invalid */
|
/* any other things with ASB_DISCARD_REMOTE or ASB_DISCARD_LOCAL are invalid */
|
||||||
if (peer == ASB_DISCARD_REMOTE || peer == ASB_DISCARD_LOCAL ||
|
if (peer == ASB_DISCARD_LOCAL)
|
||||||
self == ASB_DISCARD_REMOTE || self == ASB_DISCARD_LOCAL)
|
return ASB_DISCARD_REMOTE;
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* everything else is valid if they are equal on both sides. */
|
/* everything else is valid if they are equal on both sides. */
|
||||||
if (peer == self)
|
return peer;
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* everything es is invalid. */
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int receive_protocol(struct drbd_tconn *tconn, struct packet_info *pi)
|
static int receive_protocol(struct drbd_tconn *tconn, struct packet_info *pi)
|
||||||
|
@ -3060,17 +3053,17 @@ static int receive_protocol(struct drbd_tconn *tconn, struct packet_info *pi)
|
||||||
goto disconnect_rcu_unlock;
|
goto disconnect_rcu_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmp_after_sb(p_after_sb_0p, nc->after_sb_0p)) {
|
if (convert_after_sb(p_after_sb_0p) != nc->after_sb_0p) {
|
||||||
conn_err(tconn, "incompatible after-sb-0pri settings\n");
|
conn_err(tconn, "incompatible after-sb-0pri settings\n");
|
||||||
goto disconnect_rcu_unlock;
|
goto disconnect_rcu_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmp_after_sb(p_after_sb_1p, nc->after_sb_1p)) {
|
if (convert_after_sb(p_after_sb_1p) != nc->after_sb_1p) {
|
||||||
conn_err(tconn, "incompatible after-sb-1pri settings\n");
|
conn_err(tconn, "incompatible after-sb-1pri settings\n");
|
||||||
goto disconnect_rcu_unlock;
|
goto disconnect_rcu_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmp_after_sb(p_after_sb_2p, nc->after_sb_2p)) {
|
if (convert_after_sb(p_after_sb_2p) != nc->after_sb_2p) {
|
||||||
conn_err(tconn, "incompatible after-sb-2pri settings\n");
|
conn_err(tconn, "incompatible after-sb-2pri settings\n");
|
||||||
goto disconnect_rcu_unlock;
|
goto disconnect_rcu_unlock;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue