summaryrefslogtreecommitdiffstats
path: root/sbin/fsck_ffs/main.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2009-01-30 18:33:05 +0000
committerobrien <obrien@FreeBSD.org>2009-01-30 18:33:05 +0000
commit7d88cc57bfb464896ea2e3fd2b0cffe6d6ea7ecd (patch)
tree65f596e651497e62a137531d7771a73ad6ee6ac8 /sbin/fsck_ffs/main.c
parentf5f831de53b881b68dd4aa49b41c1ea7c73d4c6a (diff)
downloadFreeBSD-src-7d88cc57bfb464896ea2e3fd2b0cffe6d6ea7ecd.zip
FreeBSD-src-7d88cc57bfb464896ea2e3fd2b0cffe6d6ea7ecd.tar.gz
Add the '-C' "check clean" flag. If the FS is marked clean, skip file
system checking. However, if the file system is not clean, perform a full fsck. Reviewed by: delphij Obtained from: Juniper Networks
Diffstat (limited to 'sbin/fsck_ffs/main.c')
-rw-r--r--sbin/fsck_ffs/main.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sbin/fsck_ffs/main.c b/sbin/fsck_ffs/main.c
index ac4a2a0..2fdd248 100644
--- a/sbin/fsck_ffs/main.c
+++ b/sbin/fsck_ffs/main.c
@@ -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) {
@@ -215,7 +219,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
@@ -250,7 +254,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.
*/
@@ -301,7 +305,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
OpenPOWER on IntegriCloud