svn commit: r330553 - in user/markj/netdump/sys: kern sys

Mark Johnston markj at FreeBSD.org
Tue Mar 6 21:45:25 UTC 2018


Author: markj
Date: Tue Mar  6 21:45:23 2018
New Revision: 330553
URL: https://svnweb.freebsd.org/changeset/base/330553

Log:
  Simplify the kernel dump length calculation.

Modified:
  user/markj/netdump/sys/kern/kern_shutdown.c
  user/markj/netdump/sys/sys/conf.h

Modified: user/markj/netdump/sys/kern/kern_shutdown.c
==============================================================================
--- user/markj/netdump/sys/kern/kern_shutdown.c	Tue Mar  6 21:16:44 2018	(r330552)
+++ user/markj/netdump/sys/kern/kern_shutdown.c	Tue Mar  6 21:45:23 2018	(r330553)
@@ -1369,11 +1369,13 @@ dump_start(struct dumperinfo *di, struct kerneldumphea
 			kdh->dumpextent = htod64(dumpextent);
 		}
 
-		/* The offset at which to begin writing the dump. */
+		/*
+		 * The offset at which to begin writing the dump.
+		 */
 		di->dumpoff = di->mediaoffset + di->mediasize - di->blocksize -
 		    dumpextent;
 	}
-
+	di->origdumpoff = di->dumpoff;
 	return (error);
 }
 
@@ -1462,18 +1464,13 @@ dump_finish(struct dumperinfo *di, struct kerneldumphe
 		 * We now know the size of the compressed dump, so update the
 		 * header accordingly and recompute parity.
 		 */
-		kdh->dumplength = htod64(di->dumpoff -
-		    (di->mediaoffset + di->mediasize - di->blocksize - extent));
+		kdh->dumplength = htod64(di->dumpoff - di->origdumpoff);
 		kdh->parity = 0;
 		kdh->parity = kerneldump_parity(kdh);
 
 		compressor_reset(di->kdcomp->kdc_stream);
 	}
 
-	/*
-	 * Write kerneldump headers at the beginning and end of the dump extent.
-	 * Write the key after the leading header.
-	 */
 	error = dump_write_headers(di, kdh);
 	if (error != 0)
 		return (error);

Modified: user/markj/netdump/sys/sys/conf.h
==============================================================================
--- user/markj/netdump/sys/sys/conf.h	Tue Mar  6 21:16:44 2018	(r330552)
+++ user/markj/netdump/sys/sys/conf.h	Tue Mar  6 21:45:23 2018	(r330553)
@@ -344,8 +344,11 @@ struct dumperinfo {
 	u_int	maxiosize;	/* Max size allowed for an individual I/O */
 	off_t	mediaoffset;	/* Initial offset in bytes. */
 	off_t	mediasize;	/* Space available in bytes. */
+
+	/* MI kernel dump state. */
 	void	*blockbuf;	/* Buffer for padding shorter dump blocks */
 	off_t	dumpoff;	/* Offset of ongoing kernel dump. */
+	off_t	origdumpoff;	/* Starting dump offset. */
 	struct kerneldumpcrypto	*kdcrypto; /* Kernel dump crypto. */
 	struct kerneldumpcomp *kdcomp; /* Kernel dump compression. */
 };


More information about the svn-src-user mailing list