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:
parent
77997c7673
commit
dd19b56985
@ -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.
|
||||||
|
@ -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, ¶ms);
|
dm_get_next_target(dmt, next, &start, &length, &target_type, ¶ms);
|
||||||
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user