* [PATCH] kmsg_dump: Don't run on non-error paths by default
@ 2012-02-08 16:14 Matthew Garrett
2012-02-08 16:30 ` Vivek Goyal
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Matthew Garrett @ 2012-02-08 16:14 UTC (permalink / raw)
To: linux-kernel; +Cc: seiji.aguchi, dzickus, vgoyal, Matthew Garrett
Since 04c6862c055fb687c90d9652f32c11a063df15cf kmsg_dump() gets run on
normal paths including poweroff and reboot. This is less than ideal given
pstore implementations that can only represent single backtraces, since a
reboot may overwrite a stored oops before it's been picked up by userspace.
In addition, some pstore backends may have low performance and provide a
significant delay in reboot as a result.
This patch adds a printk.always_kmsg_dump kernel parameter (which can also
be changed from userspace). Without it, the code will only be run on
failure paths rather than on normal paths. The option can be enabled in
environments where there's a desire to attempt to audit whether or not
a reboot was cleanly requested or not.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
include/linux/kmsg_dump.h | 9 +++++++--
kernel/printk.c | 6 ++++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h
index fee6631..35f7237 100644
--- a/include/linux/kmsg_dump.h
+++ b/include/linux/kmsg_dump.h
@@ -15,13 +15,18 @@
#include <linux/errno.h>
#include <linux/list.h>
+/*
+ * Keep this list arranged in rough order of priority. Anything listed after
+ * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump
+ * is passed to the kernel.
+ */
enum kmsg_dump_reason {
- KMSG_DUMP_OOPS,
KMSG_DUMP_PANIC,
+ KMSG_DUMP_OOPS,
+ KMSG_DUMP_EMERG,
KMSG_DUMP_RESTART,
KMSG_DUMP_HALT,
KMSG_DUMP_POWEROFF,
- KMSG_DUMP_EMERG,
};
/**
diff --git a/kernel/printk.c b/kernel/printk.c
index 13c0a11..e7d07f5 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -702,6 +702,9 @@ static bool printk_time = 0;
#endif
module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
+static bool always_kmsg_dump;
+module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO | S_IWUSR);
+
/* Check if we have any console registered that can be called early in boot. */
static int have_callable_console(void)
{
@@ -1732,6 +1735,9 @@ void kmsg_dump(enum kmsg_dump_reason reason)
unsigned long l1, l2;
unsigned long flags;
+ if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
+ return;
+
/* Theoretically, the log could move on after we do this, but
there's not a lot we can do about that. The new messages
will overwrite the start of what we dump. */
--
1.7.7.6
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] kmsg_dump: Don't run on non-error paths by default
2012-02-08 16:14 Matthew Garrett
@ 2012-02-08 16:30 ` Vivek Goyal
2012-02-08 16:37 ` Matthew Garrett
2012-02-08 20:24 ` Seiji Aguchi
[not found] ` <32727E9A83EE9A42A1F0906295A3A77B2E598C0A2F@USINDEVS01.corp.hds.com>
2 siblings, 1 reply; 10+ messages in thread
From: Vivek Goyal @ 2012-02-08 16:30 UTC (permalink / raw)
To: Matthew Garrett; +Cc: linux-kernel, seiji.aguchi, dzickus
On Wed, Feb 08, 2012 at 11:14:06AM -0500, Matthew Garrett wrote:
[..]
> +/*
> + * Keep this list arranged in rough order of priority. Anything listed after
> + * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump
> + * is passed to the kernel.
> + */
> enum kmsg_dump_reason {
> - KMSG_DUMP_OOPS,
> KMSG_DUMP_PANIC,
> + KMSG_DUMP_OOPS,
> + KMSG_DUMP_EMERG,
> KMSG_DUMP_RESTART,
> KMSG_DUMP_HALT,
> KMSG_DUMP_POWEROFF,
> - KMSG_DUMP_EMERG,
> };
>
> /**
> diff --git a/kernel/printk.c b/kernel/printk.c
> index 13c0a11..e7d07f5 100644
> --- a/kernel/printk.c
> +++ b/kernel/printk.c
> @@ -702,6 +702,9 @@ static bool printk_time = 0;
> #endif
> module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
>
> +static bool always_kmsg_dump;
> +module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO | S_IWUSR);
> +
> /* Check if we have any console registered that can be called early in boot. */
> static int have_callable_console(void)
> {
> @@ -1732,6 +1735,9 @@ void kmsg_dump(enum kmsg_dump_reason reason)
> unsigned long l1, l2;
> unsigned long flags;
>
> + if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
> + return;
Did you mean reason > KMSG_DUMP_OOPS to enable oops logging by default?
Given the fact that not everybody likes kmsg_dump() and it is not known
how stable it with various backends, will it make sense to keep it disabled
by default and provide a knob to enable it (instead of always_kmsg_dump).
Thanks
Vivek
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kmsg_dump: Don't run on non-error paths by default
2012-02-08 16:30 ` Vivek Goyal
@ 2012-02-08 16:37 ` Matthew Garrett
2012-02-08 16:44 ` Vivek Goyal
0 siblings, 1 reply; 10+ messages in thread
From: Matthew Garrett @ 2012-02-08 16:37 UTC (permalink / raw)
To: Vivek Goyal; +Cc: linux-kernel, seiji.aguchi, dzickus
On Wed, Feb 08, 2012 at 11:30:07AM -0500, Vivek Goyal wrote:
> > + if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
> > + return;
>
> Did you mean reason > KMSG_DUMP_OOPS to enable oops logging by default?
Bah. Yes, I think my test system was set to panic on oops so I didn't
catch that.
> Given the fact that not everybody likes kmsg_dump() and it is not known
> how stable it with various backends, will it make sense to keep it disabled
> by default and provide a knob to enable it (instead of always_kmsg_dump).
I think logging panics and oopses by default is a useful feature. It may
be desirable to have a mechanism to disable it if some other way of
handling that (serial console, kdump) is available.
--
Matthew Garrett | mjg59@srcf.ucam.org
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kmsg_dump: Don't run on non-error paths by default
2012-02-08 16:37 ` Matthew Garrett
@ 2012-02-08 16:44 ` Vivek Goyal
0 siblings, 0 replies; 10+ messages in thread
From: Vivek Goyal @ 2012-02-08 16:44 UTC (permalink / raw)
To: Matthew Garrett; +Cc: linux-kernel, seiji.aguchi, dzickus
On Wed, Feb 08, 2012 at 04:37:20PM +0000, Matthew Garrett wrote:
> On Wed, Feb 08, 2012 at 11:30:07AM -0500, Vivek Goyal wrote:
>
> > > + if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
> > > + return;
> >
> > Did you mean reason > KMSG_DUMP_OOPS to enable oops logging by default?
>
> Bah. Yes, I think my test system was set to panic on oops so I didn't
> catch that.
>
> > Given the fact that not everybody likes kmsg_dump() and it is not known
> > how stable it with various backends, will it make sense to keep it disabled
> > by default and provide a knob to enable it (instead of always_kmsg_dump).
>
> I think logging panics and oopses by default is a useful feature. It may
> be desirable to have a mechanism to disable it if some other way of
> handling that (serial console, kdump) is available.
Ok, keeping it enabled by default for panic and oops might be better.
Thinking more about it. This problem sounds similar to different kernel log
levels where we enable desired level of logging. May be instead of having
a boolean knob, we can have multivalue knob.
Thanks
Vivek
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] kmsg_dump: Don't run on non-error paths by default
2012-02-08 16:14 Matthew Garrett
2012-02-08 16:30 ` Vivek Goyal
@ 2012-02-08 20:24 ` Seiji Aguchi
[not found] ` <32727E9A83EE9A42A1F0906295A3A77B2E598C0A2F@USINDEVS01.corp.hds.com>
2 siblings, 0 replies; 10+ messages in thread
From: Seiji Aguchi @ 2012-02-08 20:24 UTC (permalink / raw)
To: Matthew Garrett, linux-kernel@vger.kernel.org
Cc: dzickus@redhat.com, vgoyal@redhat.com
This patch, introducing tunable parameter, is reasonable to me.
Acked-by: Seiji Aguchi <seiji.aguchi.hds.com>
-----Original Message-----
From: Matthew Garrett [mailto:mjg@redhat.com]
Sent: Wednesday, February 08, 2012 11:14 AM
To: linux-kernel@vger.kernel.org
Cc: Seiji Aguchi; dzickus@redhat.com; vgoyal@redhat.com; Matthew Garrett
Subject: [PATCH] kmsg_dump: Don't run on non-error paths by default
Since 04c6862c055fb687c90d9652f32c11a063df15cf kmsg_dump() gets run on normal paths including poweroff and reboot. This is less than ideal given pstore implementations that can only represent single backtraces, since a reboot may overwrite a stored oops before it's been picked up by userspace.
In addition, some pstore backends may have low performance and provide a significant delay in reboot as a result.
This patch adds a printk.always_kmsg_dump kernel parameter (which can also be changed from userspace). Without it, the code will only be run on failure paths rather than on normal paths. The option can be enabled in environments where there's a desire to attempt to audit whether or not a reboot was cleanly requested or not.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
include/linux/kmsg_dump.h | 9 +++++++--
kernel/printk.c | 6 ++++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index fee6631..35f7237 100644
--- a/include/linux/kmsg_dump.h
+++ b/include/linux/kmsg_dump.h
@@ -15,13 +15,18 @@
#include <linux/errno.h>
#include <linux/list.h>
+/*
+ * Keep this list arranged in rough order of priority. Anything listed
+after
+ * KMSG_DUMP_OOPS will not be logged by default unless
+printk.always_kmsg_dump
+ * is passed to the kernel.
+ */
enum kmsg_dump_reason {
- KMSG_DUMP_OOPS,
KMSG_DUMP_PANIC,
+ KMSG_DUMP_OOPS,
+ KMSG_DUMP_EMERG,
KMSG_DUMP_RESTART,
KMSG_DUMP_HALT,
KMSG_DUMP_POWEROFF,
- KMSG_DUMP_EMERG,
};
/**
diff --git a/kernel/printk.c b/kernel/printk.c index 13c0a11..e7d07f5 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -702,6 +702,9 @@ static bool printk_time = 0; #endif module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
+static bool always_kmsg_dump;
+module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO |
+S_IWUSR);
+
/* Check if we have any console registered that can be called early in boot. */ static int have_callable_console(void) { @@ -1732,6 +1735,9 @@ void kmsg_dump(enum kmsg_dump_reason reason)
unsigned long l1, l2;
unsigned long flags;
+ if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
+ return;
+
/* Theoretically, the log could move on after we do this, but
there's not a lot we can do about that. The new messages
will overwrite the start of what we dump. */
--
1.7.7.6
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] kmsg_dump: Don't run on non-error paths by default
[not found] ` <32727E9A83EE9A42A1F0906295A3A77B2E598C0A2F@USINDEVS01.corp.hds.com>
@ 2012-02-08 20:26 ` Seiji Aguchi
0 siblings, 0 replies; 10+ messages in thread
From: Seiji Aguchi @ 2012-02-08 20:26 UTC (permalink / raw)
To: Matthew Garrett, linux-kernel@vger.kernel.org
Cc: dzickus@redhat.com, vgoyal@redhat.com
There was a mistake in writing for my e-mail address.
Acked-by: Seiji Aguchi <seiji.aguchi@hds.com>
-----Original Message-----
From: Seiji Aguchi
Sent: Wednesday, February 08, 2012 3:24 PM
To: 'Matthew Garrett'; linux-kernel@vger.kernel.org
Cc: dzickus@redhat.com; vgoyal@redhat.com
Subject: RE: [PATCH] kmsg_dump: Don't run on non-error paths by default
This patch, introducing tunable parameter, is reasonable to me.
Acked-by: Seiji Aguchi <seiji.aguchi.hds.com>
-----Original Message-----
From: Matthew Garrett [mailto:mjg@redhat.com]
Sent: Wednesday, February 08, 2012 11:14 AM
To: linux-kernel@vger.kernel.org
Cc: Seiji Aguchi; dzickus@redhat.com; vgoyal@redhat.com; Matthew Garrett
Subject: [PATCH] kmsg_dump: Don't run on non-error paths by default
Since 04c6862c055fb687c90d9652f32c11a063df15cf kmsg_dump() gets run on normal paths including poweroff and reboot. This is less than ideal given pstore implementations that can only represent single backtraces, since a reboot may overwrite a stored oops before it's been picked up by userspace.
In addition, some pstore backends may have low performance and provide a significant delay in reboot as a result.
This patch adds a printk.always_kmsg_dump kernel parameter (which can also be changed from userspace). Without it, the code will only be run on failure paths rather than on normal paths. The option can be enabled in environments where there's a desire to attempt to audit whether or not a reboot was cleanly requested or not.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
include/linux/kmsg_dump.h | 9 +++++++--
kernel/printk.c | 6 ++++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index fee6631..35f7237 100644
--- a/include/linux/kmsg_dump.h
+++ b/include/linux/kmsg_dump.h
@@ -15,13 +15,18 @@
#include <linux/errno.h>
#include <linux/list.h>
+/*
+ * Keep this list arranged in rough order of priority. Anything listed
+after
+ * KMSG_DUMP_OOPS will not be logged by default unless
+printk.always_kmsg_dump
+ * is passed to the kernel.
+ */
enum kmsg_dump_reason {
- KMSG_DUMP_OOPS,
KMSG_DUMP_PANIC,
+ KMSG_DUMP_OOPS,
+ KMSG_DUMP_EMERG,
KMSG_DUMP_RESTART,
KMSG_DUMP_HALT,
KMSG_DUMP_POWEROFF,
- KMSG_DUMP_EMERG,
};
/**
diff --git a/kernel/printk.c b/kernel/printk.c index 13c0a11..e7d07f5 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -702,6 +702,9 @@ static bool printk_time = 0; #endif module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
+static bool always_kmsg_dump;
+module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO |
+S_IWUSR);
+
/* Check if we have any console registered that can be called early in boot. */ static int have_callable_console(void) { @@ -1732,6 +1735,9 @@ void kmsg_dump(enum kmsg_dump_reason reason)
unsigned long l1, l2;
unsigned long flags;
+ if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
+ return;
+
/* Theoretically, the log could move on after we do this, but
there's not a lot we can do about that. The new messages
will overwrite the start of what we dump. */
--
1.7.7.6
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] kmsg_dump: Don't run on non-error paths by default
@ 2012-02-10 15:11 Matthew Garrett
2012-02-10 15:36 ` Jack Stone
2012-02-10 15:44 ` Vivek Goyal
0 siblings, 2 replies; 10+ messages in thread
From: Matthew Garrett @ 2012-02-10 15:11 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel, dzickus, vgoyal, seiji.aguchi, Matthew Garrett
Since 04c6862c055fb687c90d9652f32c11a063df15cf kmsg_dump() gets run on
normal paths including poweroff and reboot. This is less than ideal given
pstore implementations that can only represent single backtraces, since a
reboot may overwrite a stored oops before it's been picked up by userspace.
In addition, some pstore backends may have low performance and provide a
significant delay in reboot as a result.
This patch adds a printk.always_kmsg_dump kernel parameter (which can also
be changed from userspace). Without it, the code will only be run on
failure paths rather than on normal paths. The option can be enabled in
environments where there's a desire to attempt to audit whether or not
a reboot was cleanly requested or not.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Acked-by: Seiji Aguchi <seiji.aguchi@hds.com>
---
Documentation/kernel-parameters.txt | 6 ++++++
include/linux/kmsg_dump.h | 9 +++++++--
kernel/printk.c | 6 ++++++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 033d4e6..d99fd9c 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -2211,6 +2211,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
default: off.
+ printk.always_kmsg_dump=
+ Trigger kmsg_dump for cases other than kernel oops or
+ panics
+ Format: <bool> (1/Y/y=enable, 0/N/n=disable)
+ default: disabled
+
printk.time= Show timing data prefixed to each printk message line
Format: <bool> (1/Y/y=enable, 0/N/n=disable)
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h
index fee6631..35f7237 100644
--- a/include/linux/kmsg_dump.h
+++ b/include/linux/kmsg_dump.h
@@ -15,13 +15,18 @@
#include <linux/errno.h>
#include <linux/list.h>
+/*
+ * Keep this list arranged in rough order of priority. Anything listed after
+ * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump
+ * is passed to the kernel.
+ */
enum kmsg_dump_reason {
- KMSG_DUMP_OOPS,
KMSG_DUMP_PANIC,
+ KMSG_DUMP_OOPS,
+ KMSG_DUMP_EMERG,
KMSG_DUMP_RESTART,
KMSG_DUMP_HALT,
KMSG_DUMP_POWEROFF,
- KMSG_DUMP_EMERG,
};
/**
diff --git a/kernel/printk.c b/kernel/printk.c
index 13c0a11..e7d07f5 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -702,6 +702,9 @@ static bool printk_time = 0;
#endif
module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
+static bool always_kmsg_dump;
+module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO | S_IWUSR);
+
/* Check if we have any console registered that can be called early in boot. */
static int have_callable_console(void)
{
@@ -1732,6 +1735,9 @@ void kmsg_dump(enum kmsg_dump_reason reason)
unsigned long l1, l2;
unsigned long flags;
+ if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
+ return;
+
/* Theoretically, the log could move on after we do this, but
there's not a lot we can do about that. The new messages
will overwrite the start of what we dump. */
--
1.7.7.6
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] kmsg_dump: Don't run on non-error paths by default
2012-02-10 15:11 [PATCH] kmsg_dump: Don't run on non-error paths by default Matthew Garrett
@ 2012-02-10 15:36 ` Jack Stone
2012-02-10 15:44 ` Matthew Garrett
2012-02-10 15:44 ` Vivek Goyal
1 sibling, 1 reply; 10+ messages in thread
From: Jack Stone @ 2012-02-10 15:36 UTC (permalink / raw)
To: Matthew Garrett; +Cc: akpm, linux-kernel, dzickus, vgoyal, seiji.aguchi
On 10/02/12 15:11, Matthew Garrett wrote:
> +/*
> + * Keep this list arranged in rough order of priority. Anything listed after
> + * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump
> + * is passed to the kernel.
> + */
> enum kmsg_dump_reason {
> - KMSG_DUMP_OOPS,
> KMSG_DUMP_PANIC,
> + KMSG_DUMP_OOPS,
> + KMSG_DUMP_EMERG,
> KMSG_DUMP_RESTART,
> KMSG_DUMP_HALT,
> KMSG_DUMP_POWEROFF,
> - KMSG_DUMP_EMERG,
> };
...
> + if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
> + return;
> +
Did you mean KMSG_DUMP_OOPS here?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kmsg_dump: Don't run on non-error paths by default
2012-02-10 15:36 ` Jack Stone
@ 2012-02-10 15:44 ` Matthew Garrett
0 siblings, 0 replies; 10+ messages in thread
From: Matthew Garrett @ 2012-02-10 15:44 UTC (permalink / raw)
To: Jack Stone; +Cc: akpm, linux-kernel, dzickus, vgoyal, seiji.aguchi
Sigh. Is there any way to get git send-email to warn when you have a
dirty tree?
--
Matthew Garrett | mjg59@srcf.ucam.org
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] kmsg_dump: Don't run on non-error paths by default
2012-02-10 15:11 [PATCH] kmsg_dump: Don't run on non-error paths by default Matthew Garrett
2012-02-10 15:36 ` Jack Stone
@ 2012-02-10 15:44 ` Vivek Goyal
1 sibling, 0 replies; 10+ messages in thread
From: Vivek Goyal @ 2012-02-10 15:44 UTC (permalink / raw)
To: Matthew Garrett; +Cc: akpm, linux-kernel, dzickus, seiji.aguchi
On Fri, Feb 10, 2012 at 10:11:33AM -0500, Matthew Garrett wrote:
[..]
> static int have_callable_console(void)
> {
> @@ -1732,6 +1735,9 @@ void kmsg_dump(enum kmsg_dump_reason reason)
> unsigned long l1, l2;
> unsigned long flags;
>
> + if (reason > KMSG_DUMP_PANIC && !always_kmsg_dump)
> + return;
> +
reason > KMSG_DUMP_OOPS?
Thanks
Vivek
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-02-10 15:45 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-10 15:11 [PATCH] kmsg_dump: Don't run on non-error paths by default Matthew Garrett
2012-02-10 15:36 ` Jack Stone
2012-02-10 15:44 ` Matthew Garrett
2012-02-10 15:44 ` Vivek Goyal
-- strict thread matches above, loose matches on Subject: below --
2012-02-08 16:14 Matthew Garrett
2012-02-08 16:30 ` Vivek Goyal
2012-02-08 16:37 ` Matthew Garrett
2012-02-08 16:44 ` Vivek Goyal
2012-02-08 20:24 ` Seiji Aguchi
[not found] ` <32727E9A83EE9A42A1F0906295A3A77B2E598C0A2F@USINDEVS01.corp.hds.com>
2012-02-08 20:26 ` Seiji Aguchi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).