[PATCH] Detect dmesg log buffer size so as not to annoy the hell out of me

Randy Robertson rmrobert at vmware.com
Fri Jul 10 10:39:08 UTC 2009


I wasted a bunch of time wondering why even when I increased CONFIG_LOG_BUF_SHIFT I was missing 
the first half second of my boot logs from dmesg.  I saw a bunch of linux code referencing early_printk, 
and thought there was some magic crossover time when things actually started going to the log buffer. 

I didn't even think to read the dmesg man page because it never even occurred to me that dmesg would be 
dumb enough to hard code the size of the kernel buffer.

If you would kindly apply this patch, you would be doing humanity a great service by ensuring that nobody ever 
wastes time because of this again.

---
 util-linux/dmesg.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/util-linux/dmesg.c b/util-linux/dmesg.c
index f52026c..236a3dc 100644
--- a/util-linux/dmesg.c
+++ b/util-linux/dmesg.c
@@ -31,7 +31,13 @@ int dmesg_main(int argc UNUSED_PARAM, char **argv)
                return EXIT_SUCCESS;
        }
 
-       len = (flags & OPT_s) ? xatoul_range(size, 2, INT_MAX) : 16384;
+       if (flags & OPT_s) {
+               len = xatoul_range(size, 2, INT_MAX);
+       } else {
+               len = klogctl(10, NULL, 0);       /* read ringbuffer size */
+               if (len <= 0)
+                       len = 16384;
+       }
        buf = xmalloc(len);
        len = klogctl(3 + (flags & OPT_c), buf, len);
        if (len < 0)
-- 
1.6.2.3



More information about the busybox mailing list