User Tools

Site Tools


fs_mount_options

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
fs_mount_options [2020/06/12 16:05]
Ira Weiny [Details]
fs_mount_options [2020/10/27 17:01]
Ira Weiny
Line 1: Line 1:
-**NOTE: kernel 5.8 is yet to be released. ​ This document is therefore preliminary until it's release and subject to change.** 
- 
 ====== Prior to kernel 5.8 ====== ====== Prior to kernel 5.8 ======
  
Line 14: Line 12:
 As of kernel 5.8 additional DAX enabling options are available on some file systems, specifically:​ As of kernel 5.8 additional DAX enabling options are available on some file systems, specifically:​
  
-===== ext4 and ext2 =====+===== ext2 =====
  
 When mounting the filesystem, use the "-o dax" option on the command line or add '​dax'​ to the options in /​etc/​fstab. ​ This works to enable DAX on all files within the filesystem. ​ It is equivalent to the '-o dax=always'​ behavior below. When mounting the filesystem, use the "-o dax" option on the command line or add '​dax'​ to the options in /​etc/​fstab. ​ This works to enable DAX on all files within the filesystem. ​ It is equivalent to the '-o dax=always'​ behavior below.
  
-===== xfs =====+===== ext4 and xfs =====
  
-As of kernel 5.8 xfs supports the new per-file dax configuration.+As of kernel 5.8 ext4 and xfs supports the new per-file dax configuration.
  
 ==== Summary ==== ==== Summary ====
Line 49: Line 47:
     remounted with dax=inode and the inode is evicted from kernel memory.     remounted with dax=inode and the inode is evicted from kernel memory.
  
-==== Details ​====+==== Examples and details ​====
  
 There are 2 per-file dax flags. ​ One is a persistent inode setting (FS_XFLAG_DAX) and the other is a volatile flag indicating the active state of the feature (S_DAX). There are 2 per-file dax flags. ​ One is a persistent inode setting (FS_XFLAG_DAX) and the other is a volatile flag indicating the active state of the feature (S_DAX).
  
-FS_XFLAG_DAX is preserved within the filesystem.  This persistent config setting can be set, cleared and/or queried using the FS_IOC_FS[GS]ETXATTR ioctl (see ioctl_xfs_fsgetxattr(2)) or an utility such as '​xfs_io'​.+FS_XFLAG_DAX is preserved within the file system.  This persistent config setting can be set, cleared and/or queried using the FS_IOC_FS[GS]ETXATTR ioctl (see ioctl_xfs_fsgetxattr(2)) or an utility such as '​xfs_io'​.
  
 New files and directories automatically inherit FS_XFLAG_DAX from their parent directory _when_ _created_. ​ Therefore, setting FS_XFLAG_DAX at directory creation time can be used to set a default behavior for an entire New files and directories automatically inherit FS_XFLAG_DAX from their parent directory _when_ _created_. ​ Therefore, setting FS_XFLAG_DAX at directory creation time can be used to set a default behavior for an entire
 sub-tree. sub-tree.
  
-To clarify inheritance, here are 3 examples when using the "-o dax=inode" [default] ​option:+To clarify inheritance ​mount the file system with the inode option.
  
 <​code>​ <​code>​
Line 70: Line 68:
 </​code>​ </​code>​
  
-=== Example A: ===+And here are 3 examples showing how to enable dax on individual files and/or directories. 
 + 
 +=== Inheritance ​Example A: ===
  
 <​code>​ <​code>​
 $ mkdir -p a/b/c $ mkdir -p a/b/c
 $ xfs_io -c '​chattr +x' a $ xfs_io -c '​chattr +x' a
-$ mkdir a/b/c/d +$ xfs_io -c '​lsattr'​ a 
-$ mkdir a/e+--------------x- a 
 +$ mkdir -p a/b/c/d 
 +$ mkdir -p a/e
 </​code>​ </​code>​
         Results in:         Results in:
Line 83: Line 85:
         no dax: b,c,d         no dax: b,c,d
  
-=== Example B: ===+=== Inheritance ​Example B: ===
  
 <​code>​ <​code>​
 $ mkdir a $ mkdir a
 $ xfs_io -c '​chattr +x' a $ xfs_io -c '​chattr +x' a
 +$ xfs_io -c '​lsattr'​ a
 +--------------x- a
 $ mkdir -p a/b/c/d $ mkdir -p a/b/c/d
 </​code>​ </​code>​
Line 96: Line 100:
         no dax:         no dax:
  
-=== Example C: === +=== Inheritance ​Example C: ===
  
 <​code>​ <​code>​
 $ mkdir -p a/b/c $ mkdir -p a/b/c
 $ xfs_io -c '​chattr +x' c $ xfs_io -c '​chattr +x' c
-$ mkdir a/b/c/d+$ xfs_io -c '​lsattr'​ c 
 +--------------x- c 
 +$ mkdir -p a/b/c/d
 </​code>​ </​code>​
  
Line 111: Line 116:
  
  
-The current enabled state (S_DAX) is set when a file inode is instantiated in memory by the kernel. ​ It is set based on the underlying media support, the value of FS_XFLAG_DAX and the filesystem's dax mount option.+=== Detecting if a file is using dax === 
 + 
 +The current enabled state (S_DAX) is set when a file inode is instantiated in memory by the kernel. ​ It is set based on the underlying media support, the value of FS_XFLAG_DAX and the file system's dax mount option.
  
 statx can be used to query S_DAX. ​ NOTE that only regular files will ever have S_DAX set and therefore statx will never indicate that S_DAX is set on directories. statx can be used to query S_DAX. ​ NOTE that only regular files will ever have S_DAX set and therefore statx will never indicate that S_DAX is set on directories.
 +
 +Continuing with Example C above we create a file foo in a dax enabled directory and it is enabled for dax with the FS_XFLAG_DAX set as well as S_DAX being set.
 +
 +<​code>​
 +$ touch a/b/c/foo
 +$ xfs_io -c '​lsattr'​ a/​b/​c/​foo ​                      # FS_XFLAG_DAX == true
 +--------------x- a/b/c/foo
 +$ xfs_io -c 'statx -r' a/b/c/foo | grep attributes ​  # S_DAX == true
 +stat.attributes = 0x2000
 +</​code>​
  
 Setting the FS_XFLAG_DAX flag (specifically or through inheritance) occurs even if the underlying media does not support dax and/or the filesystem is overridden with a mount option. Setting the FS_XFLAG_DAX flag (specifically or through inheritance) occurs even if the underlying media does not support dax and/or the filesystem is overridden with a mount option.
  
fs_mount_options.txt · Last modified: 2020/10/27 17:01 by Ira Weiny