Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Sep 2010 15:23:01 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r212295 - in projects/sv/sys: amd64/amd64 arm/arm i386/i386 ia64/ia64 sparc64/sparc64 sun4v/sun4v
Message-ID:  <201009071523.o87FN1TA004197@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Tue Sep  7 15:23:00 2010
New Revision: 212295
URL: http://svn.freebsd.org/changeset/base/212295

Log:
  If the upper bound is 0 the dumping mechanism will not use disks
  thus set dumplo to 0.
  
  Side note: in future, dumpsys() may be further layered in order to be
  fully disk agnostic and splitted in several functions that can be used
  by other code (like an eventual netdumpsys()) for building easilly
  their own dumping function without taking disks into account at all.
  
  This is left as further refinement after netdump enters the tree,
  likely.

Modified:
  projects/sv/sys/amd64/amd64/dump_machdep.c
  projects/sv/sys/amd64/amd64/minidump_machdep.c
  projects/sv/sys/arm/arm/dump_machdep.c
  projects/sv/sys/arm/arm/minidump_machdep.c
  projects/sv/sys/i386/i386/dump_machdep.c
  projects/sv/sys/i386/i386/minidump_machdep.c
  projects/sv/sys/ia64/ia64/dump_machdep.c
  projects/sv/sys/sparc64/sparc64/dump_machdep.c
  projects/sv/sys/sun4v/sun4v/dump_machdep.c

Modified: projects/sv/sys/amd64/amd64/dump_machdep.c
==============================================================================
--- projects/sv/sys/amd64/amd64/dump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/amd64/amd64/dump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -296,13 +296,20 @@ dumpsys(struct dumperinfo *di)
 	dumpsize += fileofs;
 	hdrgap = fileofs - DEV_ALIGN(hdrsz);
 
-	/* Determine dump offset on device. */
-	if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
-		error = ENOSPC;
-		goto fail;
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+
+		/* Determine dump offset on device. */
+		if (di->mediasize <
+		    SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
+			error = ENOSPC;
+			goto fail;
+		}
+		dumplo = di->mediaoffset + di->mediasize - dumpsize;
+		dumplo -= sizeof(kdh) * 2;
 	}
-	dumplo = di->mediaoffset + di->mediasize - dumpsize;
-	dumplo -= sizeof(kdh) * 2;
 
 	mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_AMD64_VERSION, dumpsize, di->blocksize);
 

Modified: projects/sv/sys/amd64/amd64/minidump_machdep.c
==============================================================================
--- projects/sv/sys/amd64/amd64/minidump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/amd64/amd64/minidump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -242,13 +242,20 @@ minidumpsys(struct dumperinfo *di)
 	}
 	dumpsize += PAGE_SIZE;
 
-	/* Determine dump offset on device. */
-	if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
-		error = ENOSPC;
-		goto fail;
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+
+		/* Determine dump offset on device. */
+		if (di->mediasize <
+		    SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
+			error = ENOSPC;
+			goto fail;
+		}
+		dumplo = di->mediaoffset + di->mediasize - dumpsize;
+		dumplo -= sizeof(kdh) * 2;
 	}
-	dumplo = di->mediaoffset + di->mediasize - dumpsize;
-	dumplo -= sizeof(kdh) * 2;
 	progress = dumpsize;
 
 	/* Initialize mdhdr */

Modified: projects/sv/sys/arm/arm/dump_machdep.c
==============================================================================
--- projects/sv/sys/arm/arm/dump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/arm/arm/dump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -303,13 +303,20 @@ dumpsys(struct dumperinfo *di)
 	dumpsize += fileofs;
 	hdrgap = fileofs - DEV_ALIGN(hdrsz);
 
-	/* Determine dump offset on device. */
-	if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
-		error = ENOSPC;
-		goto fail;
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+
+		/* Determine dump offset on device. */
+		if (di->mediasize <
+		    SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
+			error = ENOSPC;
+			goto fail;
+		}
+		dumplo = di->mediaoffset + di->mediasize - dumpsize;
+		dumplo -= sizeof(kdh) * 2;
 	}
-	dumplo = di->mediaoffset + di->mediasize - dumpsize;
-	dumplo -= sizeof(kdh) * 2;
 
 	mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_ARM_VERSION, dumpsize, di->blocksize);
 

Modified: projects/sv/sys/arm/arm/minidump_machdep.c
==============================================================================
--- projects/sv/sys/arm/arm/minidump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/arm/arm/minidump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -276,14 +276,21 @@ minidumpsys(struct dumperinfo *di)
 
 	dumpsize += PAGE_SIZE;
 
-	/* Determine dump offset on device. */
-	if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
-		error = ENOSPC;
-		goto fail;
-	}
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+
+		/* Determine dump offset on device. */
+		if (di->mediasize <
+		    SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
+			error = ENOSPC;
+			goto fail;
+		}
 
-	dumplo = di->mediaoffset + di->mediasize - dumpsize;
-	dumplo -= sizeof(kdh) * 2;
+		dumplo = di->mediaoffset + di->mediasize - dumpsize;
+		dumplo -= sizeof(kdh) * 2;
+	}
 	progress = dumpsize;
 
 	/* Initialize mdhdr */

Modified: projects/sv/sys/i386/i386/dump_machdep.c
==============================================================================
--- projects/sv/sys/i386/i386/dump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/i386/i386/dump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -296,13 +296,20 @@ dumpsys(struct dumperinfo *di)
 	dumpsize += fileofs;
 	hdrgap = fileofs - DEV_ALIGN(hdrsz);
 
-	/* Determine dump offset on device. */
-	if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
-		error = ENOSPC;
-		goto fail;
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+
+		/* Determine dump offset on device. */
+		if (di->mediasize <
+		    SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
+			error = ENOSPC;
+			goto fail;
+		}
+		dumplo = di->mediaoffset + di->mediasize - dumpsize;
+		dumplo -= sizeof(kdh) * 2;
 	}
-	dumplo = di->mediaoffset + di->mediasize - dumpsize;
-	dumplo -= sizeof(kdh) * 2;
 
 	mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_I386_VERSION, dumpsize, di->blocksize);
 

Modified: projects/sv/sys/i386/i386/minidump_machdep.c
==============================================================================
--- projects/sv/sys/i386/i386/minidump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/i386/i386/minidump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -242,13 +242,19 @@ minidumpsys(struct dumperinfo *di)
 	}
 	dumpsize += PAGE_SIZE;
 
-	/* Determine dump offset on device. */
-	if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
-		error = ENOSPC;
-		goto fail;
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+
+		/* Determine dump offset on device. */
+		if (di->mediasize <
+		    SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
+			error = ENOSPC;
+			goto fail;
+		}
+		dumplo = di->mediaoffset + di->mediasize - dumpsize;
+		dumplo -= sizeof(kdh) * 2;
 	}
-	dumplo = di->mediaoffset + di->mediasize - dumpsize;
-	dumplo -= sizeof(kdh) * 2;
 	progress = dumpsize;
 
 	/* Initialize mdhdr */

Modified: projects/sv/sys/ia64/ia64/dump_machdep.c
==============================================================================
--- projects/sv/sys/ia64/ia64/dump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/ia64/ia64/dump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -231,13 +231,20 @@ dumpsys(struct dumperinfo *di)
 	dumpsize += fileofs;
 	hdrgap = fileofs - DEV_ALIGN(hdrsz);
 
-	/* Determine dump offset on device. */
-	if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
-		error = ENOSPC;
-		goto fail;
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+
+		/* Determine dump offset on device. */
+		if (di->mediasize <
+		    SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) {
+			error = ENOSPC;
+			goto fail;
+		}
+		dumplo = di->mediaoffset + di->mediasize - dumpsize;
+		dumplo -= sizeof(kdh) * 2;
 	}
-	dumplo = di->mediaoffset + di->mediasize - dumpsize;
-	dumplo -= sizeof(kdh) * 2;
 
 	mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_IA64_VERSION, dumpsize, di->blocksize);
 

Modified: projects/sv/sys/sparc64/sparc64/dump_machdep.c
==============================================================================
--- projects/sv/sys/sparc64/sparc64/dump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/sparc64/sparc64/dump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -157,17 +157,22 @@ dumpsys(struct dumperinfo *di)
 	    DEV_BSIZE);
 	size += hdrsize;
 
-	totsize = size + 2 * sizeof(kdh);
-	if (totsize > di->mediasize) {
-		printf("Insufficient space on device (need %ld, have %ld), "
-		    "refusing to dump.\n", (long)totsize,
-		    (long)di->mediasize);
-		error = ENOSPC;
-		goto fail;
-	}
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+		totsize = size + 2 * sizeof(kdh);
+		if (totsize > di->mediasize) {
+			printf("Insufficient space on device (need %ld, "
+			    "have %ld), refusing to dump.\n", (long)totsize,
+			    (long)di->mediasize);
+			error = ENOSPC;
+			goto fail;
+		}
 
-	/* Determine dump offset on device. */
-	dumplo = di->mediaoffset + di->mediasize - totsize;
+		/* Determine dump offset on device. */
+		dumplo = di->mediaoffset + di->mediasize - totsize;
+	}
 
 	mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size, di->blocksize);
 

Modified: projects/sv/sys/sun4v/sun4v/dump_machdep.c
==============================================================================
--- projects/sv/sys/sun4v/sun4v/dump_machdep.c	Tue Sep  7 14:43:42 2010	(r212294)
+++ projects/sv/sys/sun4v/sun4v/dump_machdep.c	Tue Sep  7 15:23:00 2010	(r212295)
@@ -160,17 +160,22 @@ dumpsys(struct dumperinfo *di)
 	    DEV_BSIZE);
 	size += hdrsize;
 
-	totsize = size + 2 * sizeof(kdh);
-	if (totsize > di->mediasize) {
-		printf("Insufficient space on device (need %ld, have %ld), "
-		    "refusing to dump.\n", (long)totsize,
-		    (long)di->mediasize);
-		error = ENOSPC;
-		goto fail;
-	}
+	/* If the upper bound is 0, dumper likely will not use disks. */
+	if ((di->mediaoffset + di->mediasize) == 0)
+		dumplo = 0;
+	else {
+		totsize = size + 2 * sizeof(kdh);
+		if (totsize > di->mediasize) {
+			printf("Insufficient space on device (need %ld, "
+			    "have %ld), refusing to dump.\n", (long)totsize,
+			    (long)di->mediasize);
+			error = ENOSPC;
+			goto fail;
+		}
 
-	/* Determine dump offset on device. */
-	dumplo = di->mediaoffset + di->mediasize - totsize;
+		/* Determine dump offset on device. */
+		dumplo = di->mediaoffset + di->mediasize - totsize;
+	}
 
 	mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size, di->blocksize);
 



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