diff options
Diffstat (limited to 'Documentation/filesystems')
| -rw-r--r-- | Documentation/filesystems/ext4/journal.rst | 7 | ||||
| -rw-r--r-- | Documentation/filesystems/locking.rst | 2 | ||||
| -rw-r--r-- | Documentation/filesystems/nfs/exporting.rst | 4 | ||||
| -rw-r--r-- | Documentation/filesystems/overlayfs.rst | 44 | ||||
| -rw-r--r-- | Documentation/filesystems/vfs.rst | 1 | 
5 files changed, 47 insertions, 11 deletions
diff --git a/Documentation/filesystems/ext4/journal.rst b/Documentation/filesystems/ext4/journal.rst index a6bef5293a60..6e8fb2d4b46f 100644 --- a/Documentation/filesystems/ext4/journal.rst +++ b/Documentation/filesystems/ext4/journal.rst @@ -260,8 +260,13 @@ which is 1024 bytes long:       - s_num_fc_blocks       - Number of fast commit blocks in the journal.     * - 0x58 +     - __be32 +     - s_head +     - Block number of the head (first unused block) of the journal, only +       up-to-date when the journal is empty. +   * - 0x5C       - __u32 -     - s_padding[42] +     - s_padding[40]       -     * - 0xFC       - __be32 diff --git a/Documentation/filesystems/locking.rst b/Documentation/filesystems/locking.rst index aa1a233b0fa8..ed148919e11a 100644 --- a/Documentation/filesystems/locking.rst +++ b/Documentation/filesystems/locking.rst @@ -521,8 +521,6 @@ prototypes::  	int (*fsync) (struct file *, loff_t start, loff_t end, int datasync);  	int (*fasync) (int, struct file *, int);  	int (*lock) (struct file *, int, struct file_lock *); -	ssize_t (*sendpage) (struct file *, struct page *, int, size_t, -			loff_t *, int);  	unsigned long (*get_unmapped_area)(struct file *, unsigned long,  			unsigned long, unsigned long, unsigned long);  	int (*check_flags)(int); diff --git a/Documentation/filesystems/nfs/exporting.rst b/Documentation/filesystems/nfs/exporting.rst index 0e98edd353b5..3d97b8d8f735 100644 --- a/Documentation/filesystems/nfs/exporting.rst +++ b/Documentation/filesystems/nfs/exporting.rst @@ -122,8 +122,8 @@ are exportable by setting the s_export_op field in the struct  super_block.  This field must point to a "struct export_operations"  struct which has the following members: - encode_fh  (optional) -    Takes a dentry and creates a filehandle fragment which can later be used +  encode_fh (optional) +    Takes a dentry and creates a filehandle fragment which may later be used      to find or create a dentry for the same object.  The default      implementation creates a filehandle fragment that encodes a 32bit inode      and generation number for the inode encoded, and if necessary the diff --git a/Documentation/filesystems/overlayfs.rst b/Documentation/filesystems/overlayfs.rst index 4c76fda07645..eb7d2c88ddec 100644 --- a/Documentation/filesystems/overlayfs.rst +++ b/Documentation/filesystems/overlayfs.rst @@ -231,12 +231,11 @@ Mount options:      Redirects are enabled.  - "redirect_dir=follow":      Redirects are not created, but followed. -- "redirect_dir=off": -    Redirects are not created and only followed if "redirect_always_follow" -    feature is enabled in the kernel/module config.  - "redirect_dir=nofollow": -    Redirects are not created and not followed (equivalent to "redirect_dir=off" -    if "redirect_always_follow" feature is not enabled). +    Redirects are not created and not followed. +- "redirect_dir=off": +    If "redirect_always_follow" is enabled in the kernel/module config, +    this "off" traslates to "follow", otherwise it translates to "nofollow".  When the NFS export feature is enabled, every copied up directory is  indexed by the file handle of the lower inode and a file handle of the @@ -371,6 +370,41 @@ conflict with metacopy=on, and will result in an error.  [*] redirect_dir=follow only conflicts with metacopy=on if upperdir=... is  given. + +Data-only lower layers +---------------------- + +With "metacopy" feature enabled, an overlayfs regular file may be a composition +of information from up to three different layers: + + 1) metadata from a file in the upper layer + + 2) st_ino and st_dev object identifier from a file in a lower layer + + 3) data from a file in another lower layer (further below) + +The "lower data" file can be on any lower layer, except from the top most +lower layer. + +Below the top most lower layer, any number of lower most layers may be defined +as "data-only" lower layers, using double colon ("::") separators. +A normal lower layer is not allowed to be below a data-only layer, so single +colon separators are not allowed to the right of double colon ("::") separators. + + +For example: + +  mount -t overlay overlay -olowerdir=/l1:/l2:/l3::/do1::/do2 /merged + +The paths of files in the "data-only" lower layers are not visible in the +merged overlayfs directories and the metadata and st_ino/st_dev of files +in the "data-only" lower layers are not visible in overlayfs inodes. + +Only the data of the files in the "data-only" lower layers may be visible +when a "metacopy" file in one of the lower layers above it, has a "redirect" +to the absolute path of the "lower data" file in the "data-only" lower layer. + +  Sharing and copying layers  -------------------------- diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/vfs.rst index 769be5230210..cb2a97e49872 100644 --- a/Documentation/filesystems/vfs.rst +++ b/Documentation/filesystems/vfs.rst @@ -1086,7 +1086,6 @@ This describes how the VFS can manipulate an open file.  As of kernel  		int (*fsync) (struct file *, loff_t, loff_t, int datasync);  		int (*fasync) (int, struct file *, int);  		int (*lock) (struct file *, int, struct file_lock *); -		ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);  		unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);  		int (*check_flags)(int);  		int (*flock) (struct file *, int, struct file_lock *);  |