Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F97546659
D34067.id102013.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D34067.id102013.diff
View Options
Index: share/man/man9/EVENTHANDLER.9
===================================================================
--- share/man/man9/EVENTHANDLER.9
+++ share/man/man9/EVENTHANDLER.9
@@ -318,6 +318,12 @@
Callbacks invoked before a linker file is about to be unloaded.
These callbacks may be used to return an error and prevent the unload from
proceeding.
+.It Vt livedumper_start
+Callback invoked before beginning a minidump of the live system.
+.It Vt livedumper_dump
+Callback invoked for each dumped block of data during a live minidump.
+.It Vt livedumper_finish
+Callback invoked once a live minidump has completed.
.It Vt lle_event
Callback invoked when an link layer event has happened.
.It Vt nmbclusters_change
Index: sys/kern/kern_vnodedumper.c
===================================================================
--- sys/kern/kern_vnodedumper.c
+++ sys/kern/kern_vnodedumper.c
@@ -31,6 +31,7 @@
#include <sys/conf.h>
#include <sys/caprights.h>
#include <sys/disk.h>
+#include <sys/eventhandler.h>
#include <sys/fcntl.h>
#include <sys/file.h>
#include <sys/kerneldump.h>
@@ -51,6 +52,14 @@
static struct sx livedump_sx;
SX_SYSINIT(livedump, &livedump_sx, "Livedump sx");
+typedef void (*livedump_fn)(void *arg, int *errorp);
+typedef void (*livedump_dump_fn)(void *arg, void *virtual, off_t offset,
+ size_t len, int *errorp);
+
+EVENTHANDLER_DECLARE(livedumper_start, livedump_fn);
+EVENTHANDLER_DECLARE(livedumper_dump, livedump_dump_fn);
+EVENTHANDLER_DECLARE(livedumper_finish, livedump_fn);
+
/*
* Invoke a live minidump on the system.
*/
@@ -94,9 +103,15 @@
/* Only allow one livedump to proceed at a time. */
sx_xlock(&livedump_sx);
+ EVENTHANDLER_INVOKE(livedumper_start, &error);
+ if (error != 0)
+ goto out;
+
dump_savectx();
error = minidumpsys(&di, true);
-
+ /* XXX: may clobber error. */
+ EVENTHANDLER_INVOKE(livedumper_finish, &error);
+out:
sx_xunlock(&livedump_sx);
vn_rangelock_unlock(vp, rl_cookie);
VOP_UNLOCK(vp);
@@ -149,6 +164,10 @@
MPASS(vp != NULL);
ASSERT_VOP_LOCKED(vp, __func__);
+ EVENTHANDLER_INVOKE(livedumper_dump, virtual, offset, length, &error);
+ if (error != 0)
+ return (error);
+
/* Done? */
if (virtual == NULL)
return (0);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Oct 1, 12:26 AM (15 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13215427
Default Alt Text
D34067.id102013.diff (2 KB)
Attached To
Mode
D34067: livedump: add event handler hooks
Attached
Detach File
Event Timeline
Log In to Comment