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;
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to