svn commit: r242442 - in user/alfred/9-alfred: share/man/man4 sys/conf sys/ddb
Alfred Perlstein
alfred at FreeBSD.org
Thu Nov 1 17:19:07 UTC 2012
Author: alfred
Date: Thu Nov 1 17:19:07 2012
New Revision: 242442
URL: http://svn.freebsd.org/changeset/base/242442
Log:
Merge textdump enhancements from head.
svn merge -c 242424,242427,242428,242440 ^/head/share
svn merge -c 242424,242427,242428,242440 ^/head/sys
Modified:
user/alfred/9-alfred/share/man/man4/ddb.4
user/alfred/9-alfred/share/man/man4/textdump.4
user/alfred/9-alfred/sys/conf/NOTES
user/alfred/9-alfred/sys/conf/options
user/alfred/9-alfred/sys/ddb/db_command.c
user/alfred/9-alfred/sys/ddb/db_textdump.c
Directory Properties:
user/alfred/9-alfred/ (props changed)
user/alfred/9-alfred/share/ (props changed)
user/alfred/9-alfred/share/man/ (props changed)
user/alfred/9-alfred/share/man/man4/ (props changed)
user/alfred/9-alfred/sys/ (props changed)
user/alfred/9-alfred/sys/conf/ (props changed)
Modified: user/alfred/9-alfred/share/man/man4/ddb.4
==============================================================================
--- user/alfred/9-alfred/share/man/man4/ddb.4 Thu Nov 1 17:17:05 2012 (r242441)
+++ user/alfred/9-alfred/share/man/man4/ddb.4 Thu Nov 1 17:19:07 2012 (r242442)
@@ -1176,6 +1176,7 @@ section for more information on the scri
.It Ic textdump set
.It Ic textdump status
.It Ic textdump unset
+.It Ic textdump dump
The
.Ic textdump set
command may be used to force the next kernel core dump to be a textdump
@@ -1184,6 +1185,9 @@ rather than a traditional memory dump or
reports whether a textdump has been scheduled.
.Ic textdump unset
cancels a request to perform a textdump as the next kernel core dump.
+Use the
+.Ic textdump dump
+command to immediately perform a textdump.
More information may be found in
.Xr textdump 4 .
.El
Modified: user/alfred/9-alfred/share/man/man4/textdump.4
==============================================================================
--- user/alfred/9-alfred/share/man/man4/textdump.4 Thu Nov 1 17:17:05 2012 (r242441)
+++ user/alfred/9-alfred/share/man/man4/textdump.4 Thu Nov 1 17:19:07 2012 (r242442)
@@ -36,6 +36,9 @@
.Sh SYNOPSIS
.Cd options KDB
.Cd options DDB
+.Pp
+.Cd options TEXTDUMP_VERBOSE
+.Cd options TEXTDUMP_PREFERRED
.Sh DESCRIPTION
The
.Nm
@@ -115,7 +118,11 @@ or by setting the
.Dv debug.ddb.textdump.pending
sysctl to 1 using
.Xr sysctl 8 ,
-it is possible to request that the next dump be a textdump.
+it is possible to request that the next dump be a textdump. One can
+also directly trigger a textdump in
+.Xr ddb 4
+by running the command
+.Ic textdump dump .
.Pp
If at the
.Xr ddb 4
@@ -125,10 +132,30 @@ command line, the commands
and
.Ic textdump unset
may be used to set, query, and clear the textdump pending flag.
+The command
+.Ic textdump dump
+can be used to immediately trigger a textdump.
.Pp
As with regular kernel dumps, a dump partition must be automatically or
manually configured using
.Xr dumpon 8 .
+.Pp
+Additional kernel
+.Xr config 8
+options:
+.Bl -tag -width TEXTDUMP_PREFERRED
+.It Cd TEXTDUMP_PREFERRED
+sets textdumps to be the default manner of doing dumps. This means there
+will be no need to
+.Xr sysctl 8
+or use the
+.Ic textdump set
+.Xr ddb 8
+commands.
+.It Cd TEXTDUMP_VERBOSE
+will have the textdump facility be more verbose about each file it is emitting
+as well as other diagnostics useful to debug the textdump facility itself.
+.El
.Sh EXAMPLES
In the following example, the script
.Dv kdb.enter.panic
Modified: user/alfred/9-alfred/sys/conf/NOTES
==============================================================================
--- user/alfred/9-alfred/sys/conf/NOTES Thu Nov 1 17:17:05 2012 (r242441)
+++ user/alfred/9-alfred/sys/conf/NOTES Thu Nov 1 17:19:07 2012 (r242442)
@@ -389,6 +389,16 @@ options GDB
options SYSCTL_DEBUG
#
+# Enable textdump by default, this disables kernel core dumps.
+#
+options TEXTDUMP_PREFERRED
+
+#
+# Enable extra debug messages while performing textdumps.
+#
+options TEXTDUMP_VERBOSE
+
+#
# NO_SYSCTL_DESCR omits the sysctl node descriptions to save space in the
# resulting kernel.
options NO_SYSCTL_DESCR
Modified: user/alfred/9-alfred/sys/conf/options
==============================================================================
--- user/alfred/9-alfred/sys/conf/options Thu Nov 1 17:17:05 2012 (r242441)
+++ user/alfred/9-alfred/sys/conf/options Thu Nov 1 17:19:07 2012 (r242442)
@@ -60,6 +60,8 @@ KDB opt_global.h
KDB_TRACE opt_kdb.h
KDB_UNATTENDED opt_kdb.h
SYSCTL_DEBUG opt_sysctl.h
+TEXTDUMP_PREFERRED opt_ddb.h
+TEXTDUMP_VERBOSE opt_ddb.h
# Miscellaneous options.
ADAPTIVE_LOCKMGRS
Modified: user/alfred/9-alfred/sys/ddb/db_command.c
==============================================================================
--- user/alfred/9-alfred/sys/ddb/db_command.c Thu Nov 1 17:17:05 2012 (r242441)
+++ user/alfred/9-alfred/sys/ddb/db_command.c Thu Nov 1 17:19:07 2012 (r242442)
@@ -535,6 +535,11 @@ db_dump(db_expr_t dummy, boolean_t dummy
{
int error;
+ if (textdump_pending) {
+ db_printf("textdump_pending set.\n"
+ "run \"textdump unset\" first or \"textdump dump\" for a textdump.\n");
+ return;
+ }
error = doadump(FALSE);
if (error) {
db_printf("Cannot dump: ");
Modified: user/alfred/9-alfred/sys/ddb/db_textdump.c
==============================================================================
--- user/alfred/9-alfred/sys/ddb/db_textdump.c Thu Nov 1 17:17:05 2012 (r242441)
+++ user/alfred/9-alfred/sys/ddb/db_textdump.c Thu Nov 1 17:19:07 2012 (r242442)
@@ -61,6 +61,8 @@ __FBSDID("$FreeBSD$");
#include "opt_config.h"
+#include "opt_ddb.h"
+
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/kernel.h>
@@ -118,7 +120,11 @@ CTASSERT(sizeof(struct ustar_header) ==
* Is a textdump scheduled? If so, the shutdown code will invoke our dumpsys
* routine instead of the machine-dependent kernel dump routine.
*/
-int textdump_pending;
+#ifdef TEXTDUMP_PREFERRED
+int textdump_pending = 1;
+#else
+int textdump_pending = 0;
+#endif
SYSCTL_INT(_debug_ddb_textdump, OID_AUTO, pending, CTLFLAG_RW,
&textdump_pending, 0,
"Perform textdump instead of regular kernel dump.");
@@ -201,6 +207,10 @@ textdump_mkustar(char *block_buffer, con
{
struct ustar_header *uhp;
+#ifdef TEXTDUMP_VERBOSE
+ if (textdump_error == 0)
+ printf("textdump: creating '%s'.\n", filename);
+#endif
uhp = (struct ustar_header *)block_buffer;
bzero(uhp, sizeof(*uhp));
strlcpy(uhp->uh_filename, filename, sizeof(uhp->uh_filename));
@@ -237,6 +247,9 @@ textdump_writeblock(struct dumperinfo *d
return (ENOSPC);
textdump_error = dump_write(di, buffer, 0, offset + di->mediaoffset,
TEXTDUMP_BLOCKSIZE);
+ if (textdump_error)
+ printf("textdump_writeblock: offset %jd, error %d\n", (intmax_t)offset,
+ textdump_error);
return (textdump_error);
}
@@ -430,7 +443,7 @@ textdump_dumpsys(struct dumperinfo *di)
* of data.
*/
if (di->mediasize < SIZEOF_METADATA + 2 * sizeof(kdh)) {
- printf("Insufficient space on dump partition.\n");
+ printf("Insufficient space on dump partition for minimal textdump.\n");
return;
}
textdump_error = 0;
@@ -480,9 +493,9 @@ textdump_dumpsys(struct dumperinfo *di)
if (textdump_error == 0)
(void)dump_write(di, NULL, 0, 0, 0);
if (textdump_error == ENOSPC)
- printf("Insufficient space on dump partition\n");
+ printf("Textdump: Insufficient space on dump partition\n");
else if (textdump_error != 0)
- printf("Error %d writing dump\n", textdump_error);
+ printf("Textdump: Error %d writing dump\n", textdump_error);
else
printf("Textdump complete.\n");
textdump_pending = 0;
@@ -499,7 +512,7 @@ static void
db_textdump_usage(void)
{
- db_printf("textdump [unset|set|status]\n");
+ db_printf("textdump [unset|set|status|dump]\n");
}
void
@@ -528,6 +541,10 @@ db_textdump_cmd(db_expr_t addr, boolean_
} else if (strcmp(db_tok_string, "unset") == 0) {
textdump_pending = 0;
db_printf("textdump unset\n");
- } else
+ } else if (strcmp(db_tok_string, "dump") == 0) {
+ textdump_pending = 1;
+ doadump(TRUE);
+ } else {
db_textdump_usage();
+ }
}
More information about the svn-src-user
mailing list