Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Nov 2015 13:18:26 GMT
From:      def@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r294532 - in soc2013/def/crashdump-head: sbin/dumpon sys/dev/null sys/geom sys/sys
Message-ID:  <201511291318.tATDIQSB079034@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201511291318.tATDIQSB079034>