aboutsummaryrefslogtreecommitdiff
path: root/sbin/fsck_ffs/pass5.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/fsck_ffs/pass5.c')
-rw-r--r--sbin/fsck_ffs/pass5.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/sbin/fsck_ffs/pass5.c b/sbin/fsck_ffs/pass5.c
index 6876f859140e..0da8998f9b51 100644
--- a/sbin/fsck_ffs/pass5.c
+++ b/sbin/fsck_ffs/pass5.c
@@ -37,7 +37,6 @@ static const char sccsid[] = "@(#)pass5.c 8.9 (Berkeley) 4/28/95";
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#define IN_RTLD /* So we pickup the P_OSREL defines */
#include <sys/param.h>
#include <sys/sysctl.h>
@@ -63,7 +62,7 @@ pass5(void)
int inomapsize, blkmapsize;
struct fs *fs = &sblock;
ufs2_daddr_t d, dbase, dmax, start;
- int rewritecg = 0, cgckadd = 0;
+ int rewritecg = 0;
struct csum *cs;
struct csum_total cstotal;
struct inodesc idesc[3];
@@ -74,13 +73,10 @@ pass5(void)
inoinfo(UFS_WINO)->ino_state = USTATE;
memset(newcg, 0, (size_t)fs->fs_cgsize);
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_CYLGRP &&
- reply("ADD CYLINDER GROUP CHECKSUM PROTECTION") != 0) {
+ /* check to see if we are to add a cylinder group check hash */
+ if ((ckhashadd & CK_CYLGRP) != 0) {
fs->fs_metackhash |= CK_CYLGRP;
rewritecg = 1;
- cgckadd = 1;
sbdirty();
}
if (cvtlevel >= 3) {
@@ -178,14 +174,20 @@ pass5(void)
cg = cgbp->b_un.b_cg;
if (!cg_chkmagic(cg))
pfatal("CG %d: BAD MAGIC NUMBER\n", c);
- if ((fs->fs_metackhash & CK_CYLGRP) != 0 && cgckadd == 0) {
+ /*
+ * If we have a cylinder group check hash and are not adding
+ * it for the first time, verify that it is good.
+ */
+ if ((fs->fs_metackhash & CK_CYLGRP) != 0 &&
+ (ckhashadd & CK_CYLGRP) == 0) {
uint32_t ckhash, thishash;
ckhash = cg->cg_ckhash;
cg->cg_ckhash = 0;
thishash = calculate_crc32c(~0L, cg, fs->fs_cgsize);
if (ckhash != thishash)
- pwarn("CG %d: BAD CHECKSUM %#x vs %#x", c, ckhash, thishash);
+ pwarn("CG %d: BAD CHECK-HASH %#x vs %#x",
+ c, ckhash, thishash);
cg->cg_ckhash = ckhash;
}
newcg->cg_time = cg->cg_time;