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