From owner-svn-src-projects@FreeBSD.ORG Tue Sep 7 15:23:01 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7726810656B6; Tue, 7 Sep 2010 15:23:01 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 64DFA8FC1E; Tue, 7 Sep 2010 15:23:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o87FN1Ko004207; Tue, 7 Sep 2010 15:23:01 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o87FN1TA004197; Tue, 7 Sep 2010 15:23:01 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009071523.o87FN1TA004197@svn.freebsd.org> From: Attilio Rao Date: Tue, 7 Sep 2010 15:23:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212295 - in projects/sv/sys: amd64/amd64 arm/arm i386/i386 ia64/ia64 sparc64/sparc64 sun4v/sun4v X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Sep 2010 15:23:01 -0000 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);