Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Nov 2016 16:23:33 +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: r308344 - head/usr.sbin/makefs
Message-ID:  <201611051623.uA5GNXnT073120@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Sat Nov  5 16:23:33 2016
New Revision: 308344
URL: https://svnweb.freebsd.org/changeset/base/308344

Log:
  Assign a random number to di_gen (for FFS), instead of extracting it
  from struct stat.  We don't necessarily have permissions to see the
  generation number and the host OS may not have st_gen in struct stat
  anyway.  Since the kernel assigns random numbers, there's nothing
  meaningful about the generation that requires us to preserve it when
  the file system image is created.  With this change, all generation
  numbers come from random() and that makes it easier to add support
  for reproducible builds at some time in the future (i.e. by adding
  an argument to makefs that changes the behaviour of random() so that
  it always returns 0 or some predictable sequence).
  
  Differential Revision:	https://reviews.freebsd.org/D8418

Modified:
  head/usr.sbin/makefs/Makefile
  head/usr.sbin/makefs/ffs.c

Modified: head/usr.sbin/makefs/Makefile
==============================================================================
--- head/usr.sbin/makefs/Makefile	Sat Nov  5 16:17:07 2016	(r308343)
+++ head/usr.sbin/makefs/Makefile	Sat Nov  5 16:23:33 2016	(r308344)
@@ -20,7 +20,6 @@ WARNS?=	2
 .include "${SRCDIR}/ffs/Makefile.inc"
 
 CFLAGS+=-DHAVE_STRUCT_STAT_ST_FLAGS=1
-CFLAGS+=-DHAVE_STRUCT_STAT_ST_GEN=1
 
 .PATH: ${SRCTOP}/contrib/mtree
 CFLAGS+=-I${SRCTOP}/contrib/mtree

Modified: head/usr.sbin/makefs/ffs.c
==============================================================================
--- head/usr.sbin/makefs/ffs.c	Sat Nov  5 16:17:07 2016	(r308343)
+++ head/usr.sbin/makefs/ffs.c	Sat Nov  5 16:23:33 2016	(r308344)
@@ -666,9 +666,7 @@ ffs_build_dinode1(struct ufs1_dinode *di
 #if HAVE_STRUCT_STAT_ST_FLAGS
 	dinp->di_flags = cur->inode->st.st_flags;
 #endif
-#if HAVE_STRUCT_STAT_ST_GEN
-	dinp->di_gen = cur->inode->st.st_gen;
-#endif
+	dinp->di_gen = random();
 	dinp->di_uid = cur->inode->st.st_uid;
 	dinp->di_gid = cur->inode->st.st_gid;
 
@@ -716,9 +714,7 @@ ffs_build_dinode2(struct ufs2_dinode *di
 #if HAVE_STRUCT_STAT_ST_FLAGS
 	dinp->di_flags = cur->inode->st.st_flags;
 #endif
-#if HAVE_STRUCT_STAT_ST_GEN
-	dinp->di_gen = cur->inode->st.st_gen;
-#endif
+	dinp->di_gen = random();
 	dinp->di_uid = cur->inode->st.st_uid;
 	dinp->di_gid = cur->inode->st.st_gid;
 



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