drbd: Do not check aspects that are not subject to change in _conn_requests_state()
authorPhilipp Reisner <philipp.reisner@linbit.com>
Tue, 28 Aug 2012 09:07:56 +0000 (11:07 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Fri, 9 Nov 2012 13:08:23 +0000 (14:08 +0100)
When _conn_requests_state() is used to change other parts of the state
than the connection, do not check for a valid connection transition.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_state.c

index f3e6090..9ae40c9 100644 (file)
@@ -1742,9 +1742,11 @@ _conn_request_state(struct drbd_tconn *tconn, union drbd_state mask, union drbd_
        union drbd_state ns_max, ns_min, os;
        bool have_mutex = false;
 
-       rv = is_valid_conn_transition(oc, val.conn);
-       if (rv < SS_SUCCESS)
-               goto abort;
+       if (mask.conn) {
+               rv = is_valid_conn_transition(oc, val.conn);
+               if (rv < SS_SUCCESS)
+                       goto abort;
+       }
 
        rv = conn_is_valid_transition(tconn, mask, val, flags);
        if (rv < SS_SUCCESS)