mirror of
git://sourceware.org/git/lvm2.git
synced 2025-08-30 05:49:28 +03:00
post-release
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
Version 2.02.38 -
|
||||||
|
=================================
|
||||||
|
In script-processing mode, stop if any command fails.
|
||||||
|
Warn if command exits with non-zero status code without a prior log_error.
|
||||||
|
Check lv_count in vg_validate.
|
||||||
|
Add --nameprefixes to reporting tools for field name prefix output format.
|
||||||
|
|
||||||
Version 2.02.37 - 6th June 2008
|
Version 2.02.37 - 6th June 2008
|
||||||
===============================
|
===============================
|
||||||
Make clvmd-cman use a hash rather than an array for node updown info.
|
Make clvmd-cman use a hash rather than an array for node updown info.
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
Version 1.02.27 -
|
||||||
|
===============================
|
||||||
|
|
||||||
Version 1.02.26 - 6th June 2008
|
Version 1.02.26 - 6th June 2008
|
||||||
===============================
|
===============================
|
||||||
Initialise params buffer to empty string in _emit_segment.
|
Initialise params buffer to empty string in _emit_segment.
|
||||||
|
@ -51,6 +51,7 @@ static int _already_logging = 0;
|
|||||||
static int _mirror_in_sync = 0;
|
static int _mirror_in_sync = 0;
|
||||||
static int _dmeventd_monitor = DEFAULT_DMEVENTD_MONITOR;
|
static int _dmeventd_monitor = DEFAULT_DMEVENTD_MONITOR;
|
||||||
static int _ignore_suspended_devices = 0;
|
static int _ignore_suspended_devices = 0;
|
||||||
|
static int _error_message_produced = 0;
|
||||||
|
|
||||||
static lvm2_log_fn_t _lvm2_log_fn = NULL;
|
static lvm2_log_fn_t _lvm2_log_fn = NULL;
|
||||||
|
|
||||||
@ -238,6 +239,16 @@ void init_indent(int indent)
|
|||||||
_indent = indent;
|
_indent = indent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void init_error_message_produced(int error_message_produced)
|
||||||
|
{
|
||||||
|
_error_message_produced = error_message_produced;
|
||||||
|
}
|
||||||
|
|
||||||
|
int error_message_produced(void)
|
||||||
|
{
|
||||||
|
return _error_message_produced;
|
||||||
|
}
|
||||||
|
|
||||||
int test_mode()
|
int test_mode()
|
||||||
{
|
{
|
||||||
return _test;
|
return _test;
|
||||||
@ -322,6 +333,9 @@ void print_log(int level, const char *file, int line, const char *format, ...)
|
|||||||
if (_log_suppress == 2)
|
if (_log_suppress == 2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (level <= _LOG_ERR)
|
||||||
|
_error_message_produced = 1;
|
||||||
|
|
||||||
trformat = _(format);
|
trformat = _(format);
|
||||||
|
|
||||||
if (_lvm2_log_fn) {
|
if (_lvm2_log_fn) {
|
||||||
|
@ -79,6 +79,7 @@ void init_security_level(int level);
|
|||||||
void init_mirror_in_sync(int in_sync);
|
void init_mirror_in_sync(int in_sync);
|
||||||
void init_dmeventd_monitor(int reg);
|
void init_dmeventd_monitor(int reg);
|
||||||
void init_ignore_suspended_devices(int ignore);
|
void init_ignore_suspended_devices(int ignore);
|
||||||
|
void init_error_message_produced(int error_message_produced);
|
||||||
|
|
||||||
void set_cmd_name(const char *cmd_name);
|
void set_cmd_name(const char *cmd_name);
|
||||||
|
|
||||||
@ -94,6 +95,7 @@ int lockingfailed(void);
|
|||||||
int security_level(void);
|
int security_level(void);
|
||||||
int mirror_in_sync(void);
|
int mirror_in_sync(void);
|
||||||
int ignore_suspended_devices(void);
|
int ignore_suspended_devices(void);
|
||||||
|
int error_message_produced(void);
|
||||||
|
|
||||||
#define DMEVENTD_MONITOR_IGNORE -1
|
#define DMEVENTD_MONITOR_IGNORE -1
|
||||||
int dmeventd_monitor_mode(void);
|
int dmeventd_monitor_mode(void);
|
||||||
|
@ -1213,10 +1213,11 @@ int vg_validate(struct volume_group *vg)
|
|||||||
|
|
||||||
if ((lv_count = (uint32_t) list_size(&vg->lvs)) !=
|
if ((lv_count = (uint32_t) list_size(&vg->lvs)) !=
|
||||||
vg->lv_count + 2 * vg->snapshot_count) {
|
vg->lv_count + 2 * vg->snapshot_count) {
|
||||||
log_debug("Internal error: #internal LVs (%u) != #LVs (%"
|
log_error("Internal error: #internal LVs (%u) != #LVs (%"
|
||||||
PRIu32 ") + 2 * #snapshots (%" PRIu32 ") in VG %s",
|
PRIu32 ") + 2 * #snapshots (%" PRIu32 ") in VG %s",
|
||||||
list_size(&vg->lvs), vg->lv_count,
|
list_size(&vg->lvs), vg->lv_count,
|
||||||
vg->snapshot_count, vg->name);
|
vg->snapshot_count, vg->name);
|
||||||
|
r = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
list_iterate_items(lvl, &vg->lvs) {
|
list_iterate_items(lvl, &vg->lvs) {
|
||||||
|
@ -1091,9 +1091,15 @@ void *report_init(struct cmd_context *cmd, const char *format, const char *keys,
|
|||||||
if (headings)
|
if (headings)
|
||||||
report_flags |= DM_REPORT_OUTPUT_HEADINGS;
|
report_flags |= DM_REPORT_OUTPUT_HEADINGS;
|
||||||
|
|
||||||
|
if (field_prefixes)
|
||||||
|
report_flags |= DM_REPORT_OUTPUT_FIELD_NAME_PREFIX;
|
||||||
|
|
||||||
rh = dm_report_init(report_type, _report_types, _fields, format,
|
rh = dm_report_init(report_type, _report_types, _fields, format,
|
||||||
separator, report_flags, keys, cmd);
|
separator, report_flags, keys, cmd);
|
||||||
|
|
||||||
|
if (field_prefixes)
|
||||||
|
dm_report_set_output_field_name_prefix(rh, "lvm2_");
|
||||||
|
|
||||||
return rh;
|
return rh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ arg(monitor_ARG, '\0', "monitor", yes_no_arg, 0)
|
|||||||
arg(config_ARG, '\0', "config", string_arg, 0)
|
arg(config_ARG, '\0', "config", string_arg, 0)
|
||||||
arg(trustcache_ARG, '\0', "trustcache", NULL, 0)
|
arg(trustcache_ARG, '\0', "trustcache", NULL, 0)
|
||||||
arg(ignoremonitoring_ARG, '\0', "ignoremonitoring", NULL, 0)
|
arg(ignoremonitoring_ARG, '\0', "ignoremonitoring", NULL, 0)
|
||||||
arg(prefixes_ARG, '\0', "prefixes", NULL, 0)
|
arg(nameprefixes_ARG, '\0', "nameprefixes", NULL, 0)
|
||||||
|
|
||||||
/* Allow some variations */
|
/* Allow some variations */
|
||||||
arg(resizable_ARG, '\0', "resizable", yes_no_arg, 0)
|
arg(resizable_ARG, '\0', "resizable", yes_no_arg, 0)
|
||||||
|
@ -363,6 +363,7 @@ xx(lvs,
|
|||||||
"\t[-d|--debug]\n"
|
"\t[-d|--debug]\n"
|
||||||
"\t[-h|--help]\n"
|
"\t[-h|--help]\n"
|
||||||
"\t[--ignorelockingfailure]\n"
|
"\t[--ignorelockingfailure]\n"
|
||||||
|
"\t[--nameprefixes]\n"
|
||||||
"\t[--noheadings]\n"
|
"\t[--noheadings]\n"
|
||||||
"\t[--nosuffix]\n"
|
"\t[--nosuffix]\n"
|
||||||
"\t[-o|--options [+]Field[,Field]]\n"
|
"\t[-o|--options [+]Field[,Field]]\n"
|
||||||
@ -377,8 +378,8 @@ xx(lvs,
|
|||||||
"\t[--version]" "\n"
|
"\t[--version]" "\n"
|
||||||
"\t[LogicalVolume[Path] [LogicalVolume[Path]...]]\n",
|
"\t[LogicalVolume[Path] [LogicalVolume[Path]...]]\n",
|
||||||
|
|
||||||
aligned_ARG, all_ARG, ignorelockingfailure_ARG, noheadings_ARG,
|
aligned_ARG, all_ARG, ignorelockingfailure_ARG, nameprefixes_ARG,
|
||||||
nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
|
noheadings_ARG, nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
|
||||||
segments_ARG, separator_ARG, sort_ARG, trustcache_ARG, unbuffered_ARG,
|
segments_ARG, separator_ARG, sort_ARG, trustcache_ARG, unbuffered_ARG,
|
||||||
units_ARG)
|
units_ARG)
|
||||||
|
|
||||||
@ -570,8 +571,9 @@ xx(pvs,
|
|||||||
"\t[-a|--all]\n"
|
"\t[-a|--all]\n"
|
||||||
"\t[-d|--debug]" "\n"
|
"\t[-d|--debug]" "\n"
|
||||||
"\t[-h|-?|--help] " "\n"
|
"\t[-h|-?|--help] " "\n"
|
||||||
"\t[--noheadings]\n"
|
|
||||||
"\t[--ignorelockingfailure]\n"
|
"\t[--ignorelockingfailure]\n"
|
||||||
|
"\t[--nameprefixes]\n"
|
||||||
|
"\t[--noheadings]\n"
|
||||||
"\t[--nosuffix]\n"
|
"\t[--nosuffix]\n"
|
||||||
"\t[-o|--options [+]Field[,Field]]\n"
|
"\t[-o|--options [+]Field[,Field]]\n"
|
||||||
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
|
"\t[-O|--sort [+|-]key1[,[+|-]key2[,...]]]\n"
|
||||||
@ -585,8 +587,8 @@ xx(pvs,
|
|||||||
"\t[--version]\n"
|
"\t[--version]\n"
|
||||||
"\t[PhysicalVolume [PhysicalVolume...]]\n",
|
"\t[PhysicalVolume [PhysicalVolume...]]\n",
|
||||||
|
|
||||||
aligned_ARG, all_ARG, ignorelockingfailure_ARG, noheadings_ARG,
|
aligned_ARG, all_ARG, ignorelockingfailure_ARG, nameprefixes_ARG,
|
||||||
nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
|
noheadings_ARG, nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
|
||||||
segments_ARG, separator_ARG, sort_ARG, trustcache_ARG, unbuffered_ARG,
|
segments_ARG, separator_ARG, sort_ARG, trustcache_ARG, unbuffered_ARG,
|
||||||
units_ARG)
|
units_ARG)
|
||||||
|
|
||||||
@ -887,6 +889,7 @@ xx(vgs,
|
|||||||
"\t[-d|--debug]\n"
|
"\t[-d|--debug]\n"
|
||||||
"\t[-h|--help]\n"
|
"\t[-h|--help]\n"
|
||||||
"\t[--ignorelockingfailure]\n"
|
"\t[--ignorelockingfailure]\n"
|
||||||
|
"\t[--nameprefixes]\n"
|
||||||
"\t[--noheadings]\n"
|
"\t[--noheadings]\n"
|
||||||
"\t[--nosuffix]\n"
|
"\t[--nosuffix]\n"
|
||||||
"\t[-o|--options [+]Field[,Field]]\n"
|
"\t[-o|--options [+]Field[,Field]]\n"
|
||||||
@ -900,8 +903,8 @@ xx(vgs,
|
|||||||
"\t[--version]\n"
|
"\t[--version]\n"
|
||||||
"\t[VolumeGroupName [VolumeGroupName...]]\n",
|
"\t[VolumeGroupName [VolumeGroupName...]]\n",
|
||||||
|
|
||||||
aligned_ARG, all_ARG, ignorelockingfailure_ARG, noheadings_ARG,
|
aligned_ARG, all_ARG, ignorelockingfailure_ARG, nameprefixes_ARG,
|
||||||
nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
|
noheadings_ARG, nolocking_ARG, nosuffix_ARG, options_ARG, partial_ARG,
|
||||||
separator_ARG, sort_ARG, trustcache_ARG, unbuffered_ARG, units_ARG)
|
separator_ARG, sort_ARG, trustcache_ARG, unbuffered_ARG, units_ARG)
|
||||||
|
|
||||||
xx(vgscan,
|
xx(vgscan,
|
||||||
|
@ -236,6 +236,10 @@ int lvm_shell(struct cmd_context *cmd, struct cmdline_context *cmdline)
|
|||||||
log_error("No such command '%s'. Try 'help'.",
|
log_error("No such command '%s'. Try 'help'.",
|
||||||
argv[0]);
|
argv[0]);
|
||||||
|
|
||||||
|
if ((ret != ECMD_PROCESSED) && !error_message_produced()) {
|
||||||
|
log_debug("Internal error: Failed command did not use log_error");
|
||||||
|
log_error("Command failed with status code %d.", ret);
|
||||||
|
}
|
||||||
_write_history();
|
_write_history();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -875,6 +875,8 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
int locking_type;
|
int locking_type;
|
||||||
|
|
||||||
|
init_error_message_produced(0);
|
||||||
|
|
||||||
/* each command should start out with sigint flag cleared */
|
/* each command should start out with sigint flag cleared */
|
||||||
sigint_clear();
|
sigint_clear();
|
||||||
|
|
||||||
@ -1096,7 +1098,14 @@ static int _run_script(struct cmd_context *cmd, int argc, char **argv)
|
|||||||
continue;
|
continue;
|
||||||
if (!strcmp(argv[0], "quit") || !strcmp(argv[0], "exit"))
|
if (!strcmp(argv[0], "quit") || !strcmp(argv[0], "exit"))
|
||||||
break;
|
break;
|
||||||
lvm_run_command(cmd, argc, argv);
|
ret = lvm_run_command(cmd, argc, argv);
|
||||||
|
if (ret != ECMD_PROCESSED) {
|
||||||
|
if (!error_message_produced()) {
|
||||||
|
log_debug("Internal error: Failed command did not use log_error");
|
||||||
|
log_error("Command failed with status code %d.", ret);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fclose(script))
|
if (fclose(script))
|
||||||
@ -1218,6 +1227,11 @@ int lvm2_main(int argc, char **argv, unsigned is_static)
|
|||||||
if (ret == ENO_SUCH_CMD)
|
if (ret == ENO_SUCH_CMD)
|
||||||
log_error("No such command. Try 'help'.");
|
log_error("No such command. Try 'help'.");
|
||||||
|
|
||||||
|
if ((ret != ECMD_PROCESSED) && !error_message_produced()) {
|
||||||
|
log_debug("Internal error: Failed command did not use log_error");
|
||||||
|
log_error("Command failed with status code %d.", ret);
|
||||||
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
lvm_fin(cmd);
|
lvm_fin(cmd);
|
||||||
if (ret == ECMD_PROCESSED)
|
if (ret == ECMD_PROCESSED)
|
||||||
|
@ -272,7 +272,7 @@ static int _report(struct cmd_context *cmd, int argc, char **argv,
|
|||||||
buffered = 0;
|
buffered = 0;
|
||||||
if (arg_count(cmd, noheadings_ARG))
|
if (arg_count(cmd, noheadings_ARG))
|
||||||
headings = 0;
|
headings = 0;
|
||||||
if (arg_count(cmd, prefixes_ARG)) {
|
if (arg_count(cmd, nameprefixes_ARG)) {
|
||||||
aligned = 0;
|
aligned = 0;
|
||||||
field_prefixes = 1;
|
field_prefixes = 1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user