Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Sep 2014 04:15:35 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r271449 - head/usr.bin/mkimg
Message-ID:  <201409120415.s8C4FZtt060118@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Fri Sep 12 04:15:35 2014
New Revision: 271449
URL: http://svnweb.freebsd.org/changeset/base/271449

Log:
  Be compatible with boot code that starts right after the disk label in
  the second sector by only clearing the amount of bytes needed for the
  disklabel in the second sector. Previously we were clearing exactly 1
  sector worth of bytes and as such writing over boot code that may have
  been there.
  Since we do support more than 8 partitions, make sure to set all fields
  in d_partitions. For the first 8 partitions this is unneeded, but for
  partitioons 9 and up this compensates for the fact that we don't clear
  an entire sector anymore.
  Obviously, one cannot use more than 8 partitions when using boot code
  that starts right after the disk label.
  
  Relevant GRNs:
  107879 - Employ unused bytes after the disklabel in the second sector.
  189500 - Revert the part of change 107879 that employs the unused bytes
  	 after the disklabel in the 2nd sector for boot code.
  
  Obtained from:	Juniper Networks, Inc.
  MFC after:	3 days

Modified:
  head/usr.bin/mkimg/bsd.c

Modified: head/usr.bin/mkimg/bsd.c
==============================================================================
--- head/usr.bin/mkimg/bsd.c	Fri Sep 12 03:54:16 2014	(r271448)
+++ head/usr.bin/mkimg/bsd.c	Fri Sep 12 04:15:35 2014	(r271449)
@@ -76,7 +76,7 @@ bsd_write(lba_t imgsz, void *bootcode)
 		return (ENOMEM);
 	if (bootcode != NULL) {
 		memcpy(buf, bootcode, BBSIZE);
-		memset(buf + secsz, 0, secsz);
+		memset(buf + secsz, 0, sizeof(struct disklabel));
 	} else
 		memset(buf, 0, BBSIZE);
 
@@ -110,7 +110,10 @@ bsd_write(lba_t imgsz, void *bootcode)
 		dp = &d->d_partitions[n];
 		le32enc(&dp->p_size, part->size);
 		le32enc(&dp->p_offset, part->block);
+		le32enc(&dp->p_fsize, 0);
 		dp->p_fstype = ALIAS_TYPE2INT(part->type);
+		dp->p_frag = 0;
+		le16enc(&dp->p_cpg, 0);
 	}
 
 	dp = &d->d_partitions[bsdparts];



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