From: Andrea Arcangeli <andrea@suse.de>
To: Andrew Morton <akpm@osdl.org>
Cc: zanussi@comcast.net, Ruth.Ivimey-Cook@ivimey.org,
j.grootheest@euronext.nl, willy@w.ods.org,
marcelo.tosatti@cyclades.com.br, linux-kernel@vger.kernel.org
Subject: Re: log-buf-len dynamic
Date: Wed, 24 Sep 2003 00:22:29 +0200 [thread overview]
Message-ID: <20030923222229.GQ1269@velociraptor.random> (raw)
In-Reply-To: <20030923143754.6b9efbc9.akpm@osdl.org>
On Tue, Sep 23, 2003 at 02:37:54PM -0700, Andrew Morton wrote:
> Andrea Arcangeli <andrea@suse.de> wrote:
> >
> > I don't think we can merge this in 2.4 but it looks good for 2.6.
>
> I think so: doing it via a __setup parameter is much smarter than requiring
> a rebuild.
agreed. That's why I also preferred my simple hack. After I fix the 64k
memory loss, I will see no disavantages in the kernel boot time
parameter compared to the compile time option.
>
> > +static int __init log_buf_len_setup(char *str)
> > +{
> > + unsigned long size = simple_strtoul(str, &str, 0);
> > +
> > + if (size & (size-1))
> > + printk("log_buf_len: invalid size - needs a power of two\n");
>
> You need to either panic or return here.
woops sorry, that was the old version ;) it had other bugs too, the new
one is this one (Marcelo please don't merge the old version, I thought
it was just uptodate in 22aa1 but it was not, the new version wasn't in
the ftp site yet infact)
Also I have to fix the request for the 64k memory loss reported by Willy
first.
thanks for the review!
diff -urNp --exclude CVS --exclude BitKeeper ul-ref/kernel/printk.c ul/kernel/printk.c
--- ul-ref/kernel/printk.c 2003-09-06 01:45:25.000000000 +0200
+++ ul/kernel/printk.c 2003-09-06 01:46:09.000000000 +0200
@@ -27,15 +27,16 @@
#include <linux/interrupt.h> /* For in_interrupt() */
#include <linux/config.h>
#include <linux/delay.h>
+#include <linux/bootmem.h>
#include <asm/uaccess.h>
#if defined(CONFIG_MULTIQUAD) || defined(CONFIG_IA64)
-#define LOG_BUF_LEN (65536)
+#define __LOG_BUF_LEN (65536)
#elif defined(CONFIG_ARCH_S390) || defined(CONFIG_PPC64) || defined(CONFIG_PPC)
-#define LOG_BUF_LEN (131072)
+#define __LOG_BUF_LEN (131072)
#else
-#define LOG_BUF_LEN (32768) /* This must be a power of two */
+#define __LOG_BUF_LEN (32768) /* This must be a power of two */
#endif
#define LOG_BUF_MASK (LOG_BUF_LEN-1)
@@ -78,7 +79,9 @@ struct console *console_drivers;
*/
static spinlock_t logbuf_lock = SPIN_LOCK_UNLOCKED;
-static char log_buf[LOG_BUF_LEN];
+static char __log_buf[__LOG_BUF_LEN];
+static char * log_buf = __log_buf;
+static int LOG_BUF_LEN = __LOG_BUF_LEN;
#define LOG_BUF(idx) (log_buf[(idx) & LOG_BUF_MASK])
/*
@@ -165,6 +168,45 @@ static int __init console_setup(char *st
__setup("console=", console_setup);
+static int __init log_buf_len_setup(char *str)
+{
+ unsigned long size = memparse(str, &str);
+
+ if (size > LOG_BUF_LEN) {
+ unsigned long start, dest_idx, offset;
+ char * new_log_buf;
+
+ new_log_buf = alloc_bootmem(size);
+ if (!new_log_buf) {
+ printk("log_buf_len: allocation failed\n");
+ goto out;
+ }
+
+ spin_lock_irq(&logbuf_lock);
+ LOG_BUF_LEN = size;
+ log_buf = new_log_buf;
+
+ offset = start = min(con_start, log_start);
+ dest_idx = 0;
+ while (start != log_end) {
+ log_buf[dest_idx] = __log_buf[start & (__LOG_BUF_LEN - 1)];
+ start++;
+ dest_idx++;
+ }
+ log_start -= offset;
+ con_start -= offset;
+ log_end -= offset;
+ spin_unlock_irq(&logbuf_lock);
+
+ printk("log_buf_len: %d\n", LOG_BUF_LEN);
+ }
+ out:
+
+ return 1;
+}
+
+__setup("log_buf_len=", log_buf_len_setup);
+
/*
* Commands to do_syslog:
*
Andrea - If you prefer relying on open source software, check these links:
rsync.kernel.org::pub/scm/linux/kernel/bkcvs/linux-2.[45]/
http://www.cobite.com/cvsps/
svn://svn.kernel.org/linux-2.[46]/trunk
next prev parent reply other threads:[~2003-09-23 22:22 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-22 19:48 log-buf-len dynamic Andrea Arcangeli
2003-09-23 1:51 ` Matthew Wilcox
2003-09-23 21:08 ` Andrea Arcangeli
2003-09-23 4:28 ` Willy Tarreau
2003-09-23 12:49 ` Andrea Arcangeli
2003-09-23 14:06 ` Willy Tarreau
2003-09-23 14:44 ` Andrea Arcangeli
2003-09-23 15:01 ` Jan Evert van Grootheest
2003-09-23 15:41 ` Andrea Arcangeli
2003-09-23 16:09 ` Willy Tarreau
2003-09-23 16:26 ` Andrea Arcangeli
2003-09-23 16:56 ` Ruth Ivimey-Cook
2003-09-23 17:40 ` Tom Zanussi
2003-09-23 17:53 ` Andrea Arcangeli
2003-09-23 21:37 ` Andrew Morton
2003-09-23 22:22 ` Andrea Arcangeli [this message]
2003-09-24 0:15 ` Andrew Morton
2003-09-24 0:38 ` Andrea Arcangeli
2003-09-23 16:06 ` Willy Tarreau
2003-09-23 16:23 ` Andrea Arcangeli
2003-09-23 19:02 ` Willy Tarreau
2003-09-23 22:34 ` Andrea Arcangeli
2003-09-23 23:29 ` Willy Tarreau
2003-09-23 23:48 ` Andrea Arcangeli
2003-09-23 23:50 ` Willy Tarreau
2003-09-23 12:46 ` Daniel Jacobowitz
2003-09-25 13:40 ` marcelo
2003-09-26 20:26 ` Andrea Arcangeli
[not found] <20030923142706.54b2428a.davem@redhat.com>
2003-09-23 21:53 ` Linus Torvalds
2003-09-23 22:15 ` Andrea Arcangeli
2003-09-23 22:54 ` Linus Torvalds
2003-09-24 0:36 ` Andrea Arcangeli
2003-09-24 1:19 ` Larry McVoy
2003-09-24 2:04 ` andrea
2003-09-24 2:29 ` Larry McVoy
2003-09-24 2:39 ` Andrea Arcangeli
2003-09-24 3:16 ` Larry McVoy
2003-09-24 3:31 ` Rik van Riel
2003-09-24 3:45 ` Larry McVoy
2003-09-24 3:54 ` Linus Torvalds
2003-09-24 4:12 ` Rik van Riel
2003-09-24 21:11 ` yodaiken
2003-09-24 13:09 ` Alan Cox
2003-09-24 18:56 ` Jörn Engel
2003-09-24 3:46 ` Andrea Arcangeli
2003-09-24 4:02 ` Larry McVoy
2003-09-24 4:06 ` Rik van Riel
2003-09-24 2:36 ` Linus Torvalds
2003-09-24 2:48 ` Andrea Arcangeli
2003-09-24 3:06 ` Linus Torvalds
2003-09-24 3:28 ` Andrea Arcangeli
2003-09-24 3:38 ` Linus Torvalds
2003-09-24 3:56 ` Andrea Arcangeli
2003-09-24 4:26 ` viro
2003-09-24 3:42 ` Rik van Riel
2003-09-24 3:11 ` David S. Miller
2003-09-24 14:43 ` Roman Zippel
2003-09-25 4:08 ` Miles Bader
2003-09-25 4:20 ` Nick Piggin
2003-09-25 17:15 ` Eric W. Biederman
2003-09-25 17:30 ` Linus Torvalds
2003-09-25 17:57 ` Jeff Garzik
2003-09-25 18:22 ` Jörn Engel
2003-09-25 18:33 ` Randy.Dunlap
2003-09-25 18:36 ` Larry McVoy
2003-09-25 19:02 ` Jörn Engel
2003-09-25 18:28 ` Charles Cazabon
2003-09-25 18:29 ` Larry McVoy
2003-09-25 20:15 ` David Lang
2003-09-25 20:27 ` Larry McVoy
2003-09-29 8:56 ` Rob Landley
2003-09-29 11:24 ` John Bradford
2003-09-29 12:30 ` Rob Landley
2003-09-29 15:22 ` John Bradford
2003-09-29 13:20 ` Rik van Riel
2003-09-29 13:23 ` Valdis.Kletnieks
2003-09-29 15:03 ` Larry McVoy
2003-09-29 18:21 ` Hua Zhong
2003-09-29 15:07 ` Larry McVoy
2003-09-25 19:23 ` Eric W. Biederman
2003-09-25 17:31 ` Christoph Hellwig
2003-09-25 19:28 ` Erik Andersen
2003-09-25 17:36 ` Dave Jones
2003-09-25 18:34 ` Larry McVoy
2003-09-25 18:35 ` Eric W. Biederman
2003-09-25 18:49 ` Larry McVoy
2003-09-25 20:02 ` Eric W. Biederman
2003-09-25 23:36 ` Pau Aliagas
2003-09-26 2:25 ` Miles Bader
2003-09-26 4:38 ` Davide Libenzi
2003-09-26 17:09 ` John Goerzen
2003-09-24 7:56 ` Pau Aliagas
-- strict thread matches above, loose matches on Subject: below --
2003-09-24 17:39 Ken Ryan
2003-09-25 19:43 Mudama, Eric
2003-09-26 13:24 Samium Gromoff
2003-09-26 14:49 ` viro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030923222229.GQ1269@velociraptor.random \
--to=andrea@suse.de \
--cc=Ruth.Ivimey-Cook@ivimey.org \
--cc=akpm@osdl.org \
--cc=j.grootheest@euronext.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=marcelo.tosatti@cyclades.com.br \
--cc=willy@w.ods.org \
--cc=zanussi@comcast.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox