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

tests: add LVM_LOG_FILE_MAX_LINES

When logging to epoch files we would like to prevent creating too large
log files otherwise a spining command could fulfill available space
very easily and quickly.

Limit for to 100000 per command.
This commit is contained in:
Zdenek Kabelac 2016-07-11 12:43:28 +02:00
parent 309bdfa224
commit 34c55d98ee
4 changed files with 20 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.161 - Version 2.02.161 -
================================ ================================
New LVM_LOG_FILE_MAX_LINES env var to limit max size of created logs.
Version 2.02.160 - 6th July 2016 Version 2.02.160 - 6th July 2016
================================ ================================

View File

@ -31,6 +31,8 @@ static struct dm_str_list _log_dev_alias;
static int _syslog = 0; static int _syslog = 0;
static int _log_to_file = 0; static int _log_to_file = 0;
static uint64_t _log_file_max_lines = 0;
static uint64_t _log_file_lines = 0;
static int _log_direct = 0; static int _log_direct = 0;
static int _log_while_suspended = 0; static int _log_while_suspended = 0;
static int _indent = 1; static int _indent = 1;
@ -111,6 +113,14 @@ void init_log_file(const char *log_file, int append)
if (st && fclose(st)) if (st && fclose(st))
log_sys_debug("fclose", statfile); log_sys_debug("fclose", statfile);
if ((env = getenv("LVM_LOG_FILE_MAX_LINES"))) {
if (sscanf(env, FMTu64, &_log_file_max_lines) != 1) {
log_warn("WARNING: Ingnoring incorrect LVM_LOG_MAX_LINES envvar \"%s\".", env);
_log_file_max_lines = 0;
}
_log_file_lines = 0;
}
} }
no_epoch: no_epoch:
@ -487,6 +497,9 @@ static void _vprint_log(int level, const char *file, int line, int dm_errno_or_c
fputc('\n', _log_file); fputc('\n', _log_file);
fflush(_log_file); fflush(_log_file);
if (_log_file_max_lines && ++_log_file_lines >= _log_file_max_lines)
fatal_internal_error = 1;
} }
if (_syslog && (_log_while_suspended || !critical_section())) { if (_syslog && (_log_while_suspended || !critical_section())) {

View File

@ -778,6 +778,11 @@ followed by the process ID and a startup timestamp using
this format string "_%s_%d_%llu". When set, each process logs to a this format string "_%s_%d_%llu". When set, each process logs to a
separate file. separate file.
.TP .TP
.B LVM_LOG_FILE_MAX_LINES
A max number of lines to be printed to log file before
the application aborts. Useful for testing to prevent creation
of too big log files from spinning command.
.TP
.B LVM_EXPECTED_EXIT_STATUS .B LVM_EXPECTED_EXIT_STATUS
The status anticipated when the process exits. Use ">N" to match any The status anticipated when the process exits. Use ">N" to match any
status greater than N. If the actual exit status matches and a log status greater than N. If the actual exit status matches and a log

View File

@ -58,6 +58,7 @@ RUNNING_DMEVENTD=$(pgrep dmeventd || true)
export TESTOLDPWD TESTDIR COMMON_PREFIX PREFIX RUNNING_DMEVENTD export TESTOLDPWD TESTDIR COMMON_PREFIX PREFIX RUNNING_DMEVENTD
export LVM_LOG_FILE_EPOCH=DEBUG export LVM_LOG_FILE_EPOCH=DEBUG
export LVM_LOG_FILE_MAX_LINES=100000
export LVM_EXPECTED_EXIT_STATUS=1 export LVM_EXPECTED_EXIT_STATUS=1
test -n "$BASH" && trap 'set +vx; STACKTRACE; set -vx' ERR test -n "$BASH" && trap 'set +vx; STACKTRACE; set -vx' ERR