mirror of https://gitee.com/openkylin/qemu.git
monitor: Separate QUORUM_REPORT_BAD events according to the node name
The QUORUM_REPORT_BAD event is emitted whenever there's an I/O error in a child of a Quorum device. This event is emitted at a maximum rate of 1 per second. This means that an error in one of the children will mask errors in the other children if they happen within the same 1 second interval. This patch modifies qapi_event_throttle_equal() so QUORUM_REPORT_BAD events are kept separately if they come from different children. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-id: b989c0cb3755bc4b6696e796fa8ed2ef6c56606a.1457610443.git.berto@igalia.com Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
b9c600d207
commit
6d425eb94d
|
@ -572,6 +572,10 @@ static unsigned int qapi_event_throttle_hash(const void *key)
|
|||
hash += g_str_hash(qdict_get_str(evstate->data, "id"));
|
||||
}
|
||||
|
||||
if (evstate->event == QAPI_EVENT_QUORUM_REPORT_BAD) {
|
||||
hash += g_str_hash(qdict_get_str(evstate->data, "node-name"));
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
||||
|
@ -589,6 +593,11 @@ static gboolean qapi_event_throttle_equal(const void *a, const void *b)
|
|||
qdict_get_str(evb->data, "id"));
|
||||
}
|
||||
|
||||
if (eva->event == QAPI_EVENT_QUORUM_REPORT_BAD) {
|
||||
return !strcmp(qdict_get_str(eva->data, "node-name"),
|
||||
qdict_get_str(evb->data, "node-name"));
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue