1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

thin: refresh status when error processing fails

When thin-pool processes event and 'lvextend --use-policies' fails
rather capture up-to-date new info as the fullness percentage may
have jumped noticable. This way we could use 'more' correct numbers
when checking for thresholds.
This commit is contained in:
Zdenek Kabelac 2016-12-22 23:28:04 +01:00
parent 77997c7673
commit dd19b56985
2 changed files with 27 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 1.02.138 - Version 1.02.138 -
===================================== =====================================
Thin dmeventd plugin reacts faster on lvextend failure path with umount.
Add dm_stats_bind_from_fd() to bind a stats handle from a file descriptor. Add dm_stats_bind_from_fd() to bind a stats handle from a file descriptor.
Do not try call callback when reverting activation on error path. Do not try call callback when reverting activation on error path.
Fix file mapping for extents with physically adjacent extents. Fix file mapping for extents with physically adjacent extents.

View File

@ -328,6 +328,7 @@ void process_event(struct dm_task *dmt,
char *params; char *params;
int needs_policy = 0; int needs_policy = 0;
int needs_umount = 0; int needs_umount = 0;
struct dm_task *new_dmt = NULL;
#if THIN_DEBUG #if THIN_DEBUG
log_debug("Watch for tp-data:%.2f%% tp-metadata:%.2f%%.", log_debug("Watch for tp-data:%.2f%% tp-metadata:%.2f%%.",
@ -346,6 +347,28 @@ void process_event(struct dm_task *dmt,
goto out; goto out;
stack; stack;
/*
* Rather update oldish status
* since after 'command' processing
* percentage info could have changed a lot.
* If we would get above UMOUNT_THRESH
* we would wait for next sigalarm.
*/
if (!(new_dmt = dm_task_create(DM_DEVICE_STATUS)))
goto_out;
if (!dm_task_set_uuid(new_dmt, dm_task_get_uuid(dmt)))
goto_out;
/* Non-blocking status read */
if (!dm_task_no_flush(new_dmt))
log_warn("WARNING: Can't set no_flush for dm status.");
if (!dm_task_run(new_dmt))
goto_out;
dmt = new_dmt;
} }
dm_get_next_target(dmt, next, &start, &length, &target_type, &params); dm_get_next_target(dmt, next, &start, &length, &target_type, &params);
@ -433,6 +456,9 @@ out:
device, state->fails); device, state->fails);
pthread_kill(pthread_self(), SIGALRM); pthread_kill(pthread_self(), SIGALRM);
} }
if (new_dmt)
dm_task_destroy(new_dmt);
} }
int register_device(const char *device, int register_device(const char *device,