diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2017-01-20 21:53:13 +0100 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2017-01-20 23:55:50 +0100 |
commit | e5bef508275f7d9889062f8e15e39aa63a9a938e (patch) | |
tree | 2d17e6373e453c2bfc9347cb0db2c77aed7cd424 | |
parent | 0d945ddbad82686aa590a2e566807723d66be1a7 (diff) | |
download | lvm2-e5bef508275f7d9889062f8e15e39aa63a9a938e.tar.gz |
dmeventd_thin: better warning logic
When fullness is passing WARN_THRESHOLD, print warning,
when it drops bellow and crossed again, we should print
warning again, but always only once.
-rw-r--r-- | daemons/dmeventd/plugins/thin/dmeventd_thin.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/daemons/dmeventd/plugins/thin/dmeventd_thin.c b/daemons/dmeventd/plugins/thin/dmeventd_thin.c index ff127be14..b436524e1 100644 --- a/daemons/dmeventd/plugins/thin/dmeventd_thin.c +++ b/daemons/dmeventd/plugins/thin/dmeventd_thin.c @@ -48,8 +48,10 @@ struct dso_state { struct dm_pool *mem; int metadata_percent_check; int metadata_percent; + int metadata_warn_once; int data_percent_check; int data_percent; + int data_warn_once; uint64_t known_metadata_size; uint64_t known_data_size; unsigned fails; @@ -400,6 +402,11 @@ void process_event(struct dm_task *dmt, } state->metadata_percent = dm_make_percent(tps->used_metadata_blocks, tps->total_metadata_blocks); + if (state->metadata_percent <= WARNING_THRESH) + state->metadata_warn_once = 0; /* Dropped bellow threshold, reset warn once */ + else if (!state->metadata_warn_once++) /* Warn once when raised above threshold */ + log_warn("WARNING: Thin pool %s metadata is now %.2f%% full.", + device, dm_percent_to_float(state->metadata_percent)); if (state->metadata_percent >= state->metadata_percent_check) { /* * Usage has raised more than CHECK_STEP since the last @@ -407,10 +414,6 @@ void process_event(struct dm_task *dmt, */ state->metadata_percent_check = (state->metadata_percent / CHECK_STEP) * CHECK_STEP + CHECK_STEP; - /* FIXME: extension of metadata needs to be written! */ - if (state->metadata_percent >= WARNING_THRESH) - log_warn("WARNING: Thin pool %s metadata is now %.2f%% full.", - device, dm_percent_to_float(state->metadata_percent)); needs_policy = 1; if (state->metadata_percent >= UMOUNT_THRESH) @@ -418,6 +421,11 @@ void process_event(struct dm_task *dmt, } state->data_percent = dm_make_percent(tps->used_data_blocks, tps->total_data_blocks); + if (state->data_percent <= WARNING_THRESH) + state->data_warn_once = 0; + else if (!state->data_warn_once++) + log_warn("WARNING: Thin pool %s data is now %.2f%% full.", + device, dm_percent_to_float(state->data_percent)); if (state->data_percent >= state->data_percent_check) { /* * Usage has raised more than CHECK_STEP since @@ -425,9 +433,6 @@ void process_event(struct dm_task *dmt, */ state->data_percent_check = (state->data_percent / CHECK_STEP) * CHECK_STEP + CHECK_STEP; - if (state->data_percent >= WARNING_THRESH) - log_warn("WARNING: Thin pool %s data is now %.2f%% full.", - device, dm_percent_to_float(state->data_percent)); needs_policy = 1; if (state->data_percent >= UMOUNT_THRESH) |