.\" -*- 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 [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 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 writeable.
.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 writeable, 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 requiste 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 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 [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).
@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@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 timzeone.
.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)
