drbd: Do not display bogus log lines for pdsk in case pdsk < D_UNKNOWN
This was a regression recently introduced with commit 7848ddb752c09b6dfd1ddfabb06b69b08aa8f6b9 "drbd: Correctly handle resources without volumes" Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
97ddb68790
commit
f132f554ce
|
@ -1576,13 +1576,7 @@ void
|
||||||
conn_set_state(struct drbd_tconn *tconn, union drbd_state mask, union drbd_state val,
|
conn_set_state(struct drbd_tconn *tconn, union drbd_state mask, union drbd_state val,
|
||||||
union drbd_state *pns_min, union drbd_state *pns_max, enum chg_state_flags flags)
|
union drbd_state *pns_min, union drbd_state *pns_max, enum chg_state_flags flags)
|
||||||
{
|
{
|
||||||
union drbd_state ns, os, ns_max = {
|
union drbd_state ns, os, ns_max = { };
|
||||||
{ .role = R_SECONDARY,
|
|
||||||
.peer = R_UNKNOWN,
|
|
||||||
.conn = val.conn,
|
|
||||||
.disk = D_DISKLESS,
|
|
||||||
.pdsk = D_UNKNOWN
|
|
||||||
} };
|
|
||||||
union drbd_state ns_min = {
|
union drbd_state ns_min = {
|
||||||
{ .role = R_MASK,
|
{ .role = R_MASK,
|
||||||
.peer = R_MASK,
|
.peer = R_MASK,
|
||||||
|
@ -1592,13 +1586,14 @@ conn_set_state(struct drbd_tconn *tconn, union drbd_state mask, union drbd_state
|
||||||
} };
|
} };
|
||||||
struct drbd_conf *mdev;
|
struct drbd_conf *mdev;
|
||||||
enum drbd_state_rv rv;
|
enum drbd_state_rv rv;
|
||||||
int vnr;
|
int vnr, number_of_volumes = 0;
|
||||||
|
|
||||||
if (mask.conn == C_MASK)
|
if (mask.conn == C_MASK)
|
||||||
tconn->cstate = val.conn;
|
tconn->cstate = val.conn;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
idr_for_each_entry(&tconn->volumes, mdev, vnr) {
|
idr_for_each_entry(&tconn->volumes, mdev, vnr) {
|
||||||
|
number_of_volumes++;
|
||||||
os = drbd_read_state(mdev);
|
os = drbd_read_state(mdev);
|
||||||
ns = apply_mask_val(os, mask, val);
|
ns = apply_mask_val(os, mask, val);
|
||||||
ns = sanitize_state(mdev, ns, NULL);
|
ns = sanitize_state(mdev, ns, NULL);
|
||||||
|
@ -1625,6 +1620,16 @@ conn_set_state(struct drbd_tconn *tconn, union drbd_state mask, union drbd_state
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
if (number_of_volumes == 0) {
|
||||||
|
ns_min = ns_max = (union drbd_state) { {
|
||||||
|
.role = R_SECONDARY,
|
||||||
|
.peer = R_UNKNOWN,
|
||||||
|
.conn = val.conn,
|
||||||
|
.disk = D_DISKLESS,
|
||||||
|
.pdsk = D_UNKNOWN
|
||||||
|
} };
|
||||||
|
}
|
||||||
|
|
||||||
ns_min.susp = ns_max.susp = tconn->susp;
|
ns_min.susp = ns_max.susp = tconn->susp;
|
||||||
ns_min.susp_nod = ns_max.susp_nod = tconn->susp_nod;
|
ns_min.susp_nod = ns_max.susp_nod = tconn->susp_nod;
|
||||||
ns_min.susp_fen = ns_max.susp_fen = tconn->susp_fen;
|
ns_min.susp_fen = ns_max.susp_fen = tconn->susp_fen;
|
||||||
|
|
Loading…
Reference in New Issue