From owner-svn-soc-all@freebsd.org Sun Nov 29 13:18:27 2015 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D0451A3B524 for ; Sun, 29 Nov 2015 13:18:27 +0000 (UTC) (envelope-from def@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C04E91B11 for ; Sun, 29 Nov 2015 13:18:27 +0000 (UTC) (envelope-from def@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id tATDIRM0079112 for ; Sun, 29 Nov 2015 13:18:27 GMT (envelope-from def@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id tATDIQSB079034 for svn-soc-all@FreeBSD.org; Sun, 29 Nov 2015 13:18:26 GMT (envelope-from def@FreeBSD.org) Date: Sun, 29 Nov 2015 13:18:26 GMT Message-Id: <201511291318.tATDIQSB079034@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to def@FreeBSD.org using -f 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 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Nov 2015 13:18:27 -0000 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