socsvn commit: r294532 - in soc2013/def/crashdump-head: sbin/dumpon sys/dev/null sys/geom sys/sys
def at FreeBSD.org
def at FreeBSD.org
Sun Nov 29 13:18:27 UTC 2015
Author: def
Date: Sun Nov 29 13:18:25 2015
New Revision: 294532
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=294532
Log:
Implement separate I/O control for EKCD.
Modified:
soc2013/def/crashdump-head/sbin/dumpon/dumpon.c
soc2013/def/crashdump-head/sys/dev/null/null.c
soc2013/def/crashdump-head/sys/geom/geom_dev.c
soc2013/def/crashdump-head/sys/sys/disk.h
Modified: soc2013/def/crashdump-head/sbin/dumpon/dumpon.c
==============================================================================
--- soc2013/def/crashdump-head/sbin/dumpon/dumpon.c Sun Nov 29 12:33:56 2015 (r294531)
+++ soc2013/def/crashdump-head/sbin/dumpon/dumpon.c Sun Nov 29 13:18:25 2015 (r294532)
@@ -235,11 +235,11 @@
err(EX_OSFILE, "%s", argv[0]);
check_size(fd, argv[0]);
kda.kda_enable = 0;
- i = ioctl(fd, DIOCSKERNELDUMP, &kda);
+ i = ioctl(fd, DIOCSEKCD, &kda);
if (pubkeyfile != NULL)
genkey(pubkeyfile, &kda);
kda.kda_enable = 1;
- i = ioctl(fd, DIOCSKERNELDUMP, &kda);
+ i = ioctl(fd, DIOCSEKCD, &kda);
free(kda.kda_encryptedkey);
bzero(&kda, sizeof(kda));
if (i == 0 && verbose)
@@ -249,12 +249,12 @@
if (fd < 0)
err(EX_OSFILE, "%s", _PATH_DEVNULL);
kda.kda_enable = 0;
- i = ioctl(fd, DIOCSKERNELDUMP, &kda);
+ i = ioctl(fd, DIOCSEKCD, &kda);
if (i == 0 && verbose)
printf("kernel dumps disabled\n");
}
if (i < 0)
- err(EX_OSERR, "ioctl(DIOCSKERNELDUMP)");
+ err(EX_OSERR, "ioctl(DIOCSEKCD)");
exit (0);
}
Modified: soc2013/def/crashdump-head/sys/dev/null/null.c
==============================================================================
--- soc2013/def/crashdump-head/sys/dev/null/null.c Sun Nov 29 12:33:56 2015 (r294531)
+++ soc2013/def/crashdump-head/sys/dev/null/null.c Sun Nov 29 13:18:25 2015 (r294532)
@@ -108,6 +108,9 @@
error = 0;
switch (cmd) {
+ case DIOCSEKCD:
+ error = set_dumper(NULL, NULL, td, 0, NULL, 0, NULL);
+ break;
case DIOCSKERNELDUMP:
error = set_dumper(NULL, NULL, td, 0, NULL, 0, NULL);
break;
Modified: soc2013/def/crashdump-head/sys/geom/geom_dev.c
==============================================================================
--- soc2013/def/crashdump-head/sys/geom/geom_dev.c Sun Nov 29 12:33:56 2015 (r294531)
+++ soc2013/def/crashdump-head/sys/geom/geom_dev.c Sun Nov 29 13:18:25 2015 (r294532)
@@ -134,7 +134,7 @@
struct g_consumer *cp;
int error, len;
- if (dev == NULL)
+ if (dev == NULL || kda == NULL)
return (set_dumper(NULL, NULL, td, 0, NULL, 0, NULL));
cp = dev->si_drv2;
@@ -158,12 +158,15 @@
static void
init_dumpdev(struct cdev *dev)
{
+ struct diocskerneldump_arg kda;
+
+ kda.kda_enable = 1;
if (dumpdev == NULL)
return;
if (strcmp(devtoname(dev), dumpdev) != 0)
return;
- if (g_dev_setdumpdev(dev, NULL, curthread) == 0) {
+ if (g_dev_setdumpdev(dev, &kda, curthread) == 0) {
freeenv(dumpdev);
dumpdev = NULL;
}
@@ -465,7 +468,7 @@
case DIOCGFRONTSTUFF:
error = g_io_getattr("GEOM::frontstuff", cp, &i, data);
break;
- case DIOCSKERNELDUMP: {
+ case DIOCSEKCD: {
struct diocskerneldump_arg *kda;
kda = (struct diocskerneldump_arg *)data;
if (kda->kda_enable == 0)
@@ -474,6 +477,15 @@
error = g_dev_setdumpdev(dev, kda, td);
break;
}
+ case DIOCSKERNELDUMP: {
+ struct diocskerneldump_arg kda;
+ kda.kda_enable = (uint8_t)*(u_int *)data;
+ if (kda.kda_enable == 0)
+ error = g_dev_setdumpdev(NULL, NULL, td);
+ else
+ error = g_dev_setdumpdev(dev, &kda, td);
+ break;
+ }
case DIOCGFLUSH:
error = g_io_flush(cp);
break;
Modified: soc2013/def/crashdump-head/sys/sys/disk.h
==============================================================================
--- soc2013/def/crashdump-head/sys/sys/disk.h Sun Nov 29 12:33:56 2015 (r294531)
+++ soc2013/def/crashdump-head/sys/sys/disk.h Sun Nov 29 13:18:25 2015 (r294532)
@@ -61,11 +61,17 @@
uint32_t kda_encryptedkeysize;
uint8_t *kda_encryptedkey;
};
-#define DIOCSKERNELDUMP _IOW('d', 133, struct diocskerneldump_arg)
+#define DIOCSEKCD _IOW('d', 132, struct diocskerneldump_arg)
/*
* Enable/Disable the device for kernel core dumps.
*/
+#define DIOCSKERNELDUMP _IOW('d', 133, u_int) /* Set/Clear kernel dumps */
+ /*
+ * Enable/Disable (the argument is boolean) the device for kernel
+ * core dumps.
+ */
+
#define DIOCGFRONTSTUFF _IOR('d', 134, off_t)
/*
* Many disk formats have some amount of space reserved at the
More information about the svn-soc-all
mailing list