Skip to content

Commit 72f6fe1

Browse files
Norton.Zhutorvalds
authored andcommitted
ocfs2: optimize error handling in dlm_request_join
Currently error handling in dlm_request_join is a little obscure, so optimize it to promote readability. If packet.code is invalid, reset it to JOIN_DISALLOW to keep it meaningful. It only influences the log printing. Signed-off-by: Norton.Zhu <[email protected]> Cc: Srinivas Eeda <[email protected]> Reviewed-by: Mark Fasheh <[email protected]> Cc: Joel Becker <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 928dda1 commit 72f6fe1

File tree

1 file changed

+39
-32
lines changed

1 file changed

+39
-32
lines changed

fs/ocfs2/dlm/dlmdomain.c

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1465,39 +1465,46 @@ static int dlm_request_join(struct dlm_ctxt *dlm,
14651465
if (status == -ENOPROTOOPT) {
14661466
status = 0;
14671467
*response = JOIN_OK_NO_MAP;
1468-
} else if (packet.code == JOIN_DISALLOW ||
1469-
packet.code == JOIN_OK_NO_MAP) {
1470-
*response = packet.code;
1471-
} else if (packet.code == JOIN_PROTOCOL_MISMATCH) {
1472-
mlog(ML_NOTICE,
1473-
"This node requested DLM locking protocol %u.%u and "
1474-
"filesystem locking protocol %u.%u. At least one of "
1475-
"the protocol versions on node %d is not compatible, "
1476-
"disconnecting\n",
1477-
dlm->dlm_locking_proto.pv_major,
1478-
dlm->dlm_locking_proto.pv_minor,
1479-
dlm->fs_locking_proto.pv_major,
1480-
dlm->fs_locking_proto.pv_minor,
1481-
node);
1482-
status = -EPROTO;
1483-
*response = packet.code;
1484-
} else if (packet.code == JOIN_OK) {
1485-
*response = packet.code;
1486-
/* Use the same locking protocol as the remote node */
1487-
dlm->dlm_locking_proto.pv_minor = packet.dlm_minor;
1488-
dlm->fs_locking_proto.pv_minor = packet.fs_minor;
1489-
mlog(0,
1490-
"Node %d responds JOIN_OK with DLM locking protocol "
1491-
"%u.%u and fs locking protocol %u.%u\n",
1492-
node,
1493-
dlm->dlm_locking_proto.pv_major,
1494-
dlm->dlm_locking_proto.pv_minor,
1495-
dlm->fs_locking_proto.pv_major,
1496-
dlm->fs_locking_proto.pv_minor);
14971468
} else {
1498-
status = -EINVAL;
1499-
mlog(ML_ERROR, "invalid response %d from node %u\n",
1500-
packet.code, node);
1469+
*response = packet.code;
1470+
switch (packet.code) {
1471+
case JOIN_DISALLOW:
1472+
case JOIN_OK_NO_MAP:
1473+
break;
1474+
case JOIN_PROTOCOL_MISMATCH:
1475+
mlog(ML_NOTICE,
1476+
"This node requested DLM locking protocol %u.%u and "
1477+
"filesystem locking protocol %u.%u. At least one of "
1478+
"the protocol versions on node %d is not compatible, "
1479+
"disconnecting\n",
1480+
dlm->dlm_locking_proto.pv_major,
1481+
dlm->dlm_locking_proto.pv_minor,
1482+
dlm->fs_locking_proto.pv_major,
1483+
dlm->fs_locking_proto.pv_minor,
1484+
node);
1485+
status = -EPROTO;
1486+
break;
1487+
case JOIN_OK:
1488+
/* Use the same locking protocol as the remote node */
1489+
dlm->dlm_locking_proto.pv_minor = packet.dlm_minor;
1490+
dlm->fs_locking_proto.pv_minor = packet.fs_minor;
1491+
mlog(0,
1492+
"Node %d responds JOIN_OK with DLM locking protocol "
1493+
"%u.%u and fs locking protocol %u.%u\n",
1494+
node,
1495+
dlm->dlm_locking_proto.pv_major,
1496+
dlm->dlm_locking_proto.pv_minor,
1497+
dlm->fs_locking_proto.pv_major,
1498+
dlm->fs_locking_proto.pv_minor);
1499+
break;
1500+
default:
1501+
status = -EINVAL;
1502+
mlog(ML_ERROR, "invalid response %d from node %u\n",
1503+
packet.code, node);
1504+
/* Reset response to JOIN_DISALLOW */
1505+
*response = JOIN_DISALLOW;
1506+
break;
1507+
}
15011508
}
15021509

15031510
mlog(0, "status %d, node %d response is %d\n", status, node,

0 commit comments

Comments
 (0)