.\" -*- 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 ext2/ext3/ext4 file system
.SH SYNOPSIS
.B e2fsck
[
.B \-pacnyrdfkvtDFV
]
[
.B \-b
.I superblock
]
[
.B \-B
.I blocksize
]
[
.BR \-l | \-L
.I bad_blocks_file
]
[
.B \-C
.I fd
]
@JDEV@[
@JDEV@.B \-j
@JDEV@.I external-journal
@JDEV@]
[
.B \-E
.I extended_options
]
[
.B \-z
.I undo_file
]
.I device
.SH DESCRIPTION
.B e2fsck
is used to check the ext2/ext3/ext4 family of file systems.   
For ext3 and ext4 filesystems that use a journal, if the system has been
shut down uncleanly without any errors, normally, after replaying the
committed transactions  in the journal, the file system should be
marked as clean.   Hence, for filesystems that use journalling,
.B e2fsck
will normally replay the journal and exit, unless its superblock
indicates that further checking is required.
.PP
.I device
is a block device (e.g., 
.IR /dev/sdc1 )
or file containing the file system.
.PP
Note that in general it is not safe to run
.B e2fsck
on mounted filesystems.  The only exception is if the
.B \-n
option is specified, and 
.BR \-c , 
.BR \-l ,
or
.B -L
options are 
.I not
specified.   However, even if it is safe to do so, the results printed by
.B e2fsck
are not valid if the filesystem is mounted.   If 
.B e2fsck
asks whether or not you should check a filesystem which is mounted, 
the only correct answer is ``no''.  Only experts who really know what
they are doing should consider answering this question in any other way.
.PP
If
.B e2fsck
is run in interactive mode (meaning that none of
.BR \-y ,
.BR \-n ,
or
.BR \-p
are specified), the program will ask the user to fix each problem found in the
filesystem.  A response of 'y' will fix the error; 'n' will leave the error
unfixed; and 'a' will fix the problem and all subsequent problems; pressing
Enter will proceed with the default response, which is printed before the
question mark.  Pressing Control-C terminates e2fsck immediately.
.SH OPTIONS
.TP
.B \-a 
This option does the same thing as the 
.B \-p
option.  It is provided for backwards compatibility only; it is
suggested that people use 
.B \-p 
option whenever possible.
.TP
.BI \-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.  The location of the backup superblock is dependent on the
filesystem's blocksize.  For filesystems with 1k blocksizes, a backup
superblock can be found at block 8193; for filesystems with 2k
blocksizes, at block 16384; and for 4k blocksizes, at block 32768.  
.IP
Additional backup superblocks can be determined by using the 
.B mke2fs 
program using the 
.B \-n
option to print out where the superblocks were created.   The 
.B \-b 
option to 
.BR mke2fs ,
which specifies blocksize of the filesystem must be specified in order
for the superblock locations that are printed out to be accurate.
.IP
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
.BI \-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
.B \-c
This option causes 
.B e2fsck 
to use 
.BR badblocks (8)
program to do a read-only scan of the device in order to find any bad
blocks.  If any bad blocks are found, they are added to the bad block
inode to prevent them from being allocated to a file or directory.  If
this option is specified twice, then the bad block scan will be done
using a non-destructive read-write test.
.TP
.BI \-C " fd"
This option causes
.B e2fsck
to write completion information to the specified file descriptor 
so that the progress of the filesystem 
check can be monitored.  This option is typically used by programs 
which are running
.BR e2fsck .
If the file descriptor number is negative, then absolute value of
the file descriptor will be used, and the progress information will be
suppressed initially.  It can later be enabled by sending the
.B e2fsck
process a SIGUSR1 signal.
If the file descriptor specified is 0, 
.B e2fsck
will print a completion bar as it goes about its business.  This requires
that e2fsck is running on a video console or terminal.
.TP
.B \-d
Print debugging output (useless unless you are debugging
.BR e2fsck ).
.TP
.B \-D
Optimize directories in filesystem.  This option causes e2fsck to
try to optimize all directories, either by reindexing them if the
filesystem supports directory indexing,  or by sorting and compressing
directories for smaller directories, or for filesystems using
traditional linear directories.
.IP
Even without the
.B \-D
option,
.B e2fsck
may sometimes optimize a few directories --- for example, if
directory indexing is enabled and a directory is not indexed and would
benefit from being indexed, or if the index structures are corrupted
and need to be rebuilt.  The
.B \-D
option forces all directories in the filesystem to be optimized.  This can
sometimes make them a little smaller and slightly faster to search, but
in practice, you should rarely need to use this option.
.IP
The
.B \-D
option will detect directory entries with duplicate names in a single
directory, which e2fsck normally does not enforce for performance reasons.
.TP
.BI \-E " extended_options"
Set e2fsck extended options.  Extended options are comma
separated, and may take an argument using the equals ('=') sign.  The 
following options are supported:
.RS 1.2i
.TP
.BI ea_ver= extended_attribute_version
Set the version of the extended attribute blocks which
.B e2fsck
will require while checking the filesystem.  The version number may 
be 1 or 2.  The default extended attribute version format is 2.
.TP
.BI journal_only
Only replay the journal if required, but do not perform any further checks
or repairs.
.TP
.BI fragcheck
During pass 1, print a detailed report of any discontiguous blocks for
files in the filesystem.
.TP
.BI discard
Attempt to discard free blocks and unused inode blocks after the full
filesystem check (discarding blocks is useful on solid state devices and sparse
/ thin-provisioned storage). Note that discard is done in pass 5 AFTER the
filesystem has been fully checked and only if it does not contain recognizable
errors. However there might be cases where
.B e2fsck
does not fully recognize a problem and hence in this case this
option may prevent you from further manual data recovery.
.TP
.BI nodiscard
Do not attempt to discard free blocks and unused inode blocks. This option is
exactly the opposite of discard option. This is set as default.
.TP
.BI readahead_kb
Use this many KiB of memory to pre-fetch metadata in the hopes of reducing
e2fsck runtime.  By default, this is set to the size of two block groups' inode
tables (typically 4MiB on a regular ext4 filesystem); if this amount is more
than 1/50th of total physical memory, readahead is disabled.  Set this to zero
to disable readahead entirely.
.TP
.BI bmap2extent
Convert block-mapped files to extent-mapped files.
.TP
.BI fixes_only
Only fix damaged metadata; do not optimize htree directories or compress
extent trees.  This option is incompatible with the -D and -E bmap2extent
options.
.TP
.BI unshare_blocks
If the filesystem has shared blocks, with the shared blocks read-only feature
enabled, then this will unshare all shared blocks and unset the read-only
feature bit. If there is not enough free space then the operation will fail.
If the filesystem does not have the read-only feature bit, but has shared
blocks anyway, then this option will have no effect. Note when using this
option, if there is no free space to clone blocks, there is no prompt to
delete files and instead the operation will fail.
.RE
.TP
.B \-f
Force checking even if the file system seems clean.
.TP
.B \-F
Flush the filesystem device's buffer caches before beginning.  Only
really useful for doing 
.B e2fsck 
time trials.
@JDEV@.TP
@JDEV@.BI \-j " external-journal"
@JDEV@Set the pathname where the external-journal for this filesystem can be
@JDEV@found.
.TP
.BI \-k
When combined with the 
.B \-c
option, any existing bad blocks in the bad blocks list are preserved,
and any new bad blocks found by running
.BR badblocks (8) 
will be added to the existing bad blocks list.
.TP
.BI \-l " filename"
Add the block numbers 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.  Note that the block numbers are based on the blocksize
of the filesystem.  Hence, 
.BR badblocks (8)
must be given the blocksize of the filesystem in order to obtain correct
results.  As a result, it is much simpler and safer to use the 
.B -c
option to 
.BR e2fsck ,
since it will assure that the correct parameters are passed to the
.B badblocks
program.
.TP
.BI \-L " filename"
Set the bad blocks list to be the list of blocks specified by 
.IR filename .
(This option is the same as the 
.B \-l
option, except the bad blocks list is cleared before the blocks listed
in the file are added to the bad blocks list.)
.TP
.B \-n
Open the filesystem read-only, and assume an answer of `no' to all
questions.  Allows
.B e2fsck
to be used non-interactively.  This option
may not be specified at the same time as the 
.B \-p
or
.B \-y
options.
.TP
.B \-p
Automatically repair ("preen") the file system.  This option will cause
.B e2fsck
to automatically
fix any filesystem problems that can be safely fixed without human
intervention.  If 
.B e2fsck
discovers a problem which may require the system administrator
to take additional corrective action, 
.B e2fsck
will print a description of the problem and then exit with the value 4
logically or'ed into the exit code.  (See the \fBEXIT CODE\fR section.)
This option is normally used by the system's boot scripts.  It may not 
be specified at the same time as the
.B \-n
or
.B \-y
options.
.TP
.B \-r
This option does nothing at all; it is provided only for backwards
compatibility.
.TP
.B \-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
.B \-v
Verbose mode.
.TP
.B \-V
Print version information and exit.
.TP
.B \-y
Assume an answer of `yes' to all questions; allows 
.B e2fsck
to be used non-interactively.  This option
may not be specified at the same time as the 
.B \-n
or
.B \-p
options.
.TP
.BI \-z " undo_file"
Before overwriting a file system block, write the old contents of the block to
an undo file.  This undo file can be used with e2undo(8) to restore the old
contents of the file system should something go wrong.  If the empty string is
passed as the undo_file argument, the undo file will be written to a file named
e2fsck-\fIdevice\fR.e2undo in the directory specified via the
\fIE2FSPROGS_UNDO_DIR\fR environment variable.

WARNING: The undo file cannot be used to recover from a power or system crash.
.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
.br
\	4\	\-\ File system errors left uncorrected
.br
\	8\	\-\ Operational error
.br
\	16\	\-\ Usage or syntax error
.br
\	32\	\-\ E2fsck canceled by user request
.br
\	128\	\-\ Shared library error
.br
.SH SIGNALS
The following signals have the following effect when sent to 
.BR e2fsck .
.TP
.B SIGUSR1
This signal causes
.B e2fsck
to start displaying a completion bar or emitting progress information.  
(See discussion of the 
.B \-C
option.)
.TP
.B SIGUSR2
This signal causes
.B e2fsck 
to stop displaying a completion bar or emitting progress information.
.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.  (Make sure
the messages printed by 
.B e2fsck 
are in English; if your system has been
configured so that 
.BR e2fsck 's
messages have been translated into another language, please set the the
.B LC_ALL
environment variable to
.B C
so that the transcript of e2fsck's output will be useful to me.)
If you
have a writable 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).  
The most useful data you can send to help reproduce
the bug is a compressed raw image dump of the filesystem, generated using
.BR e2image (8).
See the 
.BR e2image (8)
man page for more details.
.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 e2fsck.conf (5),
.BR badblocks (8),
.BR dumpe2fs (8),
.BR debugfs (8),
.BR e2image (8),
.BR mke2fs (8),
.BR tune2fs (8)
