Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 159493 Details for
Bug 248666
Serious problems during the diskdump, can cause the machine to hang and not reboot.
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Reboot if the diskdump fails horribly.
linux-2.6.9-reboot-on-error.patch (text/plain), 4.18 KB, created by
Wade Mealing
on 2007-07-18 03:33:01 UTC
(
hide
)
Description:
Reboot if the diskdump fails horribly.
Filename:
MIME Type:
Creator:
Wade Mealing
Created:
2007-07-18 03:33:01 UTC
Size:
4.18 KB
patch
obsolete
>diff -Naur linux-2.6.9.orig/drivers/block/diskdump.c linux-2.6.9/drivers/block/diskdump.c >--- linux-2.6.9.orig/drivers/block/diskdump.c 2007-07-17 13:30:24.000000000 +1000 >+++ linux-2.6.9/drivers/block/diskdump.c 2007-07-17 13:31:57.000000000 +1000 >@@ -66,12 +66,14 @@ > #define USER_PARAM_BLOCK 2 > > static int fallback_on_err = 1; >+static int reboot_on_err = 1; > static int allow_risky_dumps = 1; > static unsigned int block_order = 2; > static int sample_rate = 8; > static int dump_level = 0; > static int compress = 0; > module_param_named(fallback_on_err, fallback_on_err, bool, S_IRUGO|S_IWUSR); >+module_param_named(reboot_on_err, reboot_on_err, bool, S_IRUGO|S_IWUSR); > module_param_named(allow_risky_dumps, allow_risky_dumps, bool, S_IRUGO|S_IWUSR); > module_param_named(block_order, block_order, uint, S_IRUGO|S_IWUSR); > module_param_named(sample_rate, sample_rate, int, S_IRUGO|S_IWUSR); >@@ -132,6 +134,7 @@ > EXPORT_SYMBOL_GPL(disk_dump_state); > > extern int panic_timeout; >+extern int reboot_on_dump_err; > extern unsigned long max_pfn; > > static asmlinkage void disk_dump(struct pt_regs *, void *); >@@ -855,11 +858,17 @@ > done: > /* > * If diskdump failed and fallback_on_err is set, >- * We just return and leave panic to netdump. >+ * we just return and leave panic to netdump. >+ * If reboot_on_err isn't set and netdump isn't enabled, >+ * the system doesn't reboot after dump failure. > */ > if (dump_err) { > disk_dump_state = DISK_DUMP_FAILURE; > if (fallback_on_err && dump_err) { >+ if (reboot_on_err) >+ reboot_on_dump_err = 1; >+ else >+ reboot_on_dump_err = 0; > Info("diskdump failed, fall back to trying netdump"); > return; > } >@@ -872,7 +881,8 @@ > Dbg("notify panic."); > notifier_call_chain(&panic_notifier_list, 0, NULL); > >- if (panic_timeout > 0) { >+ if (panic_timeout > 0 >+ && (!dump_err || (dump_err && reboot_on_err))) { > int i; > /* > * Delay timeout seconds before rebooting the machine. >@@ -1312,6 +1322,7 @@ > seq_printf(seq, "# sample_rate: %u\n", sample_rate); > seq_printf(seq, "# block_order: %u\n", block_order); > seq_printf(seq, "# fallback_on_err: %u\n", fallback_on_err); >+ seq_printf(seq, "# reboot_on_err: %u\n", reboot_on_err); > seq_printf(seq, "# allow_risky_dumps: %u\n", allow_risky_dumps); > seq_printf(seq, "# dump_level: %d\n", dump_level); > seq_printf(seq, "# compress: %d\n", compress); >diff -Naur linux-2.6.9.orig/drivers/net/netdump.c linux-2.6.9/drivers/net/netdump.c >--- linux-2.6.9.orig/drivers/net/netdump.c 2007-07-17 13:30:38.000000000 +1000 >+++ linux-2.6.9/drivers/net/netdump.c 2007-07-17 13:32:04.000000000 +1000 >@@ -497,6 +497,11 @@ > kfree(req); > req = NULL; > } >+ /* >+ * The meaning of netdump_mode changes here. >+ * Netdump is in progress. --> Netdump has been executed. >+ */ >+ netdump_mode = 1; > sprintf(tmp, "NETDUMP end.\n"); > reply.code = REPLY_END_NETDUMP; > reply.nr = 0; >diff -Naur linux-2.6.9.orig/include/linux/console.h linux-2.6.9.orig/include/linux/console.h >--- linux-2.6.9.orig/include/linux/console.h 2007-07-17 13:30:16.000000000 +1000 >+++ linux-2.6.9/include/linux/console.h 2007-07-17 13:32:04.000000000 +1000 >@@ -115,7 +115,7 @@ > > /* Some debug stub to catch some of the obvious races in the VT code */ > #if 1 >-#define WARN_CONSOLE_UNLOCKED() WARN_ON(!is_console_locked() && !oops_in_progress) >+#define WARN_CONSOLE_UNLOCKED() WARN_ON((!is_console_locked() && !oops_in_progress) && ! crashdump_mode()) > #else > #define WARN_CONSOLE_UNLOCKED() > #endif >diff -Naur linux-2.6.9.orig/kernel/panic.c linux-2.6.9/kernel/panic.c >--- linux-2.6.9.orig/kernel/panic.c 2007-07-17 13:30:14.000000000 +1000 >+++ linux-2.6.9/kernel/panic.c 2007-07-17 13:32:04.000000000 +1000 >@@ -21,10 +21,12 @@ > #include <linux/nmi.h> > > int panic_timeout; >+int reboot_on_dump_err = 1; > int panic_on_oops = 1; > int tainted; > > EXPORT_SYMBOL(panic_timeout); >+EXPORT_SYMBOL_GPL(reboot_on_dump_err); > > struct notifier_block *panic_notifier_list; > >@@ -76,12 +78,13 @@ > bust_spinlocks(0); > > #ifdef CONFIG_SMP >- smp_send_stop(); >+ if (!crashdump_mode()) >+ smp_send_stop(); > #endif > > notifier_call_chain(&panic_notifier_list, 0, buf); > >- if (panic_timeout > 0) >+ if (panic_timeout > 0 && reboot_on_dump_err) > { > /* > * Delay timeout seconds before rebooting the machine.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 248666
: 159493 |
311298
|
311299
|
311300
|
326668