diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2017-01-18 14:06:29 +0100 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2017-01-20 23:55:50 +0100 |
commit | 0d945ddbad82686aa590a2e566807723d66be1a7 (patch) | |
tree | c3967ae4c43055ab463712c2b2fa6c707f1c9dc7 /daemons/dmeventd/plugins | |
parent | eca964b554e371f699758ebfa0837f2e7a8cba87 (diff) | |
download | lvm2-0d945ddbad82686aa590a2e566807723d66be1a7.tar.gz |
dmeventd_thin: switch to struct percent
Later we can use stored percent values to pass them
to executed commands.
Diffstat (limited to 'daemons/dmeventd/plugins')
-rw-r--r-- | daemons/dmeventd/plugins/thin/dmeventd_thin.c | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/daemons/dmeventd/plugins/thin/dmeventd_thin.c b/daemons/dmeventd/plugins/thin/dmeventd_thin.c index 65de4651f..ff127be14 100644 --- a/daemons/dmeventd/plugins/thin/dmeventd_thin.c +++ b/daemons/dmeventd/plugins/thin/dmeventd_thin.c @@ -47,7 +47,9 @@ struct dso_state { struct dm_pool *mem; int metadata_percent_check; + int metadata_percent; int data_percent_check; + int data_percent; uint64_t known_metadata_size; uint64_t known_data_size; unsigned fails; @@ -319,7 +321,6 @@ void process_event(struct dm_task *dmt, void **user) { const char *device = dm_task_get_name(dmt); - int percent; struct dso_state *state = *user; struct dm_status_thin_pool *tps = NULL; void *next = NULL; @@ -336,13 +337,9 @@ void process_event(struct dm_task *dmt, dm_percent_to_float(state->metadata_percent_check)); #endif -#if 0 - /* No longer monitoring, waiting for remove */ - if (!state->meta_percent_check && !state->data_percent_check) - return; -#endif if (event & DM_EVENT_DEVICE_ERROR) { /* Error -> no need to check and do instant resize */ + state->data_percent = state->metadata_percent = 0; if (_use_policy(dmt, state)) goto out; @@ -402,38 +399,38 @@ void process_event(struct dm_task *dmt, state->known_data_size = tps->total_data_blocks; } - percent = dm_make_percent(tps->used_metadata_blocks, tps->total_metadata_blocks); - if (percent >= state->metadata_percent_check) { + state->metadata_percent = dm_make_percent(tps->used_metadata_blocks, tps->total_metadata_blocks); + if (state->metadata_percent >= state->metadata_percent_check) { /* * Usage has raised more than CHECK_STEP since the last * time. Run actions. */ - state->metadata_percent_check = (percent / CHECK_STEP) * CHECK_STEP + CHECK_STEP; + state->metadata_percent_check = (state->metadata_percent / CHECK_STEP) * CHECK_STEP + CHECK_STEP; /* FIXME: extension of metadata needs to be written! */ - if (percent >= WARNING_THRESH) /* Print a warning to syslog. */ + if (state->metadata_percent >= WARNING_THRESH) log_warn("WARNING: Thin pool %s metadata is now %.2f%% full.", - device, dm_percent_to_float(percent)); + device, dm_percent_to_float(state->metadata_percent)); needs_policy = 1; - if (percent >= UMOUNT_THRESH) + if (state->metadata_percent >= UMOUNT_THRESH) needs_umount = 1; } - percent = dm_make_percent(tps->used_data_blocks, tps->total_data_blocks); - if (percent >= state->data_percent_check) { + state->data_percent = dm_make_percent(tps->used_data_blocks, tps->total_data_blocks); + if (state->data_percent >= state->data_percent_check) { /* * Usage has raised more than CHECK_STEP since * the last time. Run actions. */ - state->data_percent_check = (percent / CHECK_STEP) * CHECK_STEP + CHECK_STEP; + state->data_percent_check = (state->data_percent / CHECK_STEP) * CHECK_STEP + CHECK_STEP; - if (percent >= WARNING_THRESH) /* Print a warning to syslog. */ + if (state->data_percent >= WARNING_THRESH) log_warn("WARNING: Thin pool %s data is now %.2f%% full.", - device, dm_percent_to_float(percent)); + device, dm_percent_to_float(state->data_percent)); needs_policy = 1; - if (percent >= UMOUNT_THRESH) + if (state->data_percent >= UMOUNT_THRESH) needs_umount = 1; } |