* [LTP] [PATCH 1/3] kmsg01: set/restore console log level
@ 2017-10-23 12:18 Jan Stancek
2017-10-23 12:18 ` [LTP] [PATCH 2/3] kmsg01: specify read timeout in usec Jan Stancek
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Jan Stancek @ 2017-10-23 12:18 UTC (permalink / raw)
To: ltp
commit 497564c77836 "kmsg01: lower the volume of message going to console"
lowered message priority for the flood of messages that try to overwrite
whole buffer. This works only for default console_loglevel. If anything
increases console_loglevel (for example a call to console_verbose()
via lockdep) system starts flooding also console. This causes a failure
on systems with slower serial console, because test is unable to
complete in 5 minutes.
Before patch:
<timeout>
After patch:
real 0m9.219s
user 0m0.289s
sys 0m4.027s
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
testcases/kernel/logging/kmsg/kmsg01.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/testcases/kernel/logging/kmsg/kmsg01.c b/testcases/kernel/logging/kmsg/kmsg01.c
index 294d0a2d1495..393acdcc71c6 100644
--- a/testcases/kernel/logging/kmsg/kmsg01.c
+++ b/testcases/kernel/logging/kmsg/kmsg01.c
@@ -52,7 +52,10 @@
#define NUM_READ_RETRY 10
#define NUM_OVERWRITE_MSGS 1024
#define READ_TIMEOUT 5
+#define PRINTK "/proc/sys/kernel/printk"
+#define CONSOLE_LOGLEVEL_QUIET 4
+static int console_loglevel = -1;
/*
* inject_msg - write message to /dev/kmsg
@@ -571,7 +574,23 @@ static void test_kmsg(void)
test_seek();
}
+static void setup(void)
+{
+ if (access(PRINTK, F_OK) == 0) {
+ SAFE_FILE_SCANF(PRINTK, "%d", &console_loglevel);
+ SAFE_FILE_PRINTF(PRINTK, "%d", CONSOLE_LOGLEVEL_QUIET);
+ }
+}
+
+static void cleanup(void)
+{
+ if (console_loglevel != -1)
+ SAFE_FILE_PRINTF(PRINTK, "%d", console_loglevel);
+}
+
static struct tst_test test = {
+ .setup = setup,
+ .cleanup = cleanup,
.needs_root = 1,
.test_all = test_kmsg,
.min_kver = "3.5.0"
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [LTP] [PATCH 2/3] kmsg01: specify read timeout in usec
2017-10-23 12:18 [LTP] [PATCH 1/3] kmsg01: set/restore console log level Jan Stancek
@ 2017-10-23 12:18 ` Jan Stancek
2017-10-23 12:18 ` [LTP] [PATCH 3/3] kmsg01: use lower timeout for test_read_block() Jan Stancek
2017-10-25 8:43 ` [LTP] [PATCH 1/3] kmsg01: set/restore console log level Cyril Hrubis
2 siblings, 0 replies; 6+ messages in thread
From: Jan Stancek @ 2017-10-23 12:18 UTC (permalink / raw)
To: ltp
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
testcases/kernel/logging/kmsg/kmsg01.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/testcases/kernel/logging/kmsg/kmsg01.c b/testcases/kernel/logging/kmsg/kmsg01.c
index 393acdcc71c6..b81c077cbd23 100644
--- a/testcases/kernel/logging/kmsg/kmsg01.c
+++ b/testcases/kernel/logging/kmsg/kmsg01.c
@@ -51,7 +51,7 @@
#define NUM_READ_MSGS 3
#define NUM_READ_RETRY 10
#define NUM_OVERWRITE_MSGS 1024
-#define READ_TIMEOUT 5
+#define READ_TIMEOUT 5000000
#define PRINTK "/proc/sys/kernel/printk"
#define CONSOLE_LOGLEVEL_QUIET 4
@@ -148,14 +148,14 @@ static int get_msg_fields(const char *msg, unsigned long *prio,
/*
* timed_read - if possible reads from fd or times out
* @fd: fd to read from
- * @timeout_sec: timeout in seconds
+ * @timeout_usec: timeout in useconds
*
* RETURNS:
* read bytes on successful read
* -1 on read() error, errno reflects read() errno
* -2 on timeout
*/
-static int timed_read(int fd, int timeout_sec)
+static int timed_read(int fd, long timeout_usec)
{
int ret, tmp;
struct timeval timeout;
@@ -163,8 +163,8 @@ static int timed_read(int fd, int timeout_sec)
FD_ZERO(&read_fds);
FD_SET(fd, &read_fds);
- timeout.tv_sec = timeout_sec;
- timeout.tv_usec = 0;
+ timeout.tv_sec = timeout_usec / 1000000;
+ timeout.tv_usec = timeout_usec % 1000000;
ret = select(fd + 1, &read_fds, 0, 0, &timeout);
switch (ret) {
@@ -183,14 +183,14 @@ static int timed_read(int fd, int timeout_sec)
* read fails or times out. This ignores any
* EPIPE errors.
* @fd: fd to read from
- * @timeout_sec: timeout in seconds for every read attempt
+ * @timeout_usec: timeout in useconds for every read attempt
*
* RETURNS:
* 0 on read reaching eof
* -1 on read error, errno reflects read() errno
* -2 on timeout
*/
-static int timed_read_kmsg(int fd, int timeout_sec)
+static int timed_read_kmsg(int fd, long timeout_usec)
{
int child, status, ret = 0;
int pipefd[2];
@@ -226,7 +226,7 @@ static int timed_read_kmsg(int fd, int timeout_sec)
/* parent reads pipe until it reaches eof or until read times out */
do {
- TEST(timed_read(pipefd[0], timeout_sec));
+ TEST(timed_read(pipefd[0], timeout_usec));
} while (TEST_RETURN > 0);
SAFE_CLOSE(pipefd[0]);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [LTP] [PATCH 3/3] kmsg01: use lower timeout for test_read_block()
2017-10-23 12:18 [LTP] [PATCH 1/3] kmsg01: set/restore console log level Jan Stancek
2017-10-23 12:18 ` [LTP] [PATCH 2/3] kmsg01: specify read timeout in usec Jan Stancek
@ 2017-10-23 12:18 ` Jan Stancek
2017-10-25 8:49 ` Cyril Hrubis
2017-10-25 8:43 ` [LTP] [PATCH 1/3] kmsg01: set/restore console log level Cyril Hrubis
2 siblings, 1 reply; 6+ messages in thread
From: Jan Stancek @ 2017-10-23 12:18 UTC (permalink / raw)
To: ltp
Test is currently expecting that read will block for ~5 seconds.
This is a problem for busy systems, where there are many messages
periodically generated. One example is ie31200_edac module,
which periodically generates a message every second on debug
kernels.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
testcases/kernel/logging/kmsg/kmsg01.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/testcases/kernel/logging/kmsg/kmsg01.c b/testcases/kernel/logging/kmsg/kmsg01.c
index b81c077cbd23..7f077c9a3f4c 100644
--- a/testcases/kernel/logging/kmsg/kmsg01.c
+++ b/testcases/kernel/logging/kmsg/kmsg01.c
@@ -51,7 +51,6 @@
#define NUM_READ_MSGS 3
#define NUM_READ_RETRY 10
#define NUM_OVERWRITE_MSGS 1024
-#define READ_TIMEOUT 5000000
#define PRINTK "/proc/sys/kernel/printk"
#define CONSOLE_LOGLEVEL_QUIET 4
@@ -252,7 +251,7 @@ static void test_read_nonblock(void)
tst_res(TINFO, "TEST: nonblock read");
fd = SAFE_OPEN("/dev/kmsg", O_RDONLY | O_NONBLOCK);
- TEST(timed_read_kmsg(fd, READ_TIMEOUT));
+ TEST(timed_read_kmsg(fd, 5000000));
if (TEST_RETURN == -1 && TEST_ERRNO == EAGAIN)
tst_res(TPASS, "non-block read returned EAGAIN");
else
@@ -268,7 +267,7 @@ static void test_read_block(void)
tst_res(TINFO, "TEST: blocking read");
fd = SAFE_OPEN("/dev/kmsg", O_RDONLY);
- TEST(timed_read_kmsg(fd, READ_TIMEOUT));
+ TEST(timed_read_kmsg(fd, 500000));
if (TEST_RETURN == -2)
tst_res(TPASS, "read blocked");
else
--
1.8.3.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [LTP] [PATCH 1/3] kmsg01: set/restore console log level
2017-10-23 12:18 [LTP] [PATCH 1/3] kmsg01: set/restore console log level Jan Stancek
2017-10-23 12:18 ` [LTP] [PATCH 2/3] kmsg01: specify read timeout in usec Jan Stancek
2017-10-23 12:18 ` [LTP] [PATCH 3/3] kmsg01: use lower timeout for test_read_block() Jan Stancek
@ 2017-10-25 8:43 ` Cyril Hrubis
2 siblings, 0 replies; 6+ messages in thread
From: Cyril Hrubis @ 2017-10-25 8:43 UTC (permalink / raw)
To: ltp
Hi!
Looks good.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 6+ messages in thread
* [LTP] [PATCH 3/3] kmsg01: use lower timeout for test_read_block()
2017-10-23 12:18 ` [LTP] [PATCH 3/3] kmsg01: use lower timeout for test_read_block() Jan Stancek
@ 2017-10-25 8:49 ` Cyril Hrubis
2017-10-26 7:40 ` Jan Stancek
0 siblings, 1 reply; 6+ messages in thread
From: Cyril Hrubis @ 2017-10-25 8:49 UTC (permalink / raw)
To: ltp
Hi!
> Test is currently expecting that read will block for ~5 seconds.
> This is a problem for busy systems, where there are many messages
> periodically generated. One example is ie31200_edac module,
> which periodically generates a message every second on debug
> kernels.
Sounds reasonable to me. Consider the whole patchset acked.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply [flat|nested] 6+ messages in thread
* [LTP] [PATCH 3/3] kmsg01: use lower timeout for test_read_block()
2017-10-25 8:49 ` Cyril Hrubis
@ 2017-10-26 7:40 ` Jan Stancek
0 siblings, 0 replies; 6+ messages in thread
From: Jan Stancek @ 2017-10-26 7:40 UTC (permalink / raw)
To: ltp
----- Original Message -----
> Hi!
> > Test is currently expecting that read will block for ~5 seconds.
> > This is a problem for busy systems, where there are many messages
> > periodically generated. One example is ie31200_edac module,
> > which periodically generates a message every second on debug
> > kernels.
>
> Sounds reasonable to me. Consider the whole patchset acked.
Pushed.
Regards,
Jan
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-10-26 7:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-23 12:18 [LTP] [PATCH 1/3] kmsg01: set/restore console log level Jan Stancek
2017-10-23 12:18 ` [LTP] [PATCH 2/3] kmsg01: specify read timeout in usec Jan Stancek
2017-10-23 12:18 ` [LTP] [PATCH 3/3] kmsg01: use lower timeout for test_read_block() Jan Stancek
2017-10-25 8:49 ` Cyril Hrubis
2017-10-26 7:40 ` Jan Stancek
2017-10-25 8:43 ` [LTP] [PATCH 1/3] kmsg01: set/restore console log level Cyril Hrubis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox