.\" -*- nroff -*-
.\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\" 
.TH E2FSCK 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
e2fsck \- check a Linux second extended file system
.SH SYNOPSIS
.B e2fsck
[
.B \-pacnyrdfvstFSV
]
[
.B \-b
.I superblock
]
[
.B \-B
.I blocksize
]
[
.B \-l|-L
.I bad_blocks_file
]
.I device
.SH DESCRIPTION
.B e2fsck
is used to check a Linux second extended file system.
.TP
.I device
is the special file corresponding to the device (e.g /dev/hdXX).
.SH OPTIONS
.TP
.I -a 
This option does the same thing as the 
.I -p
option.  It is provided for backwards compatibility only; it is
suggested that people use 
.I -p 
option whenever possible.
.TP
.I -b superblock
Instead of using the normal superblock, use an alternative superblock
specified by 
.IR superblock .  This option is normally used when the primary superblock 
has been corrupted; most filesystems have primary superblocks located at 
blocks 8193, 16385, etc.  If an alternative superblock is specified and 
the filesystem is not opened read-only, e2fsck will make sure that the
primary superblock is updated appropriately upon completion of the 
filesystem check.
.TP
.I -B blocksize
Normally, 
.B e2fsck
will search for the superblock at various different
block sizes in an attempt to find the appropriate block size.
This search can be fooled in some cases.  This option forces 
.B e2fsck
to only try locating the superblock at a particular blocksize.
If the superblock is not found, 
.B e2fsck 
will terminate with a fatal error.
.TP
.I -c
This option causes 
.B e2fsck 
to run the 
.BR badblocks (8)
program to find any blocks which are bad on the filesystem, 
and then marks them as bad by adding them to the bad block inode.
.TP
.I -d
Print debugging output (useless unless you are debugging
.BR e2fsck ).
.TP
.I -f
Force checking even if the file system seems clean.
.TP
.I -F
Flush the filesystem device's buffer caches before beginning.  Only
really useful for doing 
.B e2fsck 
time trials.
.TP
.I -l filename
Add the blocks listed in the file specified by 
.I filename
to the list of bad blocks.  The format of this file is the same as the
one generated by the 
.BR badblocks (8)
program.
.TP
.I -L filename
Set the bad blocks list to be the list of blocks specified by 
.IR filename .
(This option is the same as the 
.I -l
option, except the bad blocks list is cleared before the blocks listed
in the file are added to the bad blocks list.)
.TP
.I -n
Open the filesystem read-only, and assume an answer of ``no'' to all
questions.  Allows
.B e2fsck
to be used non-interactively.  (Note: if the 
.IR -c ,
.IR -l ,
or
.I -L
options are specified in addition to the 
.I -n
option, then the filesystem will be opened read-write, to permit the
bad-blocks list to be updated.  However, no other changes will be made
to the filesystem.)
.TP
.I -p
Automatically repair ("preen") the file system without any questions.
.TP
.I -r
This option does nothing at all; it is provided only for backwards
compatibility.
.TP 
.I -s
This option will byte-swap the filesystem so that it is using the normalized, 
standard byte-order (which is i386 or little endian).  If the filesystem is
already in the standard byte-order, 
.B e2fsck 
will take no action.
.TP
.I -S
This option will byte-swap the filesystem, regardless of its current 
byte-order.
.TP
.I -t
Print timing statistics for
.BR e2fsck .
If this option is used twice, additional timing statistics are printed
on a pass by pass basis.
.TP
.I -v
Verbose mode.
.TP
.I -V
Print version information and exit.
.TP
.I -y
Assume an answer of ``yes'' to all questions; allows 
.B e2fsck
to be used non-interactively.
.SH EXIT CODE
The exit code returned by
.B e2fsck
is the sum of the following conditions:
.br
\	0\	\-\ No errors
.br
\	1\	\-\ File system errors corrected
.br
\	2\	\-\ File system errors corrected, system should
.br
\	\	\ \ be rebooted if file system was mounted
.br
\	4\	\-\ File system errors left uncorrected
.br
\	8\	\-\ Operational error
.br
\	16\	\-\ Usage or syntax error
.br
\	128\	\-\ Shared library error
.br
.SH REPORTING BUGS
Almost any piece of software will have bugs.  If you manage to find a
filesystem which causes 
.B e2fsck
to crash, or which 
.B e2fsck
is unable to repair, please report it to the author.
.PP
Please include as much information as possible in your bug report.
Ideally, include a complete transcript of the
.B e2fsck
run, so I can see exactly what error messages are displayed.  If you
have a writeable filesystem where the transcript can be stored, the 
.BR script (1)
program is a handy way to save the output of
.B e2fsck
to a file.
.PP
It is also useful to send the output of 
.BR dumpe2fs (8).
If a specific inode or inodes seems to be giving 
.B e2fsck 
trouble, try running the
.BR debugfs (8)
command and send the output of the 
.BR stat (1u)
command run on the relevant inode(s).  If the inode is a directory, the 
.B debugfs
.I dump
command will allow you to extract the contents of the directory inode,
which can sent to me after being first run through
.BR uuencode (1).
.PP
Always include the full version string which 
.B e2fsck
displays when it is run, so I know which version you are running.
.SH AUTHOR
This version of 
.B e2fsck
was written by Theodore Ts'o <tytso@mit.edu>.
.SH SEE ALSO
.BR mke2fs (8),
.BR tune2fs (8),
.BR dumpe2fs (8),
.BR debugfs (8)
