mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-10 16:58:47 +03:00
log: annotate processing code with report_current_object_cmdlog
This commit is contained in:
parent
6ca28ca4c6
commit
0ab1187740
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.158 -
|
Version 2.02.158 -
|
||||||
=================================
|
=================================
|
||||||
|
Report per-object return codes via cmd log while processing multiple objects.
|
||||||
Annotate processing code with log report hooks for per-object command log.
|
Annotate processing code with log report hooks for per-object command log.
|
||||||
Also pass common printed messages (besides warnings and errors) to log report.
|
Also pass common printed messages (besides warnings and errors) to log report.
|
||||||
Log warnings and errors via report during cmd processing if this is enabled.
|
Log warnings and errors via report during cmd processing if this is enabled.
|
||||||
|
@ -111,6 +111,9 @@ int report_cmdlog(void *handle, const char *type, const char *context,
|
|||||||
const char *object_id, const char *object_group,
|
const char *object_id, const char *object_group,
|
||||||
const char *object_group_id, const char *msg,
|
const char *object_group_id, const char *msg,
|
||||||
int current_errno, int ret_code);
|
int current_errno, int ret_code);
|
||||||
|
#define REPORT_OBJECT_CMDLOG_NAME "status"
|
||||||
|
#define REPORT_OBJECT_CMDLOG_SUCCESS "success"
|
||||||
|
#define REPORT_OBJECT_CMDLOG_FAILURE "failure"
|
||||||
int report_current_object_cmdlog(const char *type, const char *msg, int32_t ret_code);
|
int report_current_object_cmdlog(const char *type, const char *msg, int32_t ret_code);
|
||||||
int report_output(void *handle);
|
int report_output(void *handle);
|
||||||
|
|
||||||
|
@ -22,6 +22,10 @@
|
|||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
|
#define report_log_ret_code(ret_code) report_current_object_cmdlog(REPORT_OBJECT_CMDLOG_NAME, \
|
||||||
|
ret_code == ECMD_PROCESSED ? REPORT_OBJECT_CMDLOG_SUCCESS \
|
||||||
|
: REPORT_OBJECT_CMDLOG_FAILURE, ret_code)
|
||||||
|
|
||||||
struct device_id_list {
|
struct device_id_list {
|
||||||
struct dm_list list;
|
struct dm_list list;
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
@ -1862,6 +1866,7 @@ static int _process_vgnameid_list(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
int notfound;
|
int notfound;
|
||||||
int process_all = 0;
|
int process_all = 0;
|
||||||
int already_locked;
|
int already_locked;
|
||||||
|
int do_report_ret_code = 1;
|
||||||
|
|
||||||
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_VG);
|
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_VG);
|
||||||
|
|
||||||
@ -1896,6 +1901,7 @@ static int _process_vgnameid_list(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
|
|
||||||
if (!lockd_vg(cmd, vg_name, NULL, 0, &lockd_state)) {
|
if (!lockd_vg(cmd, vg_name, NULL, 0, &lockd_state)) {
|
||||||
ret_max = ECMD_FAILED;
|
ret_max = ECMD_FAILED;
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1905,6 +1911,7 @@ static int _process_vgnameid_list(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
if (_ignore_vg(vg, vg_name, arg_vgnames, read_flags, &skip, ¬found)) {
|
if (_ignore_vg(vg, vg_name, arg_vgnames, read_flags, &skip, ¬found)) {
|
||||||
stack;
|
stack;
|
||||||
ret_max = ECMD_FAILED;
|
ret_max = ECMD_FAILED;
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
goto endvg;
|
goto endvg;
|
||||||
}
|
}
|
||||||
if (skip || notfound)
|
if (skip || notfound)
|
||||||
@ -1922,6 +1929,7 @@ static int _process_vgnameid_list(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
_update_selection_result(handle, &whole_selected);
|
_update_selection_result(handle, &whole_selected);
|
||||||
if (ret != ECMD_PROCESSED)
|
if (ret != ECMD_PROCESSED)
|
||||||
stack;
|
stack;
|
||||||
|
report_log_ret_code(ret);
|
||||||
if (ret > ret_max)
|
if (ret > ret_max)
|
||||||
ret_max = ret;
|
ret_max = ret;
|
||||||
}
|
}
|
||||||
@ -1935,10 +1943,12 @@ endvg:
|
|||||||
|
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
log_set_report_object_name_and_id(NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the VG is selected if at least one LV is selected */
|
/* the VG is selected if at least one LV is selected */
|
||||||
_set_final_selection_result(handle, whole_selected);
|
_set_final_selection_result(handle, whole_selected);
|
||||||
|
do_report_ret_code = 0;
|
||||||
out:
|
out:
|
||||||
|
if (do_report_ret_code)
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
log_restore_report_state(saved_log_report_state);
|
log_restore_report_state(saved_log_report_state);
|
||||||
return ret_max;
|
return ret_max;
|
||||||
}
|
}
|
||||||
@ -2304,6 +2314,7 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
struct dm_list final_lvs;
|
struct dm_list final_lvs;
|
||||||
struct lv_list *final_lvl;
|
struct lv_list *final_lvl;
|
||||||
struct glv_list *glvl, *tglvl;
|
struct glv_list *glvl, *tglvl;
|
||||||
|
int do_report_ret_code = 1;
|
||||||
|
|
||||||
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_LV);
|
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_LV);
|
||||||
|
|
||||||
@ -2459,11 +2470,12 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
_update_selection_result(handle, &whole_selected);
|
_update_selection_result(handle, &whole_selected);
|
||||||
if (ret != ECMD_PROCESSED)
|
if (ret != ECMD_PROCESSED)
|
||||||
stack;
|
stack;
|
||||||
|
report_log_ret_code(ret);
|
||||||
if (ret > ret_max)
|
if (ret > ret_max)
|
||||||
ret_max = ret;
|
ret_max = ret;
|
||||||
|
|
||||||
if (stop_on_error && ret != ECMD_PROCESSED) {
|
if (stop_on_error && ret != ECMD_PROCESSED) {
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
do_report_ret_code = 0;
|
||||||
goto_out;
|
goto_out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2509,11 +2521,12 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
_update_selection_result(handle, &whole_selected);
|
_update_selection_result(handle, &whole_selected);
|
||||||
if (ret != ECMD_PROCESSED)
|
if (ret != ECMD_PROCESSED)
|
||||||
stack;
|
stack;
|
||||||
|
report_log_ret_code(ret);
|
||||||
if (ret > ret_max)
|
if (ret > ret_max)
|
||||||
ret_max = ret;
|
ret_max = ret;
|
||||||
|
|
||||||
if (stop_on_error && ret != ECMD_PROCESSED) {
|
if (stop_on_error && ret != ECMD_PROCESSED) {
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
do_report_ret_code = 0;
|
||||||
goto_out;
|
goto_out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2531,9 +2544,13 @@ int process_each_lv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
vg->name, sl->str);
|
vg->name, sl->str);
|
||||||
if (ret_max < ECMD_FAILED)
|
if (ret_max < ECMD_FAILED)
|
||||||
ret_max = ECMD_FAILED;
|
ret_max = ECMD_FAILED;
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
do_report_ret_code = 0;
|
||||||
out:
|
out:
|
||||||
|
if (do_report_ret_code)
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
log_set_report_object_name_and_id(NULL, NULL);
|
||||||
log_set_report_object_group_and_group_id(NULL, NULL);
|
log_set_report_object_group_and_group_id(NULL, NULL);
|
||||||
if (!handle_supplied)
|
if (!handle_supplied)
|
||||||
@ -2701,6 +2718,7 @@ static int _process_lv_vgnameid_list(struct cmd_context *cmd, uint32_t read_flag
|
|||||||
int skip;
|
int skip;
|
||||||
int notfound;
|
int notfound;
|
||||||
int already_locked;
|
int already_locked;
|
||||||
|
int do_report_ret_code = 1;
|
||||||
|
|
||||||
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_VG);
|
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_VG);
|
||||||
|
|
||||||
@ -2756,6 +2774,7 @@ static int _process_lv_vgnameid_list(struct cmd_context *cmd, uint32_t read_flag
|
|||||||
|
|
||||||
if (!lockd_vg(cmd, vg_name, NULL, 0, &lockd_state)) {
|
if (!lockd_vg(cmd, vg_name, NULL, 0, &lockd_state)) {
|
||||||
ret_max = ECMD_FAILED;
|
ret_max = ECMD_FAILED;
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2765,6 +2784,7 @@ static int _process_lv_vgnameid_list(struct cmd_context *cmd, uint32_t read_flag
|
|||||||
if (_ignore_vg(vg, vg_name, arg_vgnames, read_flags, &skip, ¬found)) {
|
if (_ignore_vg(vg, vg_name, arg_vgnames, read_flags, &skip, ¬found)) {
|
||||||
stack;
|
stack;
|
||||||
ret_max = ECMD_FAILED;
|
ret_max = ECMD_FAILED;
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
goto endvg;
|
goto endvg;
|
||||||
}
|
}
|
||||||
if (skip || notfound)
|
if (skip || notfound)
|
||||||
@ -2774,6 +2794,7 @@ static int _process_lv_vgnameid_list(struct cmd_context *cmd, uint32_t read_flag
|
|||||||
handle, process_single_lv);
|
handle, process_single_lv);
|
||||||
if (ret != ECMD_PROCESSED)
|
if (ret != ECMD_PROCESSED)
|
||||||
stack;
|
stack;
|
||||||
|
report_log_ret_code(ret);
|
||||||
if (ret > ret_max)
|
if (ret > ret_max)
|
||||||
ret_max = ret;
|
ret_max = ret;
|
||||||
|
|
||||||
@ -2785,7 +2806,10 @@ endvg:
|
|||||||
stack;
|
stack;
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
log_set_report_object_name_and_id(NULL, NULL);
|
||||||
}
|
}
|
||||||
|
do_report_ret_code = 0;
|
||||||
out:
|
out:
|
||||||
|
if (do_report_ret_code)
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
log_restore_report_state(saved_log_report_state);
|
log_restore_report_state(saved_log_report_state);
|
||||||
return ret_max;
|
return ret_max;
|
||||||
}
|
}
|
||||||
@ -3253,6 +3277,7 @@ static int _process_pvs_in_vg(struct cmd_context *cmd,
|
|||||||
struct device_id_list *dil;
|
struct device_id_list *dil;
|
||||||
const char *pv_name;
|
const char *pv_name;
|
||||||
int process_pv;
|
int process_pv;
|
||||||
|
int do_report_ret_code = 1;
|
||||||
int ret_max = ECMD_PROCESSED;
|
int ret_max = ECMD_PROCESSED;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
@ -3327,6 +3352,7 @@ static int _process_pvs_in_vg(struct cmd_context *cmd,
|
|||||||
ret = process_single_pv(cmd, vg, pv, handle);
|
ret = process_single_pv(cmd, vg, pv, handle);
|
||||||
if (ret != ECMD_PROCESSED)
|
if (ret != ECMD_PROCESSED)
|
||||||
stack;
|
stack;
|
||||||
|
report_log_ret_code(ret);
|
||||||
if (ret > ret_max)
|
if (ret > ret_max)
|
||||||
ret_max = ret;
|
ret_max = ret;
|
||||||
}
|
}
|
||||||
@ -3339,7 +3365,10 @@ static int _process_pvs_in_vg(struct cmd_context *cmd,
|
|||||||
break;
|
break;
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
log_set_report_object_name_and_id(NULL, NULL);
|
||||||
}
|
}
|
||||||
|
do_report_ret_code = 0;
|
||||||
out:
|
out:
|
||||||
|
if (do_report_ret_code)
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
log_set_report_object_name_and_id(NULL, NULL);
|
||||||
log_set_report_object_group_and_group_id(NULL, NULL);
|
log_set_report_object_group_and_group_id(NULL, NULL);
|
||||||
if (!handle_supplied)
|
if (!handle_supplied)
|
||||||
@ -3382,6 +3411,7 @@ static int _process_pvs_in_vgs(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
int skip;
|
int skip;
|
||||||
int notfound;
|
int notfound;
|
||||||
int already_locked;
|
int already_locked;
|
||||||
|
int do_report_ret_code;
|
||||||
|
|
||||||
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_VG);
|
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_VG);
|
||||||
|
|
||||||
@ -3405,6 +3435,7 @@ static int _process_pvs_in_vgs(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
|
|
||||||
if (!lockd_vg(cmd, vg_name, NULL, 0, &lockd_state)) {
|
if (!lockd_vg(cmd, vg_name, NULL, 0, &lockd_state)) {
|
||||||
ret_max = ECMD_FAILED;
|
ret_max = ECMD_FAILED;
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3416,6 +3447,7 @@ static int _process_pvs_in_vgs(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
if (_ignore_vg(vg, vg_name, NULL, read_flags, &skip, ¬found)) {
|
if (_ignore_vg(vg, vg_name, NULL, read_flags, &skip, ¬found)) {
|
||||||
stack;
|
stack;
|
||||||
ret_max = ECMD_FAILED;
|
ret_max = ECMD_FAILED;
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
if (!skip)
|
if (!skip)
|
||||||
goto endvg;
|
goto endvg;
|
||||||
/* Drop through to eliminate a clustered VG's PVs from the devices list */
|
/* Drop through to eliminate a clustered VG's PVs from the devices list */
|
||||||
@ -3433,6 +3465,7 @@ static int _process_pvs_in_vgs(struct cmd_context *cmd, uint32_t read_flags,
|
|||||||
handle, process_single_pv);
|
handle, process_single_pv);
|
||||||
if (ret != ECMD_PROCESSED)
|
if (ret != ECMD_PROCESSED)
|
||||||
stack;
|
stack;
|
||||||
|
report_log_ret_code(ret);
|
||||||
if (ret > ret_max)
|
if (ret > ret_max)
|
||||||
ret_max = ret;
|
ret_max = ret;
|
||||||
|
|
||||||
@ -3444,12 +3477,17 @@ endvg:
|
|||||||
stack;
|
stack;
|
||||||
|
|
||||||
/* Quit early when possible. */
|
/* Quit early when possible. */
|
||||||
if (!process_all_pvs && dm_list_empty(arg_tags) && dm_list_empty(arg_devices))
|
if (!process_all_pvs && dm_list_empty(arg_tags) && dm_list_empty(arg_devices)) {
|
||||||
|
do_report_ret_code = 0;
|
||||||
goto_out;
|
goto_out;
|
||||||
|
}
|
||||||
|
|
||||||
log_set_report_object_name_and_id(NULL, NULL);
|
log_set_report_object_name_and_id(NULL, NULL);
|
||||||
}
|
}
|
||||||
|
do_report_ret_code = 0;
|
||||||
out:
|
out:
|
||||||
|
if (do_report_ret_code)
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
log_restore_report_state(saved_log_report_state);
|
log_restore_report_state(saved_log_report_state);
|
||||||
return ret_max;
|
return ret_max;
|
||||||
}
|
}
|
||||||
@ -3695,6 +3733,7 @@ int process_each_pv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
int whole_selected = 0;
|
int whole_selected = 0;
|
||||||
int ret_max = ECMD_PROCESSED;
|
int ret_max = ECMD_PROCESSED;
|
||||||
int ret;
|
int ret;
|
||||||
|
int do_report_ret_code = 1;
|
||||||
struct pv_list *pvl;
|
struct pv_list *pvl;
|
||||||
|
|
||||||
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_PV);
|
log_set_report_object_type(LOG_REPORT_OBJECT_TYPE_PV);
|
||||||
@ -3721,6 +3760,7 @@ int process_each_pv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
_update_selection_result(handle, &whole_selected);
|
_update_selection_result(handle, &whole_selected);
|
||||||
if (ret != ECMD_PROCESSED)
|
if (ret != ECMD_PROCESSED)
|
||||||
stack;
|
stack;
|
||||||
|
report_log_ret_code(ret);
|
||||||
if (ret > ret_max)
|
if (ret > ret_max)
|
||||||
ret_max = ret;
|
ret_max = ret;
|
||||||
|
|
||||||
@ -3728,7 +3768,10 @@ int process_each_pv_in_vg(struct cmd_context *cmd, struct volume_group *vg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
_set_final_selection_result(handle, whole_selected);
|
_set_final_selection_result(handle, whole_selected);
|
||||||
|
do_report_ret_code = 0;
|
||||||
out:
|
out:
|
||||||
|
if (do_report_ret_code)
|
||||||
|
report_log_ret_code(ret_max);
|
||||||
log_restore_report_state(saved_log_report_state);
|
log_restore_report_state(saved_log_report_state);
|
||||||
return ret_max;
|
return ret_max;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user