Date: Tue, 17 Nov 2020 05:59:55 +0000 (UTC) From: Kirk McKusick <mckusick@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r367750 - in stable/12/sbin: fsirand growfs tunefs Message-ID: <202011170559.0AH5xtjw093133@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mckusick Date: Tue Nov 17 05:59:55 2020 New Revision: 367750 URL: https://svnweb.freebsd.org/changeset/base/367750 Log: MFC of 367035. Require clean superblock for tunefs, growfs, and fsirand Sponsored by: Netflix Modified: stable/12/sbin/fsirand/fsirand.c stable/12/sbin/growfs/growfs.c stable/12/sbin/tunefs/tunefs.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sbin/fsirand/fsirand.c ============================================================================== --- stable/12/sbin/fsirand/fsirand.c Tue Nov 17 05:48:00 2020 (r367749) +++ stable/12/sbin/fsirand/fsirand.c Tue Nov 17 05:59:55 2020 (r367750) @@ -136,6 +136,12 @@ fsirand(char *device) return (1); } } + /* + * Check for unclean filesystem. + */ + if (sblock->fs_clean == 0 || + (sblock->fs_flags & (FS_UNCLEAN | FS_NEEDSFSCK)) != 0) + errx(1, "%s is not clean - run fsck.\n", device); if (sblock->fs_magic == FS_UFS1_MAGIC && sblock->fs_old_inodefmt < FS_44INODEFMT) { Modified: stable/12/sbin/growfs/growfs.c ============================================================================== --- stable/12/sbin/growfs/growfs.c Tue Nov 17 05:48:00 2020 (r367749) +++ stable/12/sbin/growfs/growfs.c Tue Nov 17 05:59:55 2020 (r367750) @@ -1442,6 +1442,12 @@ main(int argc, char **argv) errc(1, ret, "unable to read superblock"); } } + /* + * Check for unclean filesystem. + */ + if (fs->fs_clean == 0 || + (fs->fs_flags & (FS_UNCLEAN | FS_NEEDSFSCK)) != 0) + errx(1, "%s is not clean - run fsck.\n", *argv); memcpy(&osblock, fs, fs->fs_sbsize); free(fs); memcpy((void *)&fsun1, (void *)&fsun2, osblock.fs_sbsize); Modified: stable/12/sbin/tunefs/tunefs.c ============================================================================== --- stable/12/sbin/tunefs/tunefs.c Tue Nov 17 05:48:00 2020 (r367749) +++ stable/12/sbin/tunefs/tunefs.c Tue Nov 17 05:59:55 2020 (r367750) @@ -115,12 +115,12 @@ main(int argc, char *argv[]) switch (ch) { case 'A': - found_arg = 1; + found_arg++; Aflag++; break; case 'a': - found_arg = 1; + found_arg++; name = "POSIX.1e ACLs"; avalue = optarg; if (strcmp(avalue, "enable") && @@ -132,7 +132,7 @@ main(int argc, char *argv[]) break; case 'e': - found_arg = 1; + found_arg++; name = "maximum blocks per file in a cylinder group"; evalue = atoi(optarg); if (evalue < 1) @@ -142,7 +142,7 @@ main(int argc, char *argv[]) break; case 'f': - found_arg = 1; + found_arg++; name = "average file size"; fvalue = atoi(optarg); if (fvalue < 1) @@ -152,7 +152,7 @@ main(int argc, char *argv[]) break; case 'j': - found_arg = 1; + found_arg++; name = "softdep journaled file system"; jvalue = optarg; if (strcmp(jvalue, "enable") && @@ -164,7 +164,7 @@ main(int argc, char *argv[]) break; case 'J': - found_arg = 1; + found_arg++; name = "gjournaled file system"; Jvalue = optarg; if (strcmp(Jvalue, "enable") && @@ -176,7 +176,7 @@ main(int argc, char *argv[]) break; case 'k': - found_arg = 1; + found_arg++; name = "space to hold for metadata blocks"; kvalue = atoi(optarg); if (kvalue < 0) @@ -185,7 +185,7 @@ main(int argc, char *argv[]) break; case 'L': - found_arg = 1; + found_arg++; name = "volume label"; Lvalue = optarg; i = -1; @@ -205,7 +205,7 @@ main(int argc, char *argv[]) break; case 'l': - found_arg = 1; + found_arg++; name = "multilabel MAC file system"; lvalue = optarg; if (strcmp(lvalue, "enable") && @@ -217,7 +217,7 @@ main(int argc, char *argv[]) break; case 'm': - found_arg = 1; + found_arg++; name = "minimum percentage of free space"; mvalue = atoi(optarg); if (mvalue < 0 || mvalue > 99) @@ -226,7 +226,7 @@ main(int argc, char *argv[]) break; case 'N': - found_arg = 1; + found_arg++; name = "NFSv4 ACLs"; Nvalue = optarg; if (strcmp(Nvalue, "enable") && @@ -238,7 +238,7 @@ main(int argc, char *argv[]) break; case 'n': - found_arg = 1; + found_arg++; name = "soft updates"; nvalue = optarg; if (strcmp(nvalue, "enable") != 0 && @@ -250,7 +250,7 @@ main(int argc, char *argv[]) break; case 'o': - found_arg = 1; + found_arg++; name = "optimization preference"; if (strcmp(optarg, "space") == 0) ovalue = FS_OPTSPACE; @@ -264,12 +264,12 @@ main(int argc, char *argv[]) break; case 'p': - found_arg = 1; + found_arg++; pflag = 1; break; case 's': - found_arg = 1; + found_arg++; name = "expected number of files per directory"; svalue = atoi(optarg); if (svalue < 1) @@ -279,7 +279,7 @@ main(int argc, char *argv[]) break; case 'S': - found_arg = 1; + found_arg++; name = "Softdep Journal Size"; Svalue = atoi(optarg); if (Svalue < SUJ_MIN) @@ -288,7 +288,7 @@ main(int argc, char *argv[]) break; case 't': - found_arg = 1; + found_arg++; name = "trim"; tvalue = optarg; if (strcmp(tvalue, "enable") != 0 && @@ -310,6 +310,13 @@ main(int argc, char *argv[]) on = special = argv[0]; if (ufs_disk_fillout(&disk, special) == -1) goto err; + /* + * Check for unclean filesystem. + */ + if ((sblock.fs_clean == 0 || + (sblock.fs_flags & (FS_UNCLEAN | FS_NEEDSFSCK)) != 0) && + (found_arg > 1 || !pflag)) + errx(1, "%s is not clean - run fsck.\n", special); if (disk.d_name != special) { if (statfs(special, &stfs) != 0) warn("Can't stat %s", special);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202011170559.0AH5xtjw093133>