Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 1 | .\" -*- nroff -*- |
| 2 | .\" Copyright 2006 by Theodore Ts'o. All Rights Reserved. |
| 3 | .\" This file may be copied under the terms of the GNU Public License. |
| 4 | .\" |
| 5 | .TH e2fsck.conf 5 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@" |
| 6 | .SH NAME |
| 7 | e2fsck.conf \- Configuration file for e2fsck |
| 8 | .SH DESCRIPTION |
| 9 | .I e2fsck.conf |
| 10 | is the configuration file for |
| 11 | .BR e2fsck (8). |
Theodore Ts'o | 2d1fa59 | 2006-10-02 08:38:44 -0400 | [diff] [blame] | 12 | It controls the default behavior of |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 13 | .BR e2fsck (8) |
Theodore Ts'o | 6a81b40 | 2010-11-26 18:07:32 -0500 | [diff] [blame] | 14 | while it is checking ext2, ext3, or ext4 filesystems. |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 15 | .PP |
| 16 | The |
| 17 | .I e2fsck.conf |
| 18 | file uses an INI-style format. Stanzas, or top-level sections, are |
| 19 | delimited by square braces: [ ]. Within each section, each line |
| 20 | defines a relation, which assigns tags to values, or to a subsection, |
| 21 | which contains further relations or subsections. |
| 22 | .\" Tags can be assigned multiple values |
| 23 | An example of the INI-style format used by this configuration file |
| 24 | follows below: |
| 25 | .P |
| 26 | [section1] |
| 27 | .br |
| 28 | tag1 = value_a |
| 29 | .br |
| 30 | tag1 = value_b |
| 31 | .br |
| 32 | tag2 = value_c |
| 33 | .P |
| 34 | [section 2] |
| 35 | .br |
| 36 | tag3 = { |
| 37 | .br |
| 38 | subtag1 = subtag_value_a |
| 39 | .br |
| 40 | subtag1 = subtag_value_b |
| 41 | .br |
| 42 | subtag2 = subtag_value_c |
| 43 | .br |
| 44 | } |
| 45 | .br |
| 46 | tag1 = value_d |
| 47 | .br |
| 48 | tag2 = value_e |
| 49 | .br |
| 50 | } |
| 51 | .P |
| 52 | Comments are delimited by a semicolon (';') or a hash ('#') character |
| 53 | at the beginning of the comment, and are terminated by the end of |
| 54 | line character. |
| 55 | .P |
| 56 | Tags and values must be quoted using double quotes if they contain |
| 57 | spaces. Within a quoted string, the standard backslash interpretations |
| 58 | apply: "\en" (for the newline character), |
| 59 | "\et" (for the tab character), "\eb" (for the backspace character), |
| 60 | and "\e\e" (for the backslash character). |
| 61 | .P |
| 62 | The following stanzas are used in the |
| 63 | .I e2fsck.conf |
| 64 | file. They will be described in more detail in future sections of this |
| 65 | document. |
| 66 | .TP |
| 67 | .I [options] |
| 68 | This stanza contains general configuration parameters for |
| 69 | .BR e2fsck 's |
| 70 | behavior. |
Theodore Ts'o | 39efa4c | 2007-04-06 23:32:06 -0400 | [diff] [blame] | 71 | .TP |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 72 | .I [problems] |
| 73 | This stanza allows the administrator to reconfigure how e2fsck handles |
| 74 | various filesystem inconsistencies. |
Theodore Ts'o | 39efa4c | 2007-04-06 23:32:06 -0400 | [diff] [blame] | 75 | .TP |
| 76 | .I [scratch_files] |
| 77 | This stanza controls when e2fsck will attempt to use scratch files to |
| 78 | reduce the need for memory. |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 79 | .SH THE [options] STANZA |
| 80 | The following relations are defined in the |
| 81 | .I [options] |
| 82 | stanza. |
| 83 | .TP |
| 84 | .I allow_cancellation |
| 85 | If this relation is set to a boolean value of true, then if the user |
| 86 | interrupts e2fsck using ^C, and the filesystem is not explicitly flagged |
| 87 | as containing errors, e2fsck will exit with an exit status of 0 instead |
| 88 | of 32. This setting defaults to false. |
Theodore Ts'o | 60702c2 | 2007-09-22 20:42:04 -0400 | [diff] [blame] | 89 | .TP |
Theodore Ts'o | ba5131f | 2009-10-16 20:46:45 -0400 | [diff] [blame] | 90 | .I accept_time_fudge |
| 91 | Unfortunately, due to Windows' unfortunate design decision |
| 92 | to configure the hardware clock to tick localtime, instead |
| 93 | of the more proper and less error-prone UTC time, many |
| 94 | users end up in the situation where the system clock is |
| 95 | incorrectly set at the time when e2fsck is run. |
| 96 | .IP |
| 97 | Historically this was usually due to some distributions |
| 98 | having buggy init scripts and/or installers that didn't |
| 99 | correctly detect this case and take appropriate |
| 100 | countermeasures. However, it's still possible, despite the |
| 101 | best efforts of init script and installer authors to not be |
| 102 | able to detect this misconfiguration, usually due to a |
| 103 | buggy or misconfigured virtualization manager or the |
| 104 | installer not having access to a network time server |
| 105 | during the installation process. So by default, we allow |
| 106 | the superblock times to be fudged by up to 24 hours. |
| 107 | This can be disabled by setting |
| 108 | .I accept_time_fudge |
| 109 | to the |
| 110 | boolean value of false. This setting defaults to true. |
Theodore Ts'o | 7dca4c8 | 2008-12-23 19:10:43 -0500 | [diff] [blame] | 111 | .TP |
Theodore Ts'o | c706743 | 2010-01-04 13:59:04 -0500 | [diff] [blame] | 112 | .I broken_system_clock |
| 113 | The |
| 114 | .BR e2fsck (8) |
JP Abgrall | e0ed740 | 2014-03-19 19:08:39 -0700 | [diff] [blame] | 115 | program has some heuristics that assume that the system clock is |
Theodore Ts'o | c706743 | 2010-01-04 13:59:04 -0500 | [diff] [blame] | 116 | correct. In addition, many system programs make similar assumptions. |
| 117 | For example, the UUID library depends on time not going backwards in |
| 118 | order for it to be able to make its guarantees about issuing universally |
| 119 | unique ID's. Systems with broken system clocks, are well, broken. |
| 120 | However, broken system clocks, particularly in embedded systems, do |
JP Abgrall | e0ed740 | 2014-03-19 19:08:39 -0700 | [diff] [blame] | 121 | exist. E2fsck will attempt to use heuristics to determine if the time |
| 122 | can not be trusted; and to skip time-based checks if this is true. If |
Theodore Ts'o | 177839e | 2010-05-13 17:36:36 -0400 | [diff] [blame] | 123 | this boolean is set to true, then e2fsck will always assume that the |
| 124 | system clock can not be trusted. |
Theodore Ts'o | c706743 | 2010-01-04 13:59:04 -0500 | [diff] [blame] | 125 | .TP |
JP Abgrall | e0ed740 | 2014-03-19 19:08:39 -0700 | [diff] [blame] | 126 | .I buggy_init_scripts |
| 127 | This boolean relation is an alias for |
| 128 | .I accept_time_fudge |
| 129 | for backwards compatibility; it used to |
| 130 | be that the behavior defined by |
| 131 | .I accept_time_fudge |
| 132 | above defaulted to false, and |
| 133 | .I buggy_init_scripts |
| 134 | would enable superblock time field to be wrong by up to 24 hours. When |
| 135 | we changed the default, we also renamed this boolean relation to |
| 136 | .IR accept_time_fudge. |
| 137 | .TP |
Theodore Ts'o | 7dca4c8 | 2008-12-23 19:10:43 -0500 | [diff] [blame] | 138 | .I clear_test_fs_flag |
| 139 | This boolean relation controls whether or not |
| 140 | .BR e2fsck (8) |
| 141 | will offer to clear |
| 142 | the test_fs flag if the ext4 filesystem is available on the system. It |
| 143 | defaults to true. |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 144 | .TP |
| 145 | .I defer_check_on_battery |
| 146 | This boolean relation controls whether or not the interval between |
| 147 | filesystem checks (either based on time or number of mounts) should |
Theodore Ts'o | ba5131f | 2009-10-16 20:46:45 -0400 | [diff] [blame] | 148 | be doubled if the system is running on battery. This setting defaults to |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 149 | true. |
Theodore Ts'o | 80875db | 2008-10-12 23:09:26 -0400 | [diff] [blame] | 150 | .TP |
Theodore Ts'o | c0a8496 | 2012-07-29 17:44:11 -0400 | [diff] [blame] | 151 | .I indexed_dir_slack_percentage |
| 152 | When |
| 153 | .BR e2fsck (8) |
| 154 | repacks a indexed directory, reserve the specified percentage of |
| 155 | empty space in each leaf nodes so that a few new entries can |
| 156 | be added to the directory without splitting leaf nodes, so that |
| 157 | the average fill ratio of directories can be maintained at a |
| 158 | higher, more efficient level. This relation defaults to 20 |
| 159 | percent. |
JP Abgrall | e0ed740 | 2014-03-19 19:08:39 -0700 | [diff] [blame] | 160 | .TP |
| 161 | .I log_dir |
| 162 | If the |
| 163 | .I log_filename |
| 164 | relation contains a relative pathname, then the log file will be placed |
| 165 | in the directory named by the |
| 166 | .I log_dir |
| 167 | relation. |
| 168 | .TP |
| 169 | .I log_dir_fallback |
| 170 | This relation contains an alternate directory that will be used if the |
| 171 | directory specified by |
| 172 | .I log_dir |
| 173 | is not available or is not writeable. |
| 174 | .TP |
| 175 | .I log_dir_wait |
| 176 | If this boolean relation is true, them if the directories specified by |
| 177 | .I log_dir |
| 178 | or |
| 179 | .I log_dir_fallback |
| 180 | are not available or are not yet writeable, e2fsck will save the output |
| 181 | in a memory buffer, and a child process will periodically test to see if |
| 182 | the log directory has become available after the boot sequence has |
| 183 | mounted the requiste filesytem for reading/writing. This implements the |
| 184 | functionality provided by |
| 185 | .BR logsave (8) |
| 186 | for e2fsck log files. |
| 187 | .TP |
| 188 | .I log_filename |
| 189 | This relation specifies the file name where a copy of e2fsck's output |
| 190 | will be written. If certain problem reports are suppressed using the |
| 191 | .I max_count_problems |
| 192 | relation, (or on a per-problem basis using the |
| 193 | .I max_count |
| 194 | relation), the full set of problem reports will be written to the log |
| 195 | file. The filename may contain various percent-expressions (%D, %T, %N, |
| 196 | etc.) which will be expanded so that the file name for the log file can |
| 197 | include things like date, time, device name, and other run-time |
| 198 | parameters. See the |
| 199 | .B LOGGING |
| 200 | section for more details. |
| 201 | .TP |
| 202 | .I max_count_problems |
| 203 | This relation specifies the maximum number of problem reports of a |
| 204 | particular type will be printed to stdout before further problem reports |
| 205 | of that type are squelched. This can be useful if the console is slow |
| 206 | (i.e., connected to a serial port) and so a large amount of output could |
| 207 | end up delaying the boot process for a long time (potentially hours). |
| 208 | .TP |
| 209 | .I report_features |
| 210 | If this boolean relation is true, e2fsck will print the file system |
| 211 | features as part of its verbose reporting (i.e., if the |
| 212 | .B -v |
| 213 | option is specified) |
| 214 | .TP |
| 215 | .I report_time |
| 216 | If this boolean relation is true, e2fsck will run as if the options |
| 217 | .B -tt |
| 218 | are always specified. This will cause e2fsck to print timing statistics |
| 219 | on a pass by pass basis for full file system checks. |
| 220 | .TP |
| 221 | .I report_verbose |
| 222 | If this boolean relation is true, e2fsck will run as if the option |
| 223 | .B -v |
| 224 | is always specified. This will cause e2fsck to print some additional |
| 225 | information at the end of each full file system check. |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 226 | .SH THE [problems] STANZA |
| 227 | Each tag in the |
| 228 | .I [problems] |
| 229 | stanza names a problem code specified with a leading "0x" followed by |
| 230 | six hex digits. |
| 231 | The value of the tag is a subsection where the relations in that |
| 232 | subsection override the default treatment of that particular problem |
| 233 | code. |
| 234 | .P |
| 235 | Note that inappropriate settings in this stanza may cause |
| 236 | .B e2fsck |
| 237 | to behave incorrectly, or even crash. Most system administrators should |
| 238 | not be making changes to this section without referring to source code. |
| 239 | .P |
| 240 | Within each problem code's subsection, the following tags may be used: |
| 241 | .TP |
| 242 | .I description |
| 243 | This relation allows the message which is printed when this filesystem |
| 244 | inconsistency is detected to be overridden. |
| 245 | .TP |
| 246 | .I preen_ok |
| 247 | This boolean relation overrides the default behavior controlling |
| 248 | whether this filesystem problem should be automatically fixed when |
| 249 | .B e2fsck |
| 250 | is running in preen mode. |
| 251 | .TP |
JP Abgrall | e0ed740 | 2014-03-19 19:08:39 -0700 | [diff] [blame] | 252 | .I max_count |
| 253 | This integer relation overrides the |
| 254 | .I max_count_problems |
| 255 | parameter (set in the options section) for this particular problem. |
| 256 | .TP |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 257 | .I no_ok |
| 258 | This boolean relation overrides the default behavior determining |
| 259 | whether or not the filesystem will be marked as inconsistent if the user |
| 260 | declines to fix the reported problem. |
| 261 | .TP |
| 262 | .I no_default |
| 263 | This boolean relation overrides whether the default answer for this |
| 264 | problem (or question) should be "no". |
| 265 | .TP |
| 266 | .I preen_nomessage |
| 267 | This boolean relation overrides the default behavior controlling |
| 268 | whether or not the description for this filesystem problem should |
| 269 | be suppressed when |
| 270 | .B e2fsck |
| 271 | is running in preen mode. |
| 272 | .TP |
| 273 | .I no_nomsg |
| 274 | This boolean relation overrides the default behavior controlling |
| 275 | whether or not the description for this filesystem problem should |
Theodore Ts'o | 7599038 | 2010-12-06 10:10:33 -0500 | [diff] [blame] | 276 | be suppressed when a problem forced not to be fixed, either because |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 277 | .B e2fsck |
| 278 | is run with the |
| 279 | .B -n |
Theodore Ts'o | 7599038 | 2010-12-06 10:10:33 -0500 | [diff] [blame] | 280 | option or because the |
| 281 | .I force_no |
| 282 | flag has been set for the problem. |
| 283 | .TP |
| 284 | .I force_no |
| 285 | This boolean option, if set to true, forces a problem to never be fixed. |
| 286 | That is, it will be as if the user problem responds 'no' to the question |
| 287 | of 'should this problem be fixed?'. The |
| 288 | .I force_no |
| 289 | option even overrides the |
| 290 | .B -y |
| 291 | option given on the command-line (just for the specific problem, of course). |
Theodore Ts'o | 39efa4c | 2007-04-06 23:32:06 -0400 | [diff] [blame] | 292 | .SH THE [scratch_files] STANZA |
| 293 | The following relations are defined in the |
| 294 | .I [scratch_files] |
| 295 | stanza. |
| 296 | .TP |
| 297 | .I directory |
| 298 | If the directory named by this relation exists and is writeable, then |
| 299 | e2fsck will attempt to use this directory to store scratch files instead |
| 300 | of using in-memory data structures. |
| 301 | .TP |
| 302 | .I numdirs_threshold |
| 303 | If this relation is set, then in-memory data structures be used if the |
Theodore Ts'o | a4d7d90 | 2007-04-18 22:12:50 -0400 | [diff] [blame] | 304 | number of directories in the filesystem are fewer than amount specified. |
Theodore Ts'o | 39efa4c | 2007-04-06 23:32:06 -0400 | [diff] [blame] | 305 | .TP |
| 306 | .I dirinfo |
| 307 | This relation controls whether or not the scratch file directory is used |
| 308 | instead of an in-memory data structure for directory information. It |
| 309 | defaults to true. |
| 310 | .TP |
| 311 | .I icount |
| 312 | This relation controls whether or not the scratch file directory is used |
| 313 | instead of an in-memory data structure when tracking inode counts. It |
| 314 | defaults to true. |
JP Abgrall | e0ed740 | 2014-03-19 19:08:39 -0700 | [diff] [blame] | 315 | .SH LOGGING |
| 316 | E2fsck has the facility to save the information from an e2fsck run in a |
| 317 | directory so that a system administrator can review its output at their |
| 318 | leisure. This allows information captured during the automatic e2fsck |
| 319 | preen run, as well as a manually started e2fsck run, to be saved for |
| 320 | posterity. This facility is controlled by the |
| 321 | .IR log_filename , |
| 322 | .IR log_dir , |
| 323 | .IR log_dir_fallback , |
| 324 | and |
| 325 | .I log_dir_wait |
| 326 | relations in the |
| 327 | .I [options] |
| 328 | stanza. |
| 329 | .PP |
| 330 | The filename in |
| 331 | .I log_filename |
| 332 | may contain the following percent-expressions that will be expanded as |
| 333 | follows. |
| 334 | .TP |
| 335 | .B %d |
| 336 | The current day of the month |
| 337 | .TP |
| 338 | .B %D |
| 339 | The current date; this is a equivalent of |
| 340 | .B %Y%m%d |
| 341 | .TP |
| 342 | .B %h |
| 343 | The hostname of the system. |
| 344 | .TP |
| 345 | .B %H |
| 346 | The current hour in 24-hour format (00..23) |
| 347 | .TP |
| 348 | .B %m |
| 349 | The current month as a two-digit number (01..12) |
| 350 | .TP |
| 351 | .B %M |
| 352 | The current minute (00..59) |
| 353 | .TP |
| 354 | .B %N |
| 355 | The name of the block device containing the file system, with any |
| 356 | directory pathname stripped off. |
| 357 | .TP |
| 358 | .B %p |
| 359 | The pid of the e2fsck process |
| 360 | .TP |
| 361 | .B %s |
| 362 | The current time expressed as the number of seconds since 1970-01-01 |
| 363 | 00:00:00 UTC |
| 364 | .TP |
| 365 | .B %S |
| 366 | The current second (00..59) |
| 367 | .TP |
| 368 | .B %T |
| 369 | The current time; this is equivalent of |
| 370 | .B %H%M%S |
| 371 | .TP |
| 372 | .B %u |
| 373 | The name of the user running e2fsck. |
| 374 | .TP |
| 375 | .B %U |
| 376 | This percent expression does not expand to anything, but it signals that |
| 377 | any following date or time expressions should be expressed in UTC time |
| 378 | instead of the local timzeone. |
| 379 | .TP |
| 380 | .B %y |
| 381 | The last two digits of the current year (00..99) |
| 382 | .TP |
| 383 | .B %Y |
| 384 | The current year (i.e., 2012). |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 385 | .SH EXAMPLES |
| 386 | The following recipe will prevent e2fsck from aborting during the boot |
| 387 | process when a filesystem contains orphaned files. (Of course, this is |
| 388 | not always a good idea, since critical files that are needed for the |
| 389 | security of the system could potentially end up in lost+found, and |
| 390 | starting the system without first having a system administrator check |
| 391 | things out may be dangerous.) |
| 392 | .P |
| 393 | .br |
| 394 | [problems] |
| 395 | .br |
| 396 | 0x040002 = { |
| 397 | .br |
| 398 | preen_ok = true |
| 399 | .br |
| 400 | description = "@u @i %i. " |
| 401 | .br |
| 402 | } |
JP Abgrall | e0ed740 | 2014-03-19 19:08:39 -0700 | [diff] [blame] | 403 | .P |
| 404 | The following recipe will cause an e2fsck logfile to be written to the |
| 405 | directory /var/log/e2fsck, with a filename that contains the device |
| 406 | name, the hostname of the system, the date, and time: e.g., |
| 407 | "e2fsck-sda3.server.INFO.20120314-112142". If the directory containing |
| 408 | /var/log is located on the root file system |
| 409 | which is initially mounted read-only, then the output will be saved in |
| 410 | memory and written out once the root file system has been remounted |
| 411 | read/write. To avoid too much detail from being written to the serial |
| 412 | console (which could potentially slow down the boot sequence), only print |
| 413 | no more than 16 instances of each type of file system corruption. |
| 414 | .P |
| 415 | .br |
| 416 | [options] |
| 417 | .br |
| 418 | max_count_problems = 16 |
| 419 | .br |
| 420 | log_dir = /var/log/e2fsck |
| 421 | .br |
| 422 | log_filename = e2fsck-%N.%h.INFO.%D-%T |
| 423 | .br |
| 424 | log_dir_wait = true |
| 425 | .P |
Theodore Ts'o | 1abdba4 | 2006-03-27 01:03:11 -0500 | [diff] [blame] | 426 | .SH FILES |
| 427 | .TP |
| 428 | .I /etc/e2fsck.conf |
| 429 | The configuration file for |
| 430 | .BR e2fsck (8). |
| 431 | .SH SEE ALSO |
| 432 | .BR e2fsck (8) |