.\" -*- nroff -*-
.\" Copyright 2006 by Theodore Ts'o.  All Rights Reserved.
.\" This file may be copied under the terms of the GNU Public License.
.\"
.TH e2fsck.conf 5 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
e2fsck.conf \- Configuration file for e2fsck
.SH DESCRIPTION
.I e2fsck.conf
is the configuration file for
.BR e2fsck (8).
It controls the default behavior of
.BR e2fsck (8)
while it is checking ext2, ext3, or ext4 filesystems.
.PP
The
.I e2fsck.conf
file uses an INI-style format.  Stanzas, or top-level sections, are
delimited by square braces: [ ].  Within each section, each line
defines a relation, which assigns tags to values, or to a subsection,
which contains further relations or subsections.
.\" Tags can be assigned multiple values
An example of the INI-style format used by this configuration file
follows below:
.P
	[section1]
.br
		tag1 = value_a
.br
		tag1 = value_b
.br
		tag2 = value_c
.P
	[section 2]
.br
		tag3 = {
.br
			subtag1 = subtag_value_a
.br
			subtag1 = subtag_value_b
.br
			subtag2 = subtag_value_c
.br
		}
.br
		tag1 = value_d
.br
		tag2 = value_e
.br
	}
.P
Comments are delimited by a semicolon (';') or a hash ('#') character
at the beginning of the comment, and are terminated by the end of
line character.
.P
Tags and values must be quoted using double quotes if they contain
spaces.  Within a quoted string, the standard backslash interpretations
apply: "\en" (for the newline character),
"\et" (for the tab character), "\eb" (for the backspace character),
and "\e\e" (for the backslash character).
.P
The following stanzas are used in the
.I e2fsck.conf
file.  They will be described in more detail in future sections of this
document.
.TP
.I [options]
This stanza contains general configuration parameters for
.BR e2fsck 's
behavior.
.TP
.I [defaults]
Contains relations which define the default parameters used by
.BR e2fsck (8).
In general, these defaults may be overridden by command-line options
provided by the user.
.TP
.I [problems]
This stanza allows the administrator to reconfigure how e2fsck handles
various filesystem inconsistencies.
@TDB_MAN_COMMENT@.TP
@TDB_MAN_COMMENT@.I [scratch_files]
@TDB_MAN_COMMENT@This stanza controls when e2fsck will attempt to use
@TDB_MAN_COMMENT@scratch files to reduce the need for memory.
.SH THE [options] STANZA
The following relations are defined in the
.I [options]
stanza.
.TP
.I allow_cancellation
If this relation is set to a boolean value of true, then if the user
interrupts e2fsck using ^C, and the filesystem is not explicitly flagged
as containing errors, e2fsck will exit with an exit status of 0 instead
of 32.  This setting defaults to false.
.TP
.I accept_time_fudge
Unfortunately, due to Windows' unfortunate design decision
to configure the hardware clock to tick localtime, instead
of the more proper and less error-prone UTC time, many
users end up in the situation where the system clock is
incorrectly set at the time when e2fsck is run.
.IP
Historically this was usually due to some distributions
having buggy init scripts and/or installers that didn't
correctly detect this case and take appropriate
countermeasures.  Unfortunately, this is occasionally
true even today, usually due to a
buggy or misconfigured virtualization manager or the
installer not having access to a network time server
during the installation process.  So by default, we allow
the superblock times to be fudged by up to 24 hours.
This can be disabled by setting
.I accept_time_fudge
to the
boolean value of false.  This setting defaults to true.
.TP
.I broken_system_clock
The
.BR e2fsck (8)
program has some heuristics that assume that the system clock is
correct.  In addition, many system programs make similar assumptions.
For example, the UUID library depends on time not going backwards in
order for it to be able to make its guarantees about issuing universally
unique ID's.  Systems with broken system clocks, are well, broken.
However, broken system clocks, particularly in embedded systems, do
exist.  E2fsck will attempt to use heuristics to determine if the time
can not be trusted; and to skip time-based checks if this is true.  If
this boolean is set to true, then e2fsck will always assume that the
system clock can not be trusted.
.TP
.I buggy_init_scripts
This boolean relation is an alias for
.I accept_time_fudge
for backwards compatibility; it used to
be that the behavior defined by
.I accept_time_fudge
above defaulted to false, and
.I buggy_init_scripts
would enable superblock time field to be wrong by up to 24 hours.  When
we changed the default, we also renamed this boolean relation to
.IR accept_time_fudge.
.TP
.I clear_test_fs_flag
This boolean relation controls whether or not
.BR e2fsck (8)
will offer to clear
the test_fs flag if the ext4 filesystem is available on the system.  It
defaults to true.
.TP
.I defer_check_on_battery
This boolean relation controls whether or not the interval between
filesystem checks (either based on time or number of mounts) should
be doubled if the system is running on battery.  This setting defaults to
true.
.TP
.I indexed_dir_slack_percentage
When
.BR e2fsck (8)
repacks a indexed directory, reserve the specified percentage of
empty space in each leaf nodes so that a few new entries can
be added to the directory without splitting leaf nodes, so that
the average fill ratio of directories can be maintained at a
higher, more efficient level.  This relation defaults to 20
percent.
.TP
.I inode_count_fullmap
If this boolean relation is true, 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 40TB file system with 2.8 billion inodes will consume an
additional 5.7 GB memory if this optimization is enabled.)  This setting
defaults to false.
.TP
.I log_dir
If the
.I log_filename
relation contains a relative pathname, then the log file will be placed
in the directory named by the
.I log_dir
relation.
.TP
.I log_dir_fallback
This relation contains an alternate directory that will be used if the
directory specified by
.I log_dir
is not available or is not writable.
.TP
.I log_dir_wait
If this boolean relation is true, them if the directories specified by
.I log_dir
or
.I log_dir_fallback
are not available or are not yet writable, e2fsck will save the output
in a memory buffer, and a child process will periodically test to see if
the log directory has become available after the boot sequence has
mounted the requested file system for reading/writing.  This implements the
functionality provided by
.BR logsave (8)
for e2fsck log files.
.TP
.I log_filename
This relation specifies the file name where a copy of e2fsck's output
will be written.   If certain problem reports are suppressed using the
.I max_count_problems
relation, (or on a per-problem basis using the
.I max_count
relation), the full set of problem reports will be written to the log
file.  The filename may contain various percent-expressions (%D, %T, %N,
etc.) which will be expanded so that the file name for the log file can
include things like date, time, device name, and other run-time
parameters.  See the
.B LOGGING
section for more details.
.TP
.I max_count_problems
This relation specifies the maximum number of problem reports of a
particular type will be printed to stdout before further problem reports
of that type are squelched.  This can be useful if the console is slow
(i.e., connected to a serial port) and so a large amount of output could
end up delaying the boot process for a long time (potentially hours).
.TP
.I no_optimize_extents
If this boolean relation is true, do not offer to optimize the extent
tree by reducing the tree's width or depth.  This setting defaults to false.
.TP
.I readahead_mem_pct
Use this percentage of memory to try to read in metadata blocks ahead of the
main e2fsck thread.  This should reduce run times, depending on the speed of
the underlying storage and the amount of free memory.  There is no default, but
see
.B readahead_kb
for more details.
.TP
.I readahead_kb
Use this amount of memory to read in metadata blocks ahead of the main checking
thread.  Setting this value to zero disables readahead entirely.  By default,
this is set 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.
.TP
.I report_features
If this boolean relation is true, e2fsck will print the file system
features as part of its verbose reporting (i.e., if the
.B -v
option is specified)
.TP
.I report_time
If this boolean relation is true, e2fsck will run as if the options
.B -tt
are always specified.  This will cause e2fsck to print timing statistics
on a pass by pass basis for full file system checks.
.TP
.I report_verbose
If this boolean relation is true, e2fsck will run as if the option
.B -v
is always specified.  This will cause e2fsck to print some additional
information at the end of each full file system check.
.SH THE [defaults] STANZA
The following relations are defined in the
.I [defaults]
stanza.
.TP
.I undo_dir
This relation specifies the directory where the undo file should be
stored.  It can be overridden via the
.B E2FSPROGS_UNDO_DIR
environment variable.  If the directory location is set to the value
.IR none ,
.B e2fsck
will not create an undo file.
.SH THE [problems] STANZA
Each tag in the
.I [problems]
stanza names a problem code specified with a leading "0x" followed by
six hex digits.
The value of the tag is a subsection where the relations in that
subsection override the default treatment of that particular problem
code.
.P
Note that inappropriate settings in this stanza may cause
.B e2fsck
to behave incorrectly, or even crash.  Most system administrators should
not be making changes to this section without referring to source code.
.P
Within each problem code's subsection, the following tags may be used:
.TP
.I description
This relation allows the message which is printed when this filesystem
inconsistency is detected to be overridden.
.TP
.I preen_ok
This boolean relation overrides the default behavior controlling
whether this filesystem problem should be automatically fixed when
.B e2fsck
is running in preen mode.
.TP
.I max_count
This integer relation overrides the
.I max_count_problems
parameter (set in the options section) for this particular problem.
.TP
.I no_ok
This boolean relation overrides the default behavior determining
whether or not the filesystem will be marked as inconsistent if the user
declines to fix the reported problem.
.TP
.I no_default
This boolean relation overrides whether the default answer for this
problem (or question) should be "no".
.TP
.I preen_nomessage
This boolean relation overrides the default behavior controlling
whether or not the description for this filesystem problem should
be suppressed when
.B e2fsck
is running in preen mode.
.TP
.I no_nomsg
This boolean relation overrides the default behavior controlling
whether or not the description for this filesystem problem should
be suppressed when a problem forced not to be fixed, either because
.B e2fsck
is run with the
.B -n
option or because the
.I force_no
flag has been set for the problem.
.TP
.I force_no
This boolean option, if set to true, forces a problem to never be fixed.
That is, it will be as if the user problem responds 'no' to the question
of 'should this problem be fixed?'.  The
.I force_no
option even overrides the
.B -y
option given on the command-line (just for the specific problem, of course).
.TP
.I not_a_fix
This boolean option, it set to true, marks the problem as
one where if the user gives permission to make the requested change,
it does not mean that the file system had a problem which has since
been fixed.  This is used for requests to optimize the file system's
data structure, such as pruning an extent tree.
@TDB_MAN_COMMENT@.SH THE [scratch_files] STANZA
@TDB_MAN_COMMENT@The following relations are defined in the
@TDB_MAN_COMMENT@.I [scratch_files]
@TDB_MAN_COMMENT@stanza.
@TDB_MAN_COMMENT@.TP
@TDB_MAN_COMMENT@.I directory
@TDB_MAN_COMMENT@If the directory named by this relation exists and is
@TDB_MAN_COMMENT@writeable, then e2fsck will attempt to use this
@TDB_MAN_COMMENT@directory to store scratch files instead of using
@TDB_MAN_COMMENT@in-memory data structures.
@TDB_MAN_COMMENT@.TP
@TDB_MAN_COMMENT@.I numdirs_threshold
@TDB_MAN_COMMENT@If this relation is set, then in-memory data structures
@TDB_MAN_COMMENT@will be used if the number of directories in the filesystem
@TDB_MAN_COMMENT@are fewer than amount specified.
@TDB_MAN_COMMENT@.TP
@TDB_MAN_COMMENT@.I dirinfo
@TDB_MAN_COMMENT@This relation controls whether or not the scratch file
@TDB_MAN_COMMENT@directory is used instead of an in-memory data
@TDB_MAN_COMMENT@structure for directory information.  It defaults to
@TDB_MAN_COMMENT@true.
@TDB_MAN_COMMENT@.TP
@TDB_MAN_COMMENT@.I icount
@TDB_MAN_COMMENT@This relation controls whether or not the scratch file
@TDB_MAN_COMMENT@directory is used instead of an in-memory data
@TDB_MAN_COMMENT@structure when tracking inode counts.  It defaults to
@TDB_MAN_COMMENT@true.
.SH LOGGING
E2fsck has the facility to save the information from an e2fsck run in a
directory so that a system administrator can review its output at their
leisure.  This allows information captured during the automatic e2fsck
preen run, as well as a manually started e2fsck run, to be saved for
posterity.  This facility is controlled by the
.IR log_filename ,
.IR log_dir ,
.IR log_dir_fallback ,
and
.I log_dir_wait
relations in the
.I [options]
stanza.
.PP
The filename in
.I log_filename
may contain the following percent-expressions that will be expanded as
follows.
.TP
.B %d
The current day of the month
.TP
.B %D
The current date; this is a equivalent of
.B %Y%m%d
.TP
.B %h
The hostname of the system.
.TP
.B %H
The current hour in 24-hour format (00..23)
.TP
.B %m
The current month as a two-digit number (01..12)
.TP
.B %M
The current minute (00..59)
.TP
.B %N
The name of the block device containing the file system, with any
directory pathname stripped off.
.TP
.B %p
The pid of the e2fsck process
.TP
.B %s
The current time expressed as the number of seconds since 1970-01-01
00:00:00 UTC
.TP
.B %S
The current second (00..59)
.TP
.B %T
The current time; this is equivalent of
.B %H%M%S
.TP
.B %u
The name of the user running e2fsck.
.TP
.B %U
This percent expression does not expand to anything, but it signals that
any following date or time expressions should be expressed in UTC time
instead of the local timezone.
.TP
.B %y
The last two digits of the current year (00..99)
.TP
.B %Y
The current year (i.e., 2012).
.SH EXAMPLES
The following recipe will prevent e2fsck from aborting during the boot
process when a filesystem contains orphaned files.  (Of course, this is
not always a good idea, since critical files that are needed for the
security of the system could potentially end up in lost+found, and
starting the system without first having a system administrator check
things out may be dangerous.)
.P
.br
	[problems]
.br
		0x040002 = {
.br
			preen_ok = true
.br
			description = "@u @i %i.  "
.br
		}
.P
The following recipe will cause an e2fsck logfile to be written to the
directory /var/log/e2fsck, with a filename that contains the device
name, the hostname of the system, the date, and time: e.g.,
"e2fsck-sda3.server.INFO.20120314-112142".  If the directory containing
/var/log is located on the root file system
which is initially mounted read-only, then the output will be saved in
memory and written out once the root file system has been remounted
read/write.   To avoid too much detail from being written to the serial
console (which could potentially slow down the boot sequence), only print
no more than 16 instances of each type of file system corruption.
.P
.br
	[options]
.br
		max_count_problems = 16
.br
		log_dir = /var/log/e2fsck
.br
		log_filename = e2fsck-%N.%h.INFO.%D-%T
.br
		log_dir_wait = true
.P
.SH FILES
.TP
.I /etc/e2fsck.conf
The configuration file for
.BR e2fsck (8).
.SH SEE ALSO
.BR e2fsck (8)
