Author: delphij
Date: Mon Apr 27 19:15:33 2009
New Revision: 191588
URL: http://svn.freebsd.org/changeset/base/191588

Log:
  Add -C back.
  
  Approved by:  re (kensmith)

Modified:
  releng/7.2/sbin/fsck_ffs/fsck.h
  releng/7.2/sbin/fsck_ffs/fsck_ffs.8
  releng/7.2/sbin/fsck_ffs/main.c
  releng/7.2/sbin/fsck_ffs/setup.c

Modified: releng/7.2/sbin/fsck_ffs/fsck.h
==============================================================================
--- releng/7.2/sbin/fsck_ffs/fsck.h     Mon Apr 27 19:15:14 2009        
(r191587)
+++ releng/7.2/sbin/fsck_ffs/fsck.h     Mon Apr 27 19:15:33 2009        
(r191588)
@@ -271,6 +271,7 @@ int bkgrdflag;              /* use a snapshot to run
 int    bflag;                  /* location of alternate super block */
 int    debug;                  /* output debugging info */
 char   damagedflag;            /* run in damaged mode */
+char   ckclean;                /* only do work if not cleanly unmounted */
 int    cvtlevel;               /* convert to newer file system format */
 int    bkgrdcheck;             /* determine if background check is possible */
 int    bkgrdsumadj;            /* whether the kernel have ability to adjust 
superblock summary */

Modified: releng/7.2/sbin/fsck_ffs/fsck_ffs.8
==============================================================================
--- releng/7.2/sbin/fsck_ffs/fsck_ffs.8 Mon Apr 27 19:15:14 2009        
(r191587)
+++ releng/7.2/sbin/fsck_ffs/fsck_ffs.8 Mon Apr 27 19:15:33 2009        
(r191588)
@@ -29,7 +29,7 @@
 .\"    @(#)fsck.8      8.4 (Berkeley) 5/9/95
 .\" $FreeBSD$
 .\"
-.Dd January 20, 2009
+.Dd January 25, 2009
 .Dt FSCK_FFS 8
 .Os
 .Sh NAME
@@ -46,9 +46,9 @@
 .Ar ...
 .Sh DESCRIPTION
 The specified disk partitions and/or file systems are checked.
-In "preen" mode the clean flag of each file system's superblock is examined
-and only those file systems that
-are not marked clean are checked.
+In "preen" or "check clean" mode the clean flag of each file system's
+superblock is examined and only those file systems that are not marked clean
+are checked.
 File systems are marked clean when they are unmounted,
 when they have been mounted read-only, or when
 .Nm
@@ -175,6 +175,14 @@ Use the block specified immediately afte
 the super block for the file system.
 An alternate super block is usually located at block 32 for UFS1,
 and block 160 for UFS2.
+.It Fl C
+Check if file system was dismouted cleanly.
+If so, skip file system checks (like "preen").
+However, if the file system was not cleanly dismounted, do full checks,
+is if
+.Nm
+was invoked without
+.Fl C .
 .It Fl c
 Convert the file system to the specified level.
 Note that the level of a file system can only be raised.

Modified: releng/7.2/sbin/fsck_ffs/main.c
==============================================================================
--- releng/7.2/sbin/fsck_ffs/main.c     Mon Apr 27 19:15:14 2009        
(r191587)
+++ releng/7.2/sbin/fsck_ffs/main.c     Mon Apr 27 19:15:33 2009        
(r191588)
@@ -82,7 +82,7 @@ main(int argc, char *argv[])
        sync();
        skipclean = 1;
        damagedflag = 0;
-       while ((ch = getopt(argc, argv, "b:Bc:dDfFm:npy")) != -1) {
+       while ((ch = getopt(argc, argv, "b:Bc:CdDfFm:npy")) != -1) {
                switch (ch) {
                case 'b':
                        skipclean = 0;
@@ -132,6 +132,10 @@ main(int argc, char *argv[])
 
                case 'p':
                        preen++;
+                       /*FALLTHROUGH*/
+
+               case 'C':
+                       ckclean++;
                        break;
 
                case 'y':
@@ -151,7 +155,7 @@ main(int argc, char *argv[])
 
        if (signal(SIGINT, SIG_IGN) != SIG_IGN)
                (void)signal(SIGINT, catch);
-       if (preen)
+       if (ckclean)
                (void)signal(SIGQUIT, catchquit);
        signal(SIGINFO, infohandler);
        if (bkgrdflag) {
@@ -216,7 +220,7 @@ checkfilesys(char *filesys)
        errmsg[0] = '\0';
 
        cdevname = filesys;
-       if (debug && preen)
+       if (debug && ckclean)
                pwarn("starting\n");
        /*
         * Make best effort to get the disk name. Check first to see
@@ -251,7 +255,7 @@ checkfilesys(char *filesys)
                        exit(7);        /* Filesystem clean, report it now */
                exit(0);
        }
-       if (preen && skipclean) {
+       if (ckclean && skipclean) {
                /*
                 * If file system is gjournaled, check it here.
                 */
@@ -302,7 +306,7 @@ checkfilesys(char *filesys)
                                            "CANNOT RUN IN BACKGROUND\n");
                                }
                                if ((sblock.fs_flags & FS_UNCLEAN) == 0 &&
-                                   skipclean && preen) {
+                                   skipclean && ckclean) {
                                        /*
                                         * file system is clean;
                                         * skip snapshot and report it clean

Modified: releng/7.2/sbin/fsck_ffs/setup.c
==============================================================================
--- releng/7.2/sbin/fsck_ffs/setup.c    Mon Apr 27 19:15:14 2009        
(r191587)
+++ releng/7.2/sbin/fsck_ffs/setup.c    Mon Apr 27 19:15:33 2009        
(r191588)
@@ -65,7 +65,7 @@ static struct disklabel *getdisklabel(ch
 /*
  * Read in a superblock finding an alternate if necessary.
  * Return 1 if successful, 0 if unsuccessful, -1 if file system
- * is already clean (preen mode only).
+ * is already clean (ckclean and preen mode only).
  */
 int
 setup(char *dev)
@@ -201,7 +201,7 @@ setup(char *dev)
                pwarn("USING ALTERNATE SUPERBLOCK AT %d\n", bflag);
                bflag = 0;
        }
-       if (skipclean && preen && sblock.fs_clean) {
+       if (skipclean && ckclean && sblock.fs_clean) {
                pwarn("FILE SYSTEM CLEAN; SKIPPING CHECKS\n");
                return (-1);
        }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to