Message ID | 86d17a2e18327c7dfd43b9644d2f51e3a7980a13.1457539274.git.berto@igalia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 09.03.2016 17:11, Alberto Garcia wrote: > 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> > --- > monitor.c | 9 +++++++++ > 1 file changed, 9 insertions(+) Reviewed-by: Max Reitz <mreitz@redhat.com>
diff --git a/monitor.c b/monitor.c index e99ca8c..c9fe862 100644 --- a/monitor.c +++ b/monitor.c @@ -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; }
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> --- monitor.c | 9 +++++++++ 1 file changed, 9 insertions(+)