From owner-svn-src-projects@FreeBSD.ORG Thu Sep 2 09:33:48 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 DC9C51065759; Thu, 2 Sep 2010 09:33:48 +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 C96FD8FC14; Thu, 2 Sep 2010 09:33:48 +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 o829XmGf098353; Thu, 2 Sep 2010 09:33:48 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o829XmS9098339; Thu, 2 Sep 2010 09:33:48 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201009020933.o829XmS9098339@svn.freebsd.org> From: Attilio Rao Date: Thu, 2 Sep 2010 09:33:48 +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: r212142 - in projects/sv/sys: amd64/amd64 arm/arm geom i386/i386 ia64/ia64 net powerpc/powerpc sparc64/sparc64 sun4v/sun4v sys 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: Thu, 02 Sep 2010 09:33:48 -0000 Author: attilio Date: Thu Sep 2 09:33:48 2010 New Revision: 212142 URL: http://svn.freebsd.org/changeset/base/212142 Log: Introduce a flag field for the dumpers and use it immediately for the DIF_NET flag. This flag is responsible for toggling a netdump and having a correct set of dumplo in the dumping routines. 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/geom/geom_disk.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/net/netdump_client.c projects/sv/sys/powerpc/powerpc/dump_machdep.c projects/sv/sys/sparc64/sparc64/dump_machdep.c projects/sv/sys/sun4v/sun4v/dump_machdep.c projects/sv/sys/sys/conf.h Modified: projects/sv/sys/amd64/amd64/dump_machdep.c ============================================================================== --- projects/sv/sys/amd64/amd64/dump_machdep.c Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/amd64/amd64/dump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -297,12 +297,17 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + if ((di->flags & DIF_NET) != 0) + dumplo = 0; + else { + 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 Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/amd64/amd64/minidump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -243,12 +243,17 @@ 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->flags & DIF_NET) != 0) + dumplo = 0; + else { + 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 Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/arm/arm/dump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -304,12 +304,17 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + if ((di->flags & DIF_NET) != 0) + dumplo = 0; + else { + 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 Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/arm/arm/minidump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -277,13 +277,18 @@ 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->flags & DIF_NET) != 0) + dumplo = 0; + else { + 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/geom/geom_disk.c ============================================================================== --- projects/sv/sys/geom/geom_disk.c Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/geom/geom_disk.c Thu Sep 2 09:33:48 2010 (r212142) @@ -182,6 +182,7 @@ g_disk_kerneldump(struct bio *bp, struct di.blocksize = dp->d_sectorsize; di.maxiosize = dp->d_maxsize; di.mediaoffset = gkd->offset; + di.flags = 0; if ((gkd->offset + gkd->length) > dp->d_mediasize) gkd->length = dp->d_mediasize - gkd->offset; di.mediasize = gkd->length; Modified: projects/sv/sys/i386/i386/dump_machdep.c ============================================================================== --- projects/sv/sys/i386/i386/dump_machdep.c Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/i386/i386/dump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -297,12 +297,17 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + if ((di->flags & DIF_NET) != 0) + dumplo = 0; + else { + 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 Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/i386/i386/minidump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -243,12 +243,17 @@ 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->flags & DIF_NET) != 0) + dumplo = 0; + else { + 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 Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/ia64/ia64/dump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -232,12 +232,17 @@ dumpsys(struct dumperinfo *di) hdrgap = fileofs - DEV_ALIGN(hdrsz); /* Determine dump offset on device. */ - if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; - goto fail; + if ((di->flags & DIF_NET) != 0) + dumplo = 0; + else { + 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/net/netdump_client.c ============================================================================== --- projects/sv/sys/net/netdump_client.c Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/net/netdump_client.c Thu Sep 2 09:33:48 2010 (r212142) @@ -1223,7 +1223,7 @@ netdump_trigger(void *arg, int howto) dumper.dumper = netdump_dumper; dumper.priv = NULL; dumper.blocksize = NETDUMP_DATASIZE; - dumper.flags = DF_NET; + dumper.flags = DIF_NET; /* in dump_machdep.c */ dumpsys(&dumper); Modified: projects/sv/sys/powerpc/powerpc/dump_machdep.c ============================================================================== --- projects/sv/sys/powerpc/powerpc/dump_machdep.c Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/powerpc/powerpc/dump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -233,8 +233,8 @@ dumpsys(struct dumperinfo *di) dumpsize += fileofs; hdrgap = fileofs - DEV_ALIGN(hdrsz); - /* For block devices, determine the dump offset on the device. */ - if (di->mediasize > 0) { + /* Determine dump offset on device. */ + if ((di->flags & DIF_NET) == 0 && di->mediasize > 0) { if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { error = ENOSPC; Modified: projects/sv/sys/sparc64/sparc64/dump_machdep.c ============================================================================== --- projects/sv/sys/sparc64/sparc64/dump_machdep.c Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/sparc64/sparc64/dump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -167,7 +167,8 @@ dumpsys(struct dumperinfo *di) } /* Determine dump offset on device. */ - dumplo = di->mediaoffset + di->mediasize - totsize; + dumplo = (di->flags & DIF_NET) != 0 ? 0 : + 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 Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/sun4v/sun4v/dump_machdep.c Thu Sep 2 09:33:48 2010 (r212142) @@ -170,7 +170,8 @@ dumpsys(struct dumperinfo *di) } /* Determine dump offset on device. */ - dumplo = di->mediaoffset + di->mediasize - totsize; + dumplo = (di->flags & DIF_NET) != 0 ? 0 : + di->mediaoffset + di->mediasize - totsize; mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_SPARC64_VERSION, size, di->blocksize); Modified: projects/sv/sys/sys/conf.h ============================================================================== --- projects/sv/sys/sys/conf.h Thu Sep 2 07:49:45 2010 (r212141) +++ projects/sv/sys/sys/conf.h Thu Sep 2 09:33:48 2010 (r212142) @@ -317,6 +317,8 @@ EVENTHANDLER_DECLARE(dev_clone, dev_clon /* Stuff relating to kernel-dump */ +#define DIF_NET 0x01 /* Dump over network. */ + struct dumperinfo { dumper_t *dumper; /* Dumping function. */ void *priv; /* Private parts. */ @@ -324,6 +326,7 @@ 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. */ + u_int flags; /* Dump device flags. */ }; int set_dumper(struct dumperinfo *);