diff options
author | Philipp Reisner | 2011-05-16 17:31:47 +0200 |
---|---|---|
committer | Philipp Reisner | 2012-11-08 16:55:53 +0100 |
commit | f179d76d76ce6653ba4c6a6b0c2e7c42215734bc (patch) | |
tree | 5bc293d13a234306b04e5c30903c31907084290d /drivers/block/drbd/drbd_receiver.c | |
parent | drbd: protect updates to integrits_tfm by tconn->data->mutex (diff) | |
download | kernel-qcow2-linux-f179d76d76ce6653ba4c6a6b0c2e7c42215734bc.tar.gz kernel-qcow2-linux-f179d76d76ce6653ba4c6a6b0c2e7c42215734bc.tar.xz kernel-qcow2-linux-f179d76d76ce6653ba4c6a6b0c2e7c42215734bc.zip |
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>
Diffstat (limited to 'drivers/block/drbd/drbd_receiver.c')
-rw-r--r-- | drivers/block/drbd/drbd_receiver.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 7deade196a33..b5eeb8de407b 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -2984,25 +2984,18 @@ static enum drbd_conns drbd_sync_handshake(struct drbd_conf *mdev, enum drbd_rol return rv; } -/* returns 1 if invalid */ -static int cmp_after_sb(enum drbd_after_sb_p peer, enum drbd_after_sb_p self) +static enum drbd_after_sb_p convert_after_sb(enum drbd_after_sb_p peer) { /* ASB_DISCARD_REMOTE - ASB_DISCARD_LOCAL is valid */ - if ((peer == ASB_DISCARD_REMOTE && self == ASB_DISCARD_LOCAL) || - (self == ASB_DISCARD_REMOTE && peer == ASB_DISCARD_LOCAL)) - return 0; + if (peer == ASB_DISCARD_REMOTE) + return ASB_DISCARD_LOCAL; /* any other things with ASB_DISCARD_REMOTE or ASB_DISCARD_LOCAL are invalid */ - if (peer == ASB_DISCARD_REMOTE || peer == ASB_DISCARD_LOCAL || - self == ASB_DISCARD_REMOTE || self == ASB_DISCARD_LOCAL) - return 1; + if (peer == ASB_DISCARD_LOCAL) + return ASB_DISCARD_REMOTE; /* everything else is valid if they are equal on both sides. */ - if (peer == self) - return 0; - - /* everything es is invalid. */ - return 1; + return peer; } 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; } - 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"); 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"); 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"); goto disconnect_rcu_unlock; } |