aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/filesystems
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-10-06 11:18:10 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-10-06 11:18:10 -0400
commit8d370595811e13378243832006f8c52bbc9cca5e (patch)
tree8cab6785c7fedd8d648b51db0ec420f610b2cd2a /Documentation/filesystems
parentd230ec72c4efed7d0f414a80a756c54d4c422a6e (diff)
parent155cd433b516506df065866f3d974661f6473572 (diff)
Merge tag 'xfs-for-linus-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs
Pull xfs and iomap updates from Dave Chinner: "The main things in this update are the iomap-based DAX infrastructure, an XFS delalloc rework, and a chunk of fixes to how log recovery schedules writeback to prevent spurious corruption detections when recovery of certain items was not required. The other main chunk of code is some preparation for the upcoming reflink functionality. Most of it is generic and cleanups that stand alone, but they were ready and reviewed so are in this pull request. Speaking of reflink, I'm currently planning to send you another pull request next week containing all the new reflink functionality. I'm working through a similar process to the last cycle, where I sent the reverse mapping code in a separate request because of how large it was. The reflink code merge is even bigger than reverse mapping, so I'll be doing the same thing again.... Summary for this update: - change of XFS mailing list to linux-xfs@vger.kernel.org - iomap-based DAX infrastructure w/ XFS and ext2 support - small iomap fixes and additions - more efficient XFS delayed allocation infrastructure based on iomap - a rework of log recovery writeback scheduling to ensure we don't fail recovery when trying to replay items that are already on disk - some preparation patches for upcoming reflink support - configurable error handling fixes and documentation - aio access time update race fixes for XFS and generic_file_read_iter" * tag 'xfs-for-linus-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: (40 commits) fs: update atime before I/O in generic_file_read_iter xfs: update atime before I/O in xfs_file_dio_aio_read ext2: fix possible integer truncation in ext2_iomap_begin xfs: log recovery tracepoints to track current lsn and buffer submission xfs: update metadata LSN in buffers during log recovery xfs: don't warn on buffers not being recovered due to LSN xfs: pass current lsn to log recovery buffer validation xfs: rework log recovery to submit buffers on LSN boundaries xfs: quiesce the filesystem after recovery on readonly mount xfs: remote attribute blocks aren't really userdata ext2: use iomap to implement DAX ext2: stop passing buffer_head to ext2_get_blocks xfs: use iomap to implement DAX xfs: refactor xfs_setfilesize xfs: take the ilock shared if possible in xfs_file_iomap_begin xfs: fix locking for DAX writes dax: provide an iomap based fault handler dax: provide an iomap based dax read/write path dax: don't pass buffer_head to copy_user_dax dax: don't pass buffer_head to dax_insert_mapping ...
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r--Documentation/filesystems/xfs.txt123
1 files changed, 123 insertions, 0 deletions
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt
index 8146e9fd5ffc..c2d44e6e117b 100644
--- a/Documentation/filesystems/xfs.txt
+++ b/Documentation/filesystems/xfs.txt
@@ -348,3 +348,126 @@ Removed Sysctls
348 ---- ------- 348 ---- -------
349 fs.xfs.xfsbufd_centisec v4.0 349 fs.xfs.xfsbufd_centisec v4.0
350 fs.xfs.age_buffer_centisecs v4.0 350 fs.xfs.age_buffer_centisecs v4.0
351
352
353Error handling
354==============
355
356XFS can act differently according to the type of error found during its
357operation. The implementation introduces the following concepts to the error
358handler:
359
360 -failure speed:
361 Defines how fast XFS should propagate an error upwards when a specific
362 error is found during the filesystem operation. It can propagate
363 immediately, after a defined number of retries, after a set time period,
364 or simply retry forever.
365
366 -error classes:
367 Specifies the subsystem the error configuration will apply to, such as
368 metadata IO or memory allocation. Different subsystems will have
369 different error handlers for which behaviour can be configured.
370
371 -error handlers:
372 Defines the behavior for a specific error.
373
374The filesystem behavior during an error can be set via sysfs files. Each
375error handler works independently - the first condition met by an error handler
376for a specific class will cause the error to be propagated rather than reset and
377retried.
378
379The action taken by the filesystem when the error is propagated is context
380dependent - it may cause a shut down in the case of an unrecoverable error,
381it may be reported back to userspace, or it may even be ignored because
382there's nothing useful we can with the error or anyone we can report it to (e.g.
383during unmount).
384
385The configuration files are organized into the following hierarchy for each
386mounted filesystem:
387
388 /sys/fs/xfs/<dev>/error/<class>/<error>/
389
390Where:
391 <dev>
392 The short device name of the mounted filesystem. This is the same device
393 name that shows up in XFS kernel error messages as "XFS(<dev>): ..."
394
395 <class>
396 The subsystem the error configuration belongs to. As of 4.9, the defined
397 classes are:
398
399 - "metadata": applies metadata buffer write IO
400
401 <error>
402 The individual error handler configurations.
403
404
405Each filesystem has "global" error configuration options defined in their top
406level directory:
407
408 /sys/fs/xfs/<dev>/error/
409
410 fail_at_unmount (Min: 0 Default: 1 Max: 1)
411 Defines the filesystem error behavior at unmount time.
412
413 If set to a value of 1, XFS will override all other error configurations
414 during unmount and replace them with "immediate fail" characteristics.
415 i.e. no retries, no retry timeout. This will always allow unmount to
416 succeed when there are persistent errors present.
417
418 If set to 0, the configured retry behaviour will continue until all
419 retries and/or timeouts have been exhausted. This will delay unmount
420 completion when there are persistent errors, and it may prevent the
421 filesystem from ever unmounting fully in the case of "retry forever"
422 handler configurations.
423
424 Note: there is no guarantee that fail_at_unmount can be set whilst an
425 unmount is in progress. It is possible that the sysfs entries are
426 removed by the unmounting filesystem before a "retry forever" error
427 handler configuration causes unmount to hang, and hence the filesystem
428 must be configured appropriately before unmount begins to prevent
429 unmount hangs.
430
431Each filesystem has specific error class handlers that define the error
432propagation behaviour for specific errors. There is also a "default" error
433handler defined, which defines the behaviour for all errors that don't have
434specific handlers defined. Where multiple retry constraints are configuredi for
435a single error, the first retry configuration that expires will cause the error
436to be propagated. The handler configurations are found in the directory:
437
438 /sys/fs/xfs/<dev>/error/<class>/<error>/
439
440 max_retries (Min: -1 Default: Varies Max: INTMAX)
441 Defines the allowed number of retries of a specific error before
442 the filesystem will propagate the error. The retry count for a given
443 error context (e.g. a specific metadata buffer) is reset every time
444 there is a successful completion of the operation.
445
446 Setting the value to "-1" will cause XFS to retry forever for this
447 specific error.
448
449 Setting the value to "0" will cause XFS to fail immediately when the
450 specific error is reported.
451
452 Setting the value to "N" (where 0 < N < Max) will make XFS retry the
453 operation "N" times before propagating the error.
454
455 retry_timeout_seconds (Min: -1 Default: Varies Max: 1 day)
456 Define the amount of time (in seconds) that the filesystem is
457 allowed to retry its operations when the specific error is
458 found.
459
460 Setting the value to "-1" will allow XFS to retry forever for this
461 specific error.
462
463 Setting the value to "0" will cause XFS to fail immediately when the
464 specific error is reported.
465
466 Setting the value to "N" (where 0 < N < Max) will allow XFS to retry the
467 operation for up to "N" seconds before propagating the error.
468
469Note: The default behaviour for a specific error handler is dependent on both
470the class and error context. For example, the default values for
471"metadata/ENODEV" are "0" rather than "-1" so that this error handler defaults
472to "fail immediately" behaviour. This is done because ENODEV is a fatal,
473unrecoverable error no matter how many times the metadata IO is retried.