mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-18 10:04:20 +03:00
Thin use helper function
Fix some minor outstading issue from thin plugin introduction - Call dmeventd_lvm2_exit() in failpath for registration. Add some missing '\n' in syslog messages.
This commit is contained in:
parent
8527b92738
commit
ed1289140e
@ -42,14 +42,13 @@ struct dso_state {
|
|||||||
int data_percent_check;
|
int data_percent_check;
|
||||||
uint64_t known_meta_size;
|
uint64_t known_meta_size;
|
||||||
uint64_t known_data_size;
|
uint64_t known_data_size;
|
||||||
char *vg, *lv, *layer;
|
|
||||||
char cmd_str[1024];
|
char cmd_str[1024];
|
||||||
};
|
};
|
||||||
|
|
||||||
static int _extend(struct dso_state *state)
|
static int _extend(struct dso_state *state)
|
||||||
{
|
{
|
||||||
#if THIN_DEBUG
|
#if THIN_DEBUG
|
||||||
syslog(LOG_INFO, "dmeventd executes: %s.", state->cmd_str);
|
syslog(LOG_INFO, "dmeventd executes: %s.\n", state->cmd_str);
|
||||||
#endif
|
#endif
|
||||||
return (dmeventd_lvm2_run(state->cmd_str) == ECMD_PROCESSED);
|
return (dmeventd_lvm2_run(state->cmd_str) == ECMD_PROCESSED);
|
||||||
}
|
}
|
||||||
@ -159,7 +158,7 @@ void process_event(struct dm_task *dmt,
|
|||||||
dm_get_next_target(dmt, next, &start, &length, &target_type, ¶ms);
|
dm_get_next_target(dmt, next, &start, &length, &target_type, ¶ms);
|
||||||
|
|
||||||
if (!target_type || (strcmp(target_type, "thin-pool") != 0)) {
|
if (!target_type || (strcmp(target_type, "thin-pool") != 0)) {
|
||||||
syslog(LOG_ERR, "Invalid targe type.\n");
|
syslog(LOG_ERR, "Invalid target type.\n");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,18 +243,19 @@ int register_device(const char *device,
|
|||||||
struct dm_pool *statemem = NULL;
|
struct dm_pool *statemem = NULL;
|
||||||
struct dso_state *state;
|
struct dso_state *state;
|
||||||
|
|
||||||
if (!dmeventd_lvm2_init() ||
|
if (!dmeventd_lvm2_init())
|
||||||
!(statemem = dm_pool_create("thin_pool_state", 2048)) ||
|
goto bad;
|
||||||
|
|
||||||
|
if (!(statemem = dm_pool_create("thin_pool_state", 2048)) ||
|
||||||
!(state = dm_pool_zalloc(statemem, sizeof(*state))) ||
|
!(state = dm_pool_zalloc(statemem, sizeof(*state))) ||
|
||||||
!dm_split_lvm_name(statemem, device, &state->vg, &state->lv,
|
!dmeventd_lvm2_command(statemem, state->cmd_str,
|
||||||
&state->layer) ||
|
sizeof(state->cmd_str),
|
||||||
(dm_snprintf(state->cmd_str, sizeof(state->cmd_str),
|
"lvextend --use-policies",
|
||||||
"lvextend --use-policies %s/%s", state->vg, state->lv) < 0)) {
|
device)) {
|
||||||
syslog(LOG_ERR, "Failed to monitor thin %s.\n", device);
|
|
||||||
if (statemem)
|
if (statemem)
|
||||||
dm_pool_destroy(statemem);
|
dm_pool_destroy(statemem);
|
||||||
|
dmeventd_lvm2_exit();
|
||||||
return 0;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
state->mem = statemem;
|
state->mem = statemem;
|
||||||
@ -266,6 +266,10 @@ int register_device(const char *device,
|
|||||||
syslog(LOG_INFO, "Monitoring thin %s.\n", device);
|
syslog(LOG_INFO, "Monitoring thin %s.\n", device);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
bad:
|
||||||
|
syslog(LOG_ERR, "Failed to monitor thin %s.\n", device);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int unregister_device(const char *device,
|
int unregister_device(const char *device,
|
||||||
@ -276,10 +280,9 @@ int unregister_device(const char *device,
|
|||||||
{
|
{
|
||||||
struct dso_state *state = *private;
|
struct dso_state *state = *private;
|
||||||
|
|
||||||
|
syslog(LOG_INFO, "No longer monitoring thin %s.\n", device);
|
||||||
dm_pool_destroy(state->mem);
|
dm_pool_destroy(state->mem);
|
||||||
dmeventd_lvm2_exit();
|
dmeventd_lvm2_exit();
|
||||||
|
|
||||||
syslog(LOG_INFO, "No longer monitoring thin %s.\n", device);
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user