diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2011-03-10 22:28:13 (GMT) |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2012-11-03 23:16:19 (GMT) |
commit | d0456c72df5fb3b800ba9b0ec2465fdbcaf29a7f (patch) | |
tree | b9b7174176a29502ab045dad3c947cf1e7a885f1 | |
parent | 543cc10b4cc5c60aa9fcc62705ccfb9998bf4697 (diff) | |
download | linux-fsl-qoriq-d0456c72df5fb3b800ba9b0ec2465fdbcaf29a7f.tar.xz |
drbd: simplify conn_all_vols_unconf, make it bool
Get rid of a temporary variable and, funny bitand assignment.
Just short circuit, returning false, once we encounter the first
still configured volume.
FIXME verify call sites for need of rcu_read_lock or stronger.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
-rw-r--r-- | drivers/block/drbd/drbd_state.c | 16 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_state.h | 2 |
2 files changed, 8 insertions, 10 deletions
diff --git a/drivers/block/drbd/drbd_state.c b/drivers/block/drbd/drbd_state.c index a280bc2..c27d377 100644 --- a/drivers/block/drbd/drbd_state.c +++ b/drivers/block/drbd/drbd_state.c @@ -47,20 +47,18 @@ static enum drbd_state_rv is_valid_transition(union drbd_state os, union drbd_st static union drbd_state sanitize_state(struct drbd_conf *mdev, union drbd_state ns, const char **warn_sync_abort); -int conn_all_vols_unconf(struct drbd_tconn *tconn) +bool conn_all_vols_unconf(struct drbd_tconn *tconn) { struct drbd_conf *mdev; - int minor, uncfg = 1; + int minor; idr_for_each_entry(&tconn->volumes, mdev, minor) { - uncfg &= (mdev->state.disk == D_DISKLESS && - mdev->state.conn == C_STANDALONE && - mdev->state.role == R_SECONDARY); - if (!uncfg) - break; + if (mdev->state.disk != D_DISKLESS || + mdev->state.conn != C_STANDALONE || + mdev->state.role != R_SECONDARY) + return false; } - - return uncfg; + return true; } /** diff --git a/drivers/block/drbd/drbd_state.h b/drivers/block/drbd/drbd_state.h index d9536cd..55df072 100644 --- a/drivers/block/drbd/drbd_state.h +++ b/drivers/block/drbd/drbd_state.h @@ -91,7 +91,7 @@ conn_request_state(struct drbd_tconn *tconn, union drbd_state mask, union drbd_s enum chg_state_flags flags); extern void drbd_resume_al(struct drbd_conf *mdev); -extern int conn_all_vols_unconf(struct drbd_tconn *tconn); +extern bool conn_all_vols_unconf(struct drbd_tconn *tconn); /** * drbd_request_state() - Reqest a state change |