svn commit: r322646 - head/sys/kern

Mark Johnston markj at FreeBSD.org
Fri Aug 18 04:07:27 UTC 2017


Author: markj
Date: Fri Aug 18 04:07:25 2017
New Revision: 322646
URL: https://svnweb.freebsd.org/changeset/base/322646

Log:
  Remove some unneeded subroutines for padding writes to dump devices.
  
  Right now we only need to pad when writing kernel dump headers, so
  flatten three related subroutines into one. The encrypted kernel dump
  code already writes out its key in a dumper.blocksize-sized block.
  
  No functional change intended.
  
  Reviewed by:	cem, def
  Sponsored by:	Dell EMC Isilon
  Differential Revision:	https://reviews.freebsd.org/D11647

Modified:
  head/sys/kern/kern_shutdown.c

Modified: head/sys/kern/kern_shutdown.c
==============================================================================
--- head/sys/kern/kern_shutdown.c	Fri Aug 18 04:04:09 2017	(r322645)
+++ head/sys/kern/kern_shutdown.c	Fri Aug 18 04:07:25 2017	(r322646)
@@ -1152,51 +1152,25 @@ dump_write(struct dumperinfo *di, void *virtual, vm_of
 }
 
 static int
-dump_pad(struct dumperinfo *di, void *virtual, size_t length, void **buf,
-    size_t *size)
+dump_write_header(struct dumperinfo *di, struct kerneldumpheader *kdh,
+    vm_offset_t physical, off_t offset)
 {
+	void *buf;
+	size_t hdrsz;
 
-	if (length > di->blocksize)
+	hdrsz = sizeof(*kdh);
+	if (hdrsz > di->blocksize)
 		return (ENOMEM);
 
-	*size = di->blocksize;
-	if (length == di->blocksize) {
-		*buf = virtual;
-	} else {
-		*buf = di->blockbuf;
-		memcpy(*buf, virtual, length);
-		memset((uint8_t *)*buf + length, 0, di->blocksize - length);
+	if (hdrsz == di->blocksize)
+		buf = kdh;
+	else {
+		buf = di->blockbuf;
+		memset(buf, 0, di->blocksize);
+		memcpy(buf, kdh, hdrsz);
 	}
 
-	return (0);
-}
-
-static int
-dump_raw_write_pad(struct dumperinfo *di, void *virtual, vm_offset_t physical,
-    off_t offset, size_t length, size_t *size)
-{
-	void *buf;
-	int error;
-
-	error = dump_pad(di, virtual, length, &buf, size);
-	if (error != 0)
-		return (error);
-
-	return (dump_raw_write(di, buf, physical, offset, *size));
-}
-
-static int
-dump_write_header(struct dumperinfo *di, struct kerneldumpheader *kdh,
-    vm_offset_t physical, off_t offset)
-{
-	size_t size;
-	int ret;
-
-	ret = dump_raw_write_pad(di, kdh, physical, offset, sizeof(*kdh),
-	    &size);
-	if (ret == 0 && size != di->blocksize)
-		ret = EINVAL;
-	return (ret);
+	return (dump_raw_write(di, buf, physical, offset, di->blocksize));
 }
 
 /*


More information about the svn-src-all mailing list