[PATCH rhel6-branch] Skip md containers with ignored volumes in unused BIOS raid members check (#1120640)
by Artur Paszkiewicz
Volumes which are not selected in Specialized Storage Devices are
ignored in addUdevDevice. This causes that their parent container won't
have its child counter incremented and its members are incorrectly
recognized as unused.
This patch adds checking for any volumes belonging to the container
before adding its members to the unusedRaidMembers list.
Resolves: rhbz#1120640
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz(a)intel.com>
---
storage/devicetree.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/storage/devicetree.py b/storage/devicetree.py
index 4045cdf..8eaeedc 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -2055,8 +2055,10 @@ class DeviceTree(object):
# Check for unused BIOS raid members, unused dmraid members are added
# to self.unusedRaidMembers as they are processed, extend this list
# with unused mdraid BIOS raid members
+ devices = udev_get_block_devices()
for c in self.getDevicesByType("mdcontainer"):
- if c.kids == 0:
+ if c.kids == 0 and \
+ sum(d.get('MD_CONTAINER') == c.path for d in devices) == 0:
self.unusedRaidMembers.extend(map(lambda m: m.name, c.devices))
self.intf.unusedRaidMembersWarning(self.unusedRaidMembers)
--
1.8.4.5
9 years, 8 months
[master/rhel7] Remove logging to tty3 and tty5 (#1073336)
by Brian C. Lane
tmux handles tailing the relevant logs in other windows, there is no
need to be writing directly to a tty any longer. It also interferes with
the host system when running anaconda using --image or --dirinstall from
the cmdline.
Resolves: rhbz#1073336
---
anaconda | 2 +-
pyanaconda/anaconda_log.py | 19 +++----------------
pyanaconda/isys/log.c | 20 +-------------------
pyanaconda/isys/log.h | 1 -
pyanaconda/kickstart.py | 6 +++---
pyanaconda/network.py | 5 -----
6 files changed, 8 insertions(+), 45 deletions(-)
diff --git a/anaconda b/anaconda
index ffce0f0..edaf097 100755
--- a/anaconda
+++ b/anaconda
@@ -348,7 +348,7 @@ def setupEnvironment():
def setupLoggingFromOpts(options):
if options.loglevel and anaconda_log.logLevelMap.has_key(options.loglevel):
level = anaconda_log.logLevelMap[options.loglevel]
- anaconda_log.logger.tty_loglevel = level
+ anaconda_log.logger.loglevel = level
anaconda_log.setHandlersLevel(log, level)
storage_log = logging.getLogger("storage")
anaconda_log.setHandlersLevel(storage_log, level)
diff --git a/pyanaconda/anaconda_log.py b/pyanaconda/anaconda_log.py
index e2d6fa5..4f678d8 100644
--- a/pyanaconda/anaconda_log.py
+++ b/pyanaconda/anaconda_log.py
@@ -31,16 +31,13 @@ import warnings
from pyanaconda.flags import flags
-DEFAULT_TTY_LEVEL = logging.INFO
+DEFAULT_LEVEL = logging.INFO
ENTRY_FORMAT = "%(asctime)s,%(msecs)03d %(levelname)s %(name)s: %(message)s"
-TTY_FORMAT = "%(levelname)s %(name)s: %(message)s"
STDOUT_FORMAT = "%(asctime)s %(message)s"
DATE_FORMAT = "%H:%M:%S"
MAIN_LOG_FILE = "/tmp/anaconda.log"
-MAIN_LOG_TTY = "/dev/tty3"
PROGRAM_LOG_FILE = "/tmp/program.log"
-PROGRAM_LOG_TTY = "/dev/tty5"
STORAGE_LOG_FILE = "/tmp/storage.log"
PACKAGING_LOG_FILE = "/tmp/packaging.log"
ANACONDA_SYSLOG_FACILITY = SysLogHandler.LOG_LOCAL1
@@ -80,7 +77,7 @@ class AnacondaLog:
VIRTIO_PORT = "/dev/virtio-ports/org.fedoraproject.anaconda.log.0"
def __init__ (self):
- self.tty_loglevel = DEFAULT_TTY_LEVEL
+ self.loglevel = DEFAULT_LEVEL
self.remote_syslog = None
# Rename the loglevels so they are the same as in syslog.
logging.addLevelName(logging.WARNING, "WARN")
@@ -102,22 +99,12 @@ class AnacondaLog:
for logr in [self.anaconda_logger, storage_logger]:
logr.setLevel(logging.DEBUG)
self.forwardToSyslog(logr)
- # Logging of basic stuff and storage to tty3.
- # XXX Use os.uname here since it's too early to be importing the
- # storage module.
- if not os.uname()[4].startswith('s390') and os.access(MAIN_LOG_TTY, os.W_OK):
- self.addFileHandler(MAIN_LOG_TTY, logr,
- fmtStr=TTY_FORMAT,
- autoLevel=True)
# External program output log
program_logger = logging.getLogger("program")
program_logger.setLevel(logging.DEBUG)
self.addFileHandler(PROGRAM_LOG_FILE, program_logger,
minLevel=logging.DEBUG)
- self.addFileHandler(PROGRAM_LOG_TTY, program_logger,
- fmtStr=TTY_FORMAT,
- autoLevel=True)
self.forwardToSyslog(program_logger)
# Create the packaging logger.
@@ -151,7 +138,7 @@ class AnacondaLog:
fmtStr=STDOUT_FORMAT, minLevel=logging.INFO)
# Add a simple handler - file or stream, depending on what we're given.
- def addFileHandler (self, dest, addToLogger, minLevel=DEFAULT_TTY_LEVEL,
+ def addFileHandler (self, dest, addToLogger, minLevel=DEFAULT_LEVEL,
fmtStr=ENTRY_FORMAT,
autoLevel=False):
try:
diff --git a/pyanaconda/isys/log.c b/pyanaconda/isys/log.c
index 9c9d5bb..aa285dc 100644
--- a/pyanaconda/isys/log.c
+++ b/pyanaconda/isys/log.c
@@ -34,10 +34,8 @@
#include "log.h"
-static FILE * main_log_tty = NULL;
static FILE * main_log_file = NULL;
static FILE * program_log_file = NULL;
-static loglevel_t minLevel = INFO;
static const char * main_tag = "anaconda";
static const char * program_tag = "program";
static const int syslog_facility = LOG_LOCAL1;
@@ -104,12 +102,9 @@ static void retagSyslog(const char* new_tag)
}
void logMessageV(enum logger_t logger, loglevel_t level, const char * s, va_list ap) {
- FILE *log_tty = main_log_tty;
FILE *log_file = main_log_file;
const char *tag = main_tag;
if (logger == PROGRAM_LOG) {
- /* tty output is done directly for programs */
- log_tty = NULL;
log_file = program_log_file;
tag = program_tag;
/* close and reopen syslog so we get the tagging right */
@@ -122,12 +117,7 @@ void logMessageV(enum logger_t logger, loglevel_t level, const char * s, va_list
vsyslog(mapLogLevel(level), s, apc);
va_end(apc);
- /* Only log to the screen things that are above the minimum level. */
- if (main_log_tty && level >= minLevel && log_tty) {
- printLogMessage(level, tag, log_tty, s, ap);
- }
-
- /* But log everything to the file. */
+ /* Log everything to the file. */
if (main_log_file) {
printLogMessage(level, tag, log_file, s, ap);
}
@@ -145,7 +135,6 @@ void logMessage(loglevel_t level, const char * s, ...) {
va_end(args);
}
-int tty_logfd = -1;
int file_logfd = -1;
void openLog() {
@@ -154,16 +143,9 @@ void openLog() {
openlog(main_tag, 0, syslog_facility);
int flags;
- main_log_tty = fopen("/dev/tty3", "a");
main_log_file = fopen("/tmp/anaconda.log", "a");
program_log_file = fopen("/tmp/program.log", "a");
- if (main_log_tty) {
- tty_logfd = fileno(main_log_tty);
- flags = fcntl(tty_logfd, F_GETFD, 0) | FD_CLOEXEC;
- fcntl(tty_logfd, F_SETFD, flags);
- }
-
if (main_log_file) {
file_logfd = fileno(main_log_file);
flags = fcntl(file_logfd, F_GETFD, 0) | FD_CLOEXEC;
diff --git a/pyanaconda/isys/log.h b/pyanaconda/isys/log.h
index f095f44..8e050a9 100644
--- a/pyanaconda/isys/log.h
+++ b/pyanaconda/isys/log.h
@@ -42,7 +42,6 @@ void logMessage(loglevel_t level, const char * s, ...)
__attribute__ ((format (printf, 2, 3)));
void openLog();
-extern int tty_logfd;
extern int file_logfd;
#endif /* _LOG_H_ */
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index 977d9a0..a210a22 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -73,7 +73,7 @@ log = logging.getLogger("anaconda")
stderrLog = logging.getLogger("anaconda.stderr")
storage_log = logging.getLogger("blivet")
stdoutLog = logging.getLogger("anaconda.stdout")
-from pyanaconda.anaconda_log import logger, logLevelMap, setHandlersLevel, DEFAULT_TTY_LEVEL
+from pyanaconda.anaconda_log import logger, logLevelMap, setHandlersLevel, DEFAULT_LEVEL
class AnacondaKSScript(KSScript):
""" Execute a kickstart script
@@ -920,10 +920,10 @@ class LogVolData(commands.logvol.F20_LogVolData):
class Logging(commands.logging.FC6_Logging):
def execute(self, *args):
- if logger.tty_loglevel == DEFAULT_TTY_LEVEL:
+ if logger.loglevel == DEFAULT_LEVEL:
# not set from the command line
level = logLevelMap[self.level]
- logger.tty_loglevel = level
+ logger.loglevel = level
setHandlersLevel(log, level)
setHandlersLevel(storage_log, level)
diff --git a/pyanaconda/network.py b/pyanaconda/network.py
index 144548d..f0b22bf 100644
--- a/pyanaconda/network.py
+++ b/pyanaconda/network.py
@@ -70,11 +70,6 @@ def setup_ifcfg_log():
logger = logging.getLogger("ifcfg")
logger.setLevel(logging.DEBUG)
anaconda_log.logger.addFileHandler(ifcfgLogFile, logger, logging.DEBUG)
- if os.access("/dev/tty3", os.W_OK):
- anaconda_log.logger.addFileHandler("/dev/tty3", logger,
- anaconda_log.DEFAULT_TTY_LEVEL,
- anaconda_log.TTY_FORMAT,
- autoLevel=True)
anaconda_log.logger.forwardToSyslog(logger)
ifcfglog = logging.getLogger("ifcfg")
--
1.9.3
9 years, 8 months