Author: imp
Date: Thu Nov 16 21:28:14 2017
New Revision: 325903
URL: https://svnweb.freebsd.org/changeset/base/325903

Log:
  Only try to enable CK_CLYGRP if we're running on kernel newer than
  1200046, the first version that supports this feature. If we set it,
  then use an old kernel, we'll break the 'contract' of having
  checksummed cylinder groups this flag signifies. To avoid creating
  something with an inconsistent state, don't turn the flag on in these
  cases. The first full fsck with a new kernel will turn this on.
  
  Spnsored by: Netflix
  Differential Revision: https://reviews.freebsd.org/D13114

Modified:
  head/sbin/fsck_ffs/pass5.c
  head/sbin/newfs/mkfs.c
  head/sbin/newfs/newfs.c
  head/sys/sys/param.h

Modified: head/sbin/fsck_ffs/pass5.c
==============================================================================
--- head/sbin/fsck_ffs/pass5.c  Thu Nov 16 19:07:19 2017        (r325902)
+++ head/sbin/fsck_ffs/pass5.c  Thu Nov 16 21:28:14 2017        (r325903)
@@ -35,6 +35,7 @@ static const char sccsid[] = "@(#)pass5.c     8.9 (Berkele
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#define        IN_RTLD                 /* So we pickup the P_OSREL defines */
 #include <sys/param.h>
 #include <sys/sysctl.h>
 
@@ -73,6 +74,7 @@ pass5(void)
        newcg->cg_niblk = fs->fs_ipg;
        if (preen == 0 && yflag == 0 && fs->fs_magic == FS_UFS2_MAGIC &&
            fswritefd != -1 && (fs->fs_metackhash & CK_CYLGRP) == 0 &&
+           getosreldate() >= P_OSREL_CK_CLYGRP &&
            reply("ADD CYLINDER GROUP CHECKSUM PROTECTION") != 0) {
                fs->fs_metackhash |= CK_CYLGRP;
                rewritecg = 1;

Modified: head/sbin/newfs/mkfs.c
==============================================================================
--- head/sbin/newfs/mkfs.c      Thu Nov 16 19:07:19 2017        (r325902)
+++ head/sbin/newfs/mkfs.c      Thu Nov 16 21:28:14 2017        (r325903)
@@ -44,6 +44,7 @@ static char sccsid[] = "@(#)mkfs.c    8.11 (Berkeley) 5/3
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#define        IN_RTLD                 /* So we pickup the P_OSREL defines */
 #include <sys/param.h>
 #include <sys/disklabel.h>
 #include <sys/file.h>
@@ -495,7 +496,7 @@ restart:
        /*
         * Set flags for metadata that is being check-hashed.
         */
-       if (Oflag > 1)
+       if (Oflag > 1 && getosreldate() >= P_OSREL_CK_CLYGRP)
                sblock.fs_metackhash = CK_CYLGRP;
 
        /*

Modified: head/sbin/newfs/newfs.c
==============================================================================
--- head/sbin/newfs/newfs.c     Thu Nov 16 19:07:19 2017        (r325902)
+++ head/sbin/newfs/newfs.c     Thu Nov 16 21:28:14 2017        (r325903)
@@ -398,10 +398,6 @@ main(int argc, char *argv[])
                if (pp != NULL)
                        pp->p_size *= secperblk;
        }
-       if (getosreldate() < __FreeBSD_version) {
-               warnx("%s is newer than the running kernel and may not be 
compatible",
-                   getprogname());
-       }
        mkfs(pp, special);
        ufs_disk_close(&disk);
        if (!jflag)

Modified: head/sys/sys/param.h
==============================================================================
--- head/sys/sys/param.h        Thu Nov 16 19:07:19 2017        (r325902)
+++ head/sys/sys/param.h        Thu Nov 16 21:28:14 2017        (r325903)
@@ -84,6 +84,7 @@
 #define        P_OSREL_SHUTDOWN_ENOTCONN       1100077
 #define        P_OSREL_MAP_GUARD               1200035
 #define        P_OSREL_WRFSBASE                1200041
+#define        P_OSREL_CK_CLYGRP               1200046
 #define        P_OSREL_VMTOTAL64               1200054
 
 #define        P_OSREL_MAJOR(x)                ((x) / 100000)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to