.\" -*- 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 file systems 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 file systems that use journaling,
.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 file systems.  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 file system is mounted.
If
.B e2fsck
asks whether or not you should check a file system 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
.B \-p
are specified), the program will ask the user to fix each problem found in the
file system.  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 backup superblocks is dependent on the
file system's blocksize, the number of blocks per group, and features
such as
.BR sparse_super .
.IP
Additional backup superblocks can be determined by using the
.B mke2fs
program using the
.B \-n
option to print out where the superblocks exist, supposing
.B mke2fs
is supplied with arguments that are consistent with the file system's layout
(e.g.\& blocksize, blocks per group,
.BR sparse_super ,
etc.).
.IP
If an alternative superblock is specified and
the file system is not opened read-only, e2fsck will make sure that the
primary superblock is updated appropriately upon completion of the
file system 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 file system
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 file system.  This option causes e2fsck to
try to optimize all directories, either by re-indexing them if the
file system supports directory indexing, or by sorting and compressing
directories for smaller directories, or for file systems 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 file system 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 file system.  The version number may
be 1 or 2.  The default extended attribute version format is 2.
.TP
.B journal_only
Only replay the journal if required, but do not perform any further checks
or repairs.
.TP
.B fragcheck
During pass 1, print a detailed report of any discontiguous blocks for
files in the file system.
.TP
.B discard
Attempt to discard free blocks and unused inode blocks after the full
file system check (discarding blocks is useful on solid state devices and sparse
/ thin-provisioned storage).
Note that discard is done in pass 5 AFTER the
file system 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
.B 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
.B no_optimize_extents
Do not offer to optimize the extent tree by eliminating unnecessary
width or depth.  This can also be enabled in the options section of
.BR /etc/e2fsck.conf .
.TP
.B optimize_extents
Offer to optimize the extent tree by eliminating unnecessary
width or depth.  This is the default unless otherwise specified in
.BR /etc/e2fsck.conf .
.TP
.B inode_count_fullmap
Trade off using memory for speed when checking a file system with a
large number of hard-linked files.  The amount of memory required is
proportional to the number of inodes in the file system.  For large file
systems, this can be gigabytes of memory.  (For example, a 40\ TB file system
with 2.8 billion inodes will consume an additional 5.7 GB memory if this
optimization is enabled.)  This optimization can also be enabled in the
options section of
.BR /etc/e2fsck.conf .
.TP
.B no_inode_count_fullmap
Disable the
.B inode_count_fullmap
optimization.  This is the default unless otherwise specified in
.BR /etc/e2fsck.conf .
.TP
.B 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 4\ MiB on a regular ext4 file system); if this amount is more
than 1/50th of total physical memory, readahead is disabled.  Set this to zero
to disable readahead entirely.
.TP
.B bmap2extent
Convert block-mapped files to extent-mapped files.
.TP
.B 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
.B check_encoding
Force verification of encoded filenames in case-insensitive directories.
This is the default mode if the file system has the strict flag enabled.
.TP
.B unshare_blocks
If the file system 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 file system 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.
.IP
Note that unshare_blocks implies the "\-f" option to ensure that all passes
are run.
Additionally, if "\-n" is also specified, e2fsck will simulate trying
to allocate enough space to deduplicate.
If this fails, the exit code will be non-zero.
.RE
.TP
.B \-f
Force checking even if the file system seems clean.
.TP
.B \-F
Flush the file system 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 file system can be
@JDEV@found.
.TP
.B \-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 file system.  Hence,
.BR badblocks (8)
must be given the blocksize of the file system 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 file system 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 file system 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
.BR 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
.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
file system 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
.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 file system 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 file system, 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 ENVIRONMENT
.TP
.B E2FSCK_CONFIG
Determines the location of the configuration file (see
.BR e2fsck.conf (5)).
.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)
