XFS

some docs about structure:

Terms

Reverse Mapping

adding extent metadata (most importantly ownership) to the device block as a secondary source of metadata. More Here:4. XFS Online Fsck Design — The Linux Kernel documentation

History

2.4.25:

6.11:

Enable FITRIM (batched Trim command) on the realtime device [1]

6.12

First FS to allow bigger block size than system page size. More here

Adds New Ioctls (system call) To Swap Contents Of Two Files [2]

6.13:

6.14

The XFS realtime device is a special mode intended to provide consistent and predictable latency for filesystem operations. In 6.14 the realtime device has gained support for #Reverse Mapping (mapping a device block to the file the contains it) and reflink (sharing blocks between files, based on Reverse Mapping) operations.[3]

6.15

Support for zoned storage devices. SMR hard drive (the one that write over for higher density) can be put in a special mode called Host-Manage Zone Storage which will allow the kernel instead of the hard drive controller to decide where the data should go on the drive. This can allow for better perf as the kernel can optimize the way it uses the storage and the hard drive controller doesn't have to do suboptimal guesses in what the user wants. Zoned Storage can also apply to SSDs where the kernel will be able to chose at the sector level where to put the data and lead to some optimization. Those optimizations are not for the general public but more for optimized workloads that don't need random writes.[4]

6.16

Back with 6.13, Atomic write support was added for XFS. This implementation only allowed the atomic writing of 1 block. The new patch allows to write multiple blocks.[5]

6.18

Online FSCK is now enable by default, after a year as an option, it is stable enough enable.[6]

7.0

Using the new generic fserror infrastructure of VFS, XFS now gains the capability of providing errors to the user-space.

Of course, this isn't enough for the XFS crew, so they made the User-Space program that waits on an error to attempt a repair.

This was implemented using SystemD and it shouldn't block the unmounting of the XFS instance, unless it is in active repair.[7]

-on your desktop you have the man page, cute for the vid (;

-man ./xfs.8

  • https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfsprogs-dev.git/tree/man/man8/xfs_healer.8?h=health-monitoring

Reduced overhead of XFS Parent Pointers.

Parent Pointers are used in online FSCK, shrink and others to speed up the operations.

They work by directly referencing the parent inode which you would normally have to get from a directory.

Through careful optimization the time create and delete 32 million empty files was drastically diminished:

Overhead to:

Create - Delete

0% - 0% - Baseline

28% - 56% - Prior patch

8% - 19% - Post Patch[8]

Sources: