Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 =========================================
0004 Overview of the Linux Virtual File System
0005 =========================================
0006 
0007 Original author: Richard Gooch <rgooch@atnf.csiro.au>
0008 
0009 - Copyright (C) 1999 Richard Gooch
0010 - Copyright (C) 2005 Pekka Enberg
0011 
0012 
0013 Introduction
0014 ============
0015 
0016 The Virtual File System (also known as the Virtual Filesystem Switch) is
0017 the software layer in the kernel that provides the filesystem interface
0018 to userspace programs.  It also provides an abstraction within the
0019 kernel which allows different filesystem implementations to coexist.
0020 
0021 VFS system calls open(2), stat(2), read(2), write(2), chmod(2) and so on
0022 are called from a process context.  Filesystem locking is described in
0023 the document Documentation/filesystems/locking.rst.
0024 
0025 
0026 Directory Entry Cache (dcache)
0027 ------------------------------
0028 
0029 The VFS implements the open(2), stat(2), chmod(2), and similar system
0030 calls.  The pathname argument that is passed to them is used by the VFS
0031 to search through the directory entry cache (also known as the dentry
0032 cache or dcache).  This provides a very fast look-up mechanism to
0033 translate a pathname (filename) into a specific dentry.  Dentries live
0034 in RAM and are never saved to disc: they exist only for performance.
0035 
0036 The dentry cache is meant to be a view into your entire filespace.  As
0037 most computers cannot fit all dentries in the RAM at the same time, some
0038 bits of the cache are missing.  In order to resolve your pathname into a
0039 dentry, the VFS may have to resort to creating dentries along the way,
0040 and then loading the inode.  This is done by looking up the inode.
0041 
0042 
0043 The Inode Object
0044 ----------------
0045 
0046 An individual dentry usually has a pointer to an inode.  Inodes are
0047 filesystem objects such as regular files, directories, FIFOs and other
0048 beasts.  They live either on the disc (for block device filesystems) or
0049 in the memory (for pseudo filesystems).  Inodes that live on the disc
0050 are copied into the memory when required and changes to the inode are
0051 written back to disc.  A single inode can be pointed to by multiple
0052 dentries (hard links, for example, do this).
0053 
0054 To look up an inode requires that the VFS calls the lookup() method of
0055 the parent directory inode.  This method is installed by the specific
0056 filesystem implementation that the inode lives in.  Once the VFS has the
0057 required dentry (and hence the inode), we can do all those boring things
0058 like open(2) the file, or stat(2) it to peek at the inode data.  The
0059 stat(2) operation is fairly simple: once the VFS has the dentry, it
0060 peeks at the inode data and passes some of it back to userspace.
0061 
0062 
0063 The File Object
0064 ---------------
0065 
0066 Opening a file requires another operation: allocation of a file
0067 structure (this is the kernel-side implementation of file descriptors).
0068 The freshly allocated file structure is initialized with a pointer to
0069 the dentry and a set of file operation member functions.  These are
0070 taken from the inode data.  The open() file method is then called so the
0071 specific filesystem implementation can do its work.  You can see that
0072 this is another switch performed by the VFS.  The file structure is
0073 placed into the file descriptor table for the process.
0074 
0075 Reading, writing and closing files (and other assorted VFS operations)
0076 is done by using the userspace file descriptor to grab the appropriate
0077 file structure, and then calling the required file structure method to
0078 do whatever is required.  For as long as the file is open, it keeps the
0079 dentry in use, which in turn means that the VFS inode is still in use.
0080 
0081 
0082 Registering and Mounting a Filesystem
0083 =====================================
0084 
0085 To register and unregister a filesystem, use the following API
0086 functions:
0087 
0088 .. code-block:: c
0089 
0090         #include <linux/fs.h>
0091 
0092         extern int register_filesystem(struct file_system_type *);
0093         extern int unregister_filesystem(struct file_system_type *);
0094 
0095 The passed struct file_system_type describes your filesystem.  When a
0096 request is made to mount a filesystem onto a directory in your
0097 namespace, the VFS will call the appropriate mount() method for the
0098 specific filesystem.  New vfsmount referring to the tree returned by
0099 ->mount() will be attached to the mountpoint, so that when pathname
0100 resolution reaches the mountpoint it will jump into the root of that
0101 vfsmount.
0102 
0103 You can see all filesystems that are registered to the kernel in the
0104 file /proc/filesystems.
0105 
0106 
0107 struct file_system_type
0108 -----------------------
0109 
0110 This describes the filesystem.  As of kernel 2.6.39, the following
0111 members are defined:
0112 
0113 .. code-block:: c
0114 
0115         struct file_system_type {
0116                 const char *name;
0117                 int fs_flags;
0118                 struct dentry *(*mount) (struct file_system_type *, int,
0119                                          const char *, void *);
0120                 void (*kill_sb) (struct super_block *);
0121                 struct module *owner;
0122                 struct file_system_type * next;
0123                 struct list_head fs_supers;
0124                 struct lock_class_key s_lock_key;
0125                 struct lock_class_key s_umount_key;
0126         };
0127 
0128 ``name``
0129         the name of the filesystem type, such as "ext2", "iso9660",
0130         "msdos" and so on
0131 
0132 ``fs_flags``
0133         various flags (i.e. FS_REQUIRES_DEV, FS_NO_DCACHE, etc.)
0134 
0135 ``mount``
0136         the method to call when a new instance of this filesystem should
0137         be mounted
0138 
0139 ``kill_sb``
0140         the method to call when an instance of this filesystem should be
0141         shut down
0142 
0143 
0144 ``owner``
0145         for internal VFS use: you should initialize this to THIS_MODULE
0146         in most cases.
0147 
0148 ``next``
0149         for internal VFS use: you should initialize this to NULL
0150 
0151   s_lock_key, s_umount_key: lockdep-specific
0152 
0153 The mount() method has the following arguments:
0154 
0155 ``struct file_system_type *fs_type``
0156         describes the filesystem, partly initialized by the specific
0157         filesystem code
0158 
0159 ``int flags``
0160         mount flags
0161 
0162 ``const char *dev_name``
0163         the device name we are mounting.
0164 
0165 ``void *data``
0166         arbitrary mount options, usually comes as an ASCII string (see
0167         "Mount Options" section)
0168 
0169 The mount() method must return the root dentry of the tree requested by
0170 caller.  An active reference to its superblock must be grabbed and the
0171 superblock must be locked.  On failure it should return ERR_PTR(error).
0172 
0173 The arguments match those of mount(2) and their interpretation depends
0174 on filesystem type.  E.g. for block filesystems, dev_name is interpreted
0175 as block device name, that device is opened and if it contains a
0176 suitable filesystem image the method creates and initializes struct
0177 super_block accordingly, returning its root dentry to caller.
0178 
0179 ->mount() may choose to return a subtree of existing filesystem - it
0180 doesn't have to create a new one.  The main result from the caller's
0181 point of view is a reference to dentry at the root of (sub)tree to be
0182 attached; creation of new superblock is a common side effect.
0183 
0184 The most interesting member of the superblock structure that the mount()
0185 method fills in is the "s_op" field.  This is a pointer to a "struct
0186 super_operations" which describes the next level of the filesystem
0187 implementation.
0188 
0189 Usually, a filesystem uses one of the generic mount() implementations
0190 and provides a fill_super() callback instead.  The generic variants are:
0191 
0192 ``mount_bdev``
0193         mount a filesystem residing on a block device
0194 
0195 ``mount_nodev``
0196         mount a filesystem that is not backed by a device
0197 
0198 ``mount_single``
0199         mount a filesystem which shares the instance between all mounts
0200 
0201 A fill_super() callback implementation has the following arguments:
0202 
0203 ``struct super_block *sb``
0204         the superblock structure.  The callback must initialize this
0205         properly.
0206 
0207 ``void *data``
0208         arbitrary mount options, usually comes as an ASCII string (see
0209         "Mount Options" section)
0210 
0211 ``int silent``
0212         whether or not to be silent on error
0213 
0214 
0215 The Superblock Object
0216 =====================
0217 
0218 A superblock object represents a mounted filesystem.
0219 
0220 
0221 struct super_operations
0222 -----------------------
0223 
0224 This describes how the VFS can manipulate the superblock of your
0225 filesystem.  As of kernel 2.6.22, the following members are defined:
0226 
0227 .. code-block:: c
0228 
0229         struct super_operations {
0230                 struct inode *(*alloc_inode)(struct super_block *sb);
0231                 void (*destroy_inode)(struct inode *);
0232 
0233                 void (*dirty_inode) (struct inode *, int flags);
0234                 int (*write_inode) (struct inode *, int);
0235                 void (*drop_inode) (struct inode *);
0236                 void (*delete_inode) (struct inode *);
0237                 void (*put_super) (struct super_block *);
0238                 int (*sync_fs)(struct super_block *sb, int wait);
0239                 int (*freeze_fs) (struct super_block *);
0240                 int (*unfreeze_fs) (struct super_block *);
0241                 int (*statfs) (struct dentry *, struct kstatfs *);
0242                 int (*remount_fs) (struct super_block *, int *, char *);
0243                 void (*clear_inode) (struct inode *);
0244                 void (*umount_begin) (struct super_block *);
0245 
0246                 int (*show_options)(struct seq_file *, struct dentry *);
0247 
0248                 ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
0249                 ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
0250                 int (*nr_cached_objects)(struct super_block *);
0251                 void (*free_cached_objects)(struct super_block *, int);
0252         };
0253 
0254 All methods are called without any locks being held, unless otherwise
0255 noted.  This means that most methods can block safely.  All methods are
0256 only called from a process context (i.e. not from an interrupt handler
0257 or bottom half).
0258 
0259 ``alloc_inode``
0260         this method is called by alloc_inode() to allocate memory for
0261         struct inode and initialize it.  If this function is not
0262         defined, a simple 'struct inode' is allocated.  Normally
0263         alloc_inode will be used to allocate a larger structure which
0264         contains a 'struct inode' embedded within it.
0265 
0266 ``destroy_inode``
0267         this method is called by destroy_inode() to release resources
0268         allocated for struct inode.  It is only required if
0269         ->alloc_inode was defined and simply undoes anything done by
0270         ->alloc_inode.
0271 
0272 ``dirty_inode``
0273         this method is called by the VFS when an inode is marked dirty.
0274         This is specifically for the inode itself being marked dirty,
0275         not its data.  If the update needs to be persisted by fdatasync(),
0276         then I_DIRTY_DATASYNC will be set in the flags argument.
0277 
0278 ``write_inode``
0279         this method is called when the VFS needs to write an inode to
0280         disc.  The second parameter indicates whether the write should
0281         be synchronous or not, not all filesystems check this flag.
0282 
0283 ``drop_inode``
0284         called when the last access to the inode is dropped, with the
0285         inode->i_lock spinlock held.
0286 
0287         This method should be either NULL (normal UNIX filesystem
0288         semantics) or "generic_delete_inode" (for filesystems that do
0289         not want to cache inodes - causing "delete_inode" to always be
0290         called regardless of the value of i_nlink)
0291 
0292         The "generic_delete_inode()" behavior is equivalent to the old
0293         practice of using "force_delete" in the put_inode() case, but
0294         does not have the races that the "force_delete()" approach had.
0295 
0296 ``delete_inode``
0297         called when the VFS wants to delete an inode
0298 
0299 ``put_super``
0300         called when the VFS wishes to free the superblock
0301         (i.e. unmount).  This is called with the superblock lock held
0302 
0303 ``sync_fs``
0304         called when VFS is writing out all dirty data associated with a
0305         superblock.  The second parameter indicates whether the method
0306         should wait until the write out has been completed.  Optional.
0307 
0308 ``freeze_fs``
0309         called when VFS is locking a filesystem and forcing it into a
0310         consistent state.  This method is currently used by the Logical
0311         Volume Manager (LVM).
0312 
0313 ``unfreeze_fs``
0314         called when VFS is unlocking a filesystem and making it writable
0315         again.
0316 
0317 ``statfs``
0318         called when the VFS needs to get filesystem statistics.
0319 
0320 ``remount_fs``
0321         called when the filesystem is remounted.  This is called with
0322         the kernel lock held
0323 
0324 ``clear_inode``
0325         called then the VFS clears the inode.  Optional
0326 
0327 ``umount_begin``
0328         called when the VFS is unmounting a filesystem.
0329 
0330 ``show_options``
0331         called by the VFS to show mount options for /proc/<pid>/mounts.
0332         (see "Mount Options" section)
0333 
0334 ``quota_read``
0335         called by the VFS to read from filesystem quota file.
0336 
0337 ``quota_write``
0338         called by the VFS to write to filesystem quota file.
0339 
0340 ``nr_cached_objects``
0341         called by the sb cache shrinking function for the filesystem to
0342         return the number of freeable cached objects it contains.
0343         Optional.
0344 
0345 ``free_cache_objects``
0346         called by the sb cache shrinking function for the filesystem to
0347         scan the number of objects indicated to try to free them.
0348         Optional, but any filesystem implementing this method needs to
0349         also implement ->nr_cached_objects for it to be called
0350         correctly.
0351 
0352         We can't do anything with any errors that the filesystem might
0353         encountered, hence the void return type.  This will never be
0354         called if the VM is trying to reclaim under GFP_NOFS conditions,
0355         hence this method does not need to handle that situation itself.
0356 
0357         Implementations must include conditional reschedule calls inside
0358         any scanning loop that is done.  This allows the VFS to
0359         determine appropriate scan batch sizes without having to worry
0360         about whether implementations will cause holdoff problems due to
0361         large scan batch sizes.
0362 
0363 Whoever sets up the inode is responsible for filling in the "i_op"
0364 field.  This is a pointer to a "struct inode_operations" which describes
0365 the methods that can be performed on individual inodes.
0366 
0367 
0368 struct xattr_handlers
0369 ---------------------
0370 
0371 On filesystems that support extended attributes (xattrs), the s_xattr
0372 superblock field points to a NULL-terminated array of xattr handlers.
0373 Extended attributes are name:value pairs.
0374 
0375 ``name``
0376         Indicates that the handler matches attributes with the specified
0377         name (such as "system.posix_acl_access"); the prefix field must
0378         be NULL.
0379 
0380 ``prefix``
0381         Indicates that the handler matches all attributes with the
0382         specified name prefix (such as "user."); the name field must be
0383         NULL.
0384 
0385 ``list``
0386         Determine if attributes matching this xattr handler should be
0387         listed for a particular dentry.  Used by some listxattr
0388         implementations like generic_listxattr.
0389 
0390 ``get``
0391         Called by the VFS to get the value of a particular extended
0392         attribute.  This method is called by the getxattr(2) system
0393         call.
0394 
0395 ``set``
0396         Called by the VFS to set the value of a particular extended
0397         attribute.  When the new value is NULL, called to remove a
0398         particular extended attribute.  This method is called by the
0399         setxattr(2) and removexattr(2) system calls.
0400 
0401 When none of the xattr handlers of a filesystem match the specified
0402 attribute name or when a filesystem doesn't support extended attributes,
0403 the various ``*xattr(2)`` system calls return -EOPNOTSUPP.
0404 
0405 
0406 The Inode Object
0407 ================
0408 
0409 An inode object represents an object within the filesystem.
0410 
0411 
0412 struct inode_operations
0413 -----------------------
0414 
0415 This describes how the VFS can manipulate an inode in your filesystem.
0416 As of kernel 2.6.22, the following members are defined:
0417 
0418 .. code-block:: c
0419 
0420         struct inode_operations {
0421                 int (*create) (struct user_namespace *, struct inode *,struct dentry *, umode_t, bool);
0422                 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
0423                 int (*link) (struct dentry *,struct inode *,struct dentry *);
0424                 int (*unlink) (struct inode *,struct dentry *);
0425                 int (*symlink) (struct user_namespace *, struct inode *,struct dentry *,const char *);
0426                 int (*mkdir) (struct user_namespace *, struct inode *,struct dentry *,umode_t);
0427                 int (*rmdir) (struct inode *,struct dentry *);
0428                 int (*mknod) (struct user_namespace *, struct inode *,struct dentry *,umode_t,dev_t);
0429                 int (*rename) (struct user_namespace *, struct inode *, struct dentry *,
0430                                struct inode *, struct dentry *, unsigned int);
0431                 int (*readlink) (struct dentry *, char __user *,int);
0432                 const char *(*get_link) (struct dentry *, struct inode *,
0433                                          struct delayed_call *);
0434                 int (*permission) (struct user_namespace *, struct inode *, int);
0435                 struct posix_acl * (*get_acl)(struct inode *, int, bool);
0436                 int (*setattr) (struct user_namespace *, struct dentry *, struct iattr *);
0437                 int (*getattr) (struct user_namespace *, const struct path *, struct kstat *, u32, unsigned int);
0438                 ssize_t (*listxattr) (struct dentry *, char *, size_t);
0439                 void (*update_time)(struct inode *, struct timespec *, int);
0440                 int (*atomic_open)(struct inode *, struct dentry *, struct file *,
0441                                    unsigned open_flag, umode_t create_mode);
0442                 int (*tmpfile) (struct user_namespace *, struct inode *, struct dentry *, umode_t);
0443                 int (*set_acl)(struct user_namespace *, struct inode *, struct posix_acl *, int);
0444                 int (*fileattr_set)(struct user_namespace *mnt_userns,
0445                                     struct dentry *dentry, struct fileattr *fa);
0446                 int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
0447         };
0448 
0449 Again, all methods are called without any locks being held, unless
0450 otherwise noted.
0451 
0452 ``create``
0453         called by the open(2) and creat(2) system calls.  Only required
0454         if you want to support regular files.  The dentry you get should
0455         not have an inode (i.e. it should be a negative dentry).  Here
0456         you will probably call d_instantiate() with the dentry and the
0457         newly created inode
0458 
0459 ``lookup``
0460         called when the VFS needs to look up an inode in a parent
0461         directory.  The name to look for is found in the dentry.  This
0462         method must call d_add() to insert the found inode into the
0463         dentry.  The "i_count" field in the inode structure should be
0464         incremented.  If the named inode does not exist a NULL inode
0465         should be inserted into the dentry (this is called a negative
0466         dentry).  Returning an error code from this routine must only be
0467         done on a real error, otherwise creating inodes with system
0468         calls like create(2), mknod(2), mkdir(2) and so on will fail.
0469         If you wish to overload the dentry methods then you should
0470         initialise the "d_dop" field in the dentry; this is a pointer to
0471         a struct "dentry_operations".  This method is called with the
0472         directory inode semaphore held
0473 
0474 ``link``
0475         called by the link(2) system call.  Only required if you want to
0476         support hard links.  You will probably need to call
0477         d_instantiate() just as you would in the create() method
0478 
0479 ``unlink``
0480         called by the unlink(2) system call.  Only required if you want
0481         to support deleting inodes
0482 
0483 ``symlink``
0484         called by the symlink(2) system call.  Only required if you want
0485         to support symlinks.  You will probably need to call
0486         d_instantiate() just as you would in the create() method
0487 
0488 ``mkdir``
0489         called by the mkdir(2) system call.  Only required if you want
0490         to support creating subdirectories.  You will probably need to
0491         call d_instantiate() just as you would in the create() method
0492 
0493 ``rmdir``
0494         called by the rmdir(2) system call.  Only required if you want
0495         to support deleting subdirectories
0496 
0497 ``mknod``
0498         called by the mknod(2) system call to create a device (char,
0499         block) inode or a named pipe (FIFO) or socket.  Only required if
0500         you want to support creating these types of inodes.  You will
0501         probably need to call d_instantiate() just as you would in the
0502         create() method
0503 
0504 ``rename``
0505         called by the rename(2) system call to rename the object to have
0506         the parent and name given by the second inode and dentry.
0507 
0508         The filesystem must return -EINVAL for any unsupported or
0509         unknown flags.  Currently the following flags are implemented:
0510         (1) RENAME_NOREPLACE: this flag indicates that if the target of
0511         the rename exists the rename should fail with -EEXIST instead of
0512         replacing the target.  The VFS already checks for existence, so
0513         for local filesystems the RENAME_NOREPLACE implementation is
0514         equivalent to plain rename.
0515         (2) RENAME_EXCHANGE: exchange source and target.  Both must
0516         exist; this is checked by the VFS.  Unlike plain rename, source
0517         and target may be of different type.
0518 
0519 ``get_link``
0520         called by the VFS to follow a symbolic link to the inode it
0521         points to.  Only required if you want to support symbolic links.
0522         This method returns the symlink body to traverse (and possibly
0523         resets the current position with nd_jump_link()).  If the body
0524         won't go away until the inode is gone, nothing else is needed;
0525         if it needs to be otherwise pinned, arrange for its release by
0526         having get_link(..., ..., done) do set_delayed_call(done,
0527         destructor, argument).  In that case destructor(argument) will
0528         be called once VFS is done with the body you've returned.  May
0529         be called in RCU mode; that is indicated by NULL dentry
0530         argument.  If request can't be handled without leaving RCU mode,
0531         have it return ERR_PTR(-ECHILD).
0532 
0533         If the filesystem stores the symlink target in ->i_link, the
0534         VFS may use it directly without calling ->get_link(); however,
0535         ->get_link() must still be provided.  ->i_link must not be
0536         freed until after an RCU grace period.  Writing to ->i_link
0537         post-iget() time requires a 'release' memory barrier.
0538 
0539 ``readlink``
0540         this is now just an override for use by readlink(2) for the
0541         cases when ->get_link uses nd_jump_link() or object is not in
0542         fact a symlink.  Normally filesystems should only implement
0543         ->get_link for symlinks and readlink(2) will automatically use
0544         that.
0545 
0546 ``permission``
0547         called by the VFS to check for access rights on a POSIX-like
0548         filesystem.
0549 
0550         May be called in rcu-walk mode (mask & MAY_NOT_BLOCK).  If in
0551         rcu-walk mode, the filesystem must check the permission without
0552         blocking or storing to the inode.
0553 
0554         If a situation is encountered that rcu-walk cannot handle,
0555         return
0556         -ECHILD and it will be called again in ref-walk mode.
0557 
0558 ``setattr``
0559         called by the VFS to set attributes for a file.  This method is
0560         called by chmod(2) and related system calls.
0561 
0562 ``getattr``
0563         called by the VFS to get attributes of a file.  This method is
0564         called by stat(2) and related system calls.
0565 
0566 ``listxattr``
0567         called by the VFS to list all extended attributes for a given
0568         file.  This method is called by the listxattr(2) system call.
0569 
0570 ``update_time``
0571         called by the VFS to update a specific time or the i_version of
0572         an inode.  If this is not defined the VFS will update the inode
0573         itself and call mark_inode_dirty_sync.
0574 
0575 ``atomic_open``
0576         called on the last component of an open.  Using this optional
0577         method the filesystem can look up, possibly create and open the
0578         file in one atomic operation.  If it wants to leave actual
0579         opening to the caller (e.g. if the file turned out to be a
0580         symlink, device, or just something filesystem won't do atomic
0581         open for), it may signal this by returning finish_no_open(file,
0582         dentry).  This method is only called if the last component is
0583         negative or needs lookup.  Cached positive dentries are still
0584         handled by f_op->open().  If the file was created, FMODE_CREATED
0585         flag should be set in file->f_mode.  In case of O_EXCL the
0586         method must only succeed if the file didn't exist and hence
0587         FMODE_CREATED shall always be set on success.
0588 
0589 ``tmpfile``
0590         called in the end of O_TMPFILE open().  Optional, equivalent to
0591         atomically creating, opening and unlinking a file in given
0592         directory.
0593 
0594 ``fileattr_get``
0595         called on ioctl(FS_IOC_GETFLAGS) and ioctl(FS_IOC_FSGETXATTR) to
0596         retrieve miscellaneous file flags and attributes.  Also called
0597         before the relevant SET operation to check what is being changed
0598         (in this case with i_rwsem locked exclusive).  If unset, then
0599         fall back to f_op->ioctl().
0600 
0601 ``fileattr_set``
0602         called on ioctl(FS_IOC_SETFLAGS) and ioctl(FS_IOC_FSSETXATTR) to
0603         change miscellaneous file flags and attributes.  Callers hold
0604         i_rwsem exclusive.  If unset, then fall back to f_op->ioctl().
0605 
0606 
0607 The Address Space Object
0608 ========================
0609 
0610 The address space object is used to group and manage pages in the page
0611 cache.  It can be used to keep track of the pages in a file (or anything
0612 else) and also track the mapping of sections of the file into process
0613 address spaces.
0614 
0615 There are a number of distinct yet related services that an
0616 address-space can provide.  These include communicating memory pressure,
0617 page lookup by address, and keeping track of pages tagged as Dirty or
0618 Writeback.
0619 
0620 The first can be used independently to the others.  The VM can try to
0621 either write dirty pages in order to clean them, or release clean pages
0622 in order to reuse them.  To do this it can call the ->writepage method
0623 on dirty pages, and ->release_folio on clean folios with the private
0624 flag set.  Clean pages without PagePrivate and with no external references
0625 will be released without notice being given to the address_space.
0626 
0627 To achieve this functionality, pages need to be placed on an LRU with
0628 lru_cache_add and mark_page_active needs to be called whenever the page
0629 is used.
0630 
0631 Pages are normally kept in a radix tree index by ->index.  This tree
0632 maintains information about the PG_Dirty and PG_Writeback status of each
0633 page, so that pages with either of these flags can be found quickly.
0634 
0635 The Dirty tag is primarily used by mpage_writepages - the default
0636 ->writepages method.  It uses the tag to find dirty pages to call
0637 ->writepage on.  If mpage_writepages is not used (i.e. the address
0638 provides its own ->writepages) , the PAGECACHE_TAG_DIRTY tag is almost
0639 unused.  write_inode_now and sync_inode do use it (through
0640 __sync_single_inode) to check if ->writepages has been successful in
0641 writing out the whole address_space.
0642 
0643 The Writeback tag is used by filemap*wait* and sync_page* functions, via
0644 filemap_fdatawait_range, to wait for all writeback to complete.
0645 
0646 An address_space handler may attach extra information to a page,
0647 typically using the 'private' field in the 'struct page'.  If such
0648 information is attached, the PG_Private flag should be set.  This will
0649 cause various VM routines to make extra calls into the address_space
0650 handler to deal with that data.
0651 
0652 An address space acts as an intermediate between storage and
0653 application.  Data is read into the address space a whole page at a
0654 time, and provided to the application either by copying of the page, or
0655 by memory-mapping the page.  Data is written into the address space by
0656 the application, and then written-back to storage typically in whole
0657 pages, however the address_space has finer control of write sizes.
0658 
0659 The read process essentially only requires 'read_folio'.  The write
0660 process is more complicated and uses write_begin/write_end or
0661 dirty_folio to write data into the address_space, and writepage and
0662 writepages to writeback data to storage.
0663 
0664 Adding and removing pages to/from an address_space is protected by the
0665 inode's i_mutex.
0666 
0667 When data is written to a page, the PG_Dirty flag should be set.  It
0668 typically remains set until writepage asks for it to be written.  This
0669 should clear PG_Dirty and set PG_Writeback.  It can be actually written
0670 at any point after PG_Dirty is clear.  Once it is known to be safe,
0671 PG_Writeback is cleared.
0672 
0673 Writeback makes use of a writeback_control structure to direct the
0674 operations.  This gives the writepage and writepages operations some
0675 information about the nature of and reason for the writeback request,
0676 and the constraints under which it is being done.  It is also used to
0677 return information back to the caller about the result of a writepage or
0678 writepages request.
0679 
0680 
0681 Handling errors during writeback
0682 --------------------------------
0683 
0684 Most applications that do buffered I/O will periodically call a file
0685 synchronization call (fsync, fdatasync, msync or sync_file_range) to
0686 ensure that data written has made it to the backing store.  When there
0687 is an error during writeback, they expect that error to be reported when
0688 a file sync request is made.  After an error has been reported on one
0689 request, subsequent requests on the same file descriptor should return
0690 0, unless further writeback errors have occurred since the previous file
0691 syncronization.
0692 
0693 Ideally, the kernel would report errors only on file descriptions on
0694 which writes were done that subsequently failed to be written back.  The
0695 generic pagecache infrastructure does not track the file descriptions
0696 that have dirtied each individual page however, so determining which
0697 file descriptors should get back an error is not possible.
0698 
0699 Instead, the generic writeback error tracking infrastructure in the
0700 kernel settles for reporting errors to fsync on all file descriptions
0701 that were open at the time that the error occurred.  In a situation with
0702 multiple writers, all of them will get back an error on a subsequent
0703 fsync, even if all of the writes done through that particular file
0704 descriptor succeeded (or even if there were no writes on that file
0705 descriptor at all).
0706 
0707 Filesystems that wish to use this infrastructure should call
0708 mapping_set_error to record the error in the address_space when it
0709 occurs.  Then, after writing back data from the pagecache in their
0710 file->fsync operation, they should call file_check_and_advance_wb_err to
0711 ensure that the struct file's error cursor has advanced to the correct
0712 point in the stream of errors emitted by the backing device(s).
0713 
0714 
0715 struct address_space_operations
0716 -------------------------------
0717 
0718 This describes how the VFS can manipulate mapping of a file to page
0719 cache in your filesystem.  The following members are defined:
0720 
0721 .. code-block:: c
0722 
0723         struct address_space_operations {
0724                 int (*writepage)(struct page *page, struct writeback_control *wbc);
0725                 int (*read_folio)(struct file *, struct folio *);
0726                 int (*writepages)(struct address_space *, struct writeback_control *);
0727                 bool (*dirty_folio)(struct address_space *, struct folio *);
0728                 void (*readahead)(struct readahead_control *);
0729                 int (*write_begin)(struct file *, struct address_space *mapping,
0730                                    loff_t pos, unsigned len,
0731                                 struct page **pagep, void **fsdata);
0732                 int (*write_end)(struct file *, struct address_space *mapping,
0733                                  loff_t pos, unsigned len, unsigned copied,
0734                                  struct page *page, void *fsdata);
0735                 sector_t (*bmap)(struct address_space *, sector_t);
0736                 void (*invalidate_folio) (struct folio *, size_t start, size_t len);
0737                 bool (*release_folio)(struct folio *, gfp_t);
0738                 void (*free_folio)(struct folio *);
0739                 ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);
0740                 int (*migrate_folio)(struct mapping *, struct folio *dst,
0741                                 struct folio *src, enum migrate_mode);
0742                 int (*launder_folio) (struct folio *);
0743 
0744                 bool (*is_partially_uptodate) (struct folio *, size_t from,
0745                                                size_t count);
0746                 void (*is_dirty_writeback)(struct folio *, bool *, bool *);
0747                 int (*error_remove_page) (struct mapping *mapping, struct page *page);
0748                 int (*swap_activate)(struct swap_info_struct *sis, struct file *f, sector_t *span)
0749                 int (*swap_deactivate)(struct file *);
0750                 int (*swap_rw)(struct kiocb *iocb, struct iov_iter *iter);
0751         };
0752 
0753 ``writepage``
0754         called by the VM to write a dirty page to backing store.  This
0755         may happen for data integrity reasons (i.e. 'sync'), or to free
0756         up memory (flush).  The difference can be seen in
0757         wbc->sync_mode.  The PG_Dirty flag has been cleared and
0758         PageLocked is true.  writepage should start writeout, should set
0759         PG_Writeback, and should make sure the page is unlocked, either
0760         synchronously or asynchronously when the write operation
0761         completes.
0762 
0763         If wbc->sync_mode is WB_SYNC_NONE, ->writepage doesn't have to
0764         try too hard if there are problems, and may choose to write out
0765         other pages from the mapping if that is easier (e.g. due to
0766         internal dependencies).  If it chooses not to start writeout, it
0767         should return AOP_WRITEPAGE_ACTIVATE so that the VM will not
0768         keep calling ->writepage on that page.
0769 
0770         See the file "Locking" for more details.
0771 
0772 ``read_folio``
0773         Called by the page cache to read a folio from the backing store.
0774         The 'file' argument supplies authentication information to network
0775         filesystems, and is generally not used by block based filesystems.
0776         It may be NULL if the caller does not have an open file (eg if
0777         the kernel is performing a read for itself rather than on behalf
0778         of a userspace process with an open file).
0779 
0780         If the mapping does not support large folios, the folio will
0781         contain a single page.  The folio will be locked when read_folio
0782         is called.  If the read completes successfully, the folio should
0783         be marked uptodate.  The filesystem should unlock the folio
0784         once the read has completed, whether it was successful or not.
0785         The filesystem does not need to modify the refcount on the folio;
0786         the page cache holds a reference count and that will not be
0787         released until the folio is unlocked.
0788 
0789         Filesystems may implement ->read_folio() synchronously.
0790         In normal operation, folios are read through the ->readahead()
0791         method.  Only if this fails, or if the caller needs to wait for
0792         the read to complete will the page cache call ->read_folio().
0793         Filesystems should not attempt to perform their own readahead
0794         in the ->read_folio() operation.
0795 
0796         If the filesystem cannot perform the read at this time, it can
0797         unlock the folio, do whatever action it needs to ensure that the
0798         read will succeed in the future and return AOP_TRUNCATED_PAGE.
0799         In this case, the caller should look up the folio, lock it,
0800         and call ->read_folio again.
0801 
0802         Callers may invoke the ->read_folio() method directly, but using
0803         read_mapping_folio() will take care of locking, waiting for the
0804         read to complete and handle cases such as AOP_TRUNCATED_PAGE.
0805 
0806 ``writepages``
0807         called by the VM to write out pages associated with the
0808         address_space object.  If wbc->sync_mode is WB_SYNC_ALL, then
0809         the writeback_control will specify a range of pages that must be
0810         written out.  If it is WB_SYNC_NONE, then a nr_to_write is
0811         given and that many pages should be written if possible.  If no
0812         ->writepages is given, then mpage_writepages is used instead.
0813         This will choose pages from the address space that are tagged as
0814         DIRTY and will pass them to ->writepage.
0815 
0816 ``dirty_folio``
0817         called by the VM to mark a folio as dirty.  This is particularly
0818         needed if an address space attaches private data to a folio, and
0819         that data needs to be updated when a folio is dirtied.  This is
0820         called, for example, when a memory mapped page gets modified.
0821         If defined, it should set the folio dirty flag, and the
0822         PAGECACHE_TAG_DIRTY search mark in i_pages.
0823 
0824 ``readahead``
0825         Called by the VM to read pages associated with the address_space
0826         object.  The pages are consecutive in the page cache and are
0827         locked.  The implementation should decrement the page refcount
0828         after starting I/O on each page.  Usually the page will be
0829         unlocked by the I/O completion handler.  The set of pages are
0830         divided into some sync pages followed by some async pages,
0831         rac->ra->async_size gives the number of async pages.  The
0832         filesystem should attempt to read all sync pages but may decide
0833         to stop once it reaches the async pages.  If it does decide to
0834         stop attempting I/O, it can simply return.  The caller will
0835         remove the remaining pages from the address space, unlock them
0836         and decrement the page refcount.  Set PageUptodate if the I/O
0837         completes successfully.  Setting PageError on any page will be
0838         ignored; simply unlock the page if an I/O error occurs.
0839 
0840 ``write_begin``
0841         Called by the generic buffered write code to ask the filesystem
0842         to prepare to write len bytes at the given offset in the file.
0843         The address_space should check that the write will be able to
0844         complete, by allocating space if necessary and doing any other
0845         internal housekeeping.  If the write will update parts of any
0846         basic-blocks on storage, then those blocks should be pre-read
0847         (if they haven't been read already) so that the updated blocks
0848         can be written out properly.
0849 
0850         The filesystem must return the locked pagecache page for the
0851         specified offset, in ``*pagep``, for the caller to write into.
0852 
0853         It must be able to cope with short writes (where the length
0854         passed to write_begin is greater than the number of bytes copied
0855         into the page).
0856 
0857         A void * may be returned in fsdata, which then gets passed into
0858         write_end.
0859 
0860         Returns 0 on success; < 0 on failure (which is the error code),
0861         in which case write_end is not called.
0862 
0863 ``write_end``
0864         After a successful write_begin, and data copy, write_end must be
0865         called.  len is the original len passed to write_begin, and
0866         copied is the amount that was able to be copied.
0867 
0868         The filesystem must take care of unlocking the page and
0869         releasing it refcount, and updating i_size.
0870 
0871         Returns < 0 on failure, otherwise the number of bytes (<=
0872         'copied') that were able to be copied into pagecache.
0873 
0874 ``bmap``
0875         called by the VFS to map a logical block offset within object to
0876         physical block number.  This method is used by the FIBMAP ioctl
0877         and for working with swap-files.  To be able to swap to a file,
0878         the file must have a stable mapping to a block device.  The swap
0879         system does not go through the filesystem but instead uses bmap
0880         to find out where the blocks in the file are and uses those
0881         addresses directly.
0882 
0883 ``invalidate_folio``
0884         If a folio has private data, then invalidate_folio will be
0885         called when part or all of the folio is to be removed from the
0886         address space.  This generally corresponds to either a
0887         truncation, punch hole or a complete invalidation of the address
0888         space (in the latter case 'offset' will always be 0 and 'length'
0889         will be folio_size()).  Any private data associated with the folio
0890         should be updated to reflect this truncation.  If offset is 0
0891         and length is folio_size(), then the private data should be
0892         released, because the folio must be able to be completely
0893         discarded.  This may be done by calling the ->release_folio
0894         function, but in this case the release MUST succeed.
0895 
0896 ``release_folio``
0897         release_folio is called on folios with private data to tell the
0898         filesystem that the folio is about to be freed.  ->release_folio
0899         should remove any private data from the folio and clear the
0900         private flag.  If release_folio() fails, it should return false.
0901         release_folio() is used in two distinct though related cases.
0902         The first is when the VM wants to free a clean folio with no
0903         active users.  If ->release_folio succeeds, the folio will be
0904         removed from the address_space and be freed.
0905 
0906         The second case is when a request has been made to invalidate
0907         some or all folios in an address_space.  This can happen
0908         through the fadvise(POSIX_FADV_DONTNEED) system call or by the
0909         filesystem explicitly requesting it as nfs and 9p do (when they
0910         believe the cache may be out of date with storage) by calling
0911         invalidate_inode_pages2().  If the filesystem makes such a call,
0912         and needs to be certain that all folios are invalidated, then
0913         its release_folio will need to ensure this.  Possibly it can
0914         clear the uptodate flag if it cannot free private data yet.
0915 
0916 ``free_folio``
0917         free_folio is called once the folio is no longer visible in the
0918         page cache in order to allow the cleanup of any private data.
0919         Since it may be called by the memory reclaimer, it should not
0920         assume that the original address_space mapping still exists, and
0921         it should not block.
0922 
0923 ``direct_IO``
0924         called by the generic read/write routines to perform direct_IO -
0925         that is IO requests which bypass the page cache and transfer
0926         data directly between the storage and the application's address
0927         space.
0928 
0929 ``migrate_folio``
0930         This is used to compact the physical memory usage.  If the VM
0931         wants to relocate a folio (maybe from a memory device that is
0932         signalling imminent failure) it will pass a new folio and an old
0933         folio to this function.  migrate_folio should transfer any private
0934         data across and update any references that it has to the folio.
0935 
0936 ``launder_folio``
0937         Called before freeing a folio - it writes back the dirty folio.
0938         To prevent redirtying the folio, it is kept locked during the
0939         whole operation.
0940 
0941 ``is_partially_uptodate``
0942         Called by the VM when reading a file through the pagecache when
0943         the underlying blocksize is smaller than the size of the folio.
0944         If the required block is up to date then the read can complete
0945         without needing I/O to bring the whole page up to date.
0946 
0947 ``is_dirty_writeback``
0948         Called by the VM when attempting to reclaim a folio.  The VM uses
0949         dirty and writeback information to determine if it needs to
0950         stall to allow flushers a chance to complete some IO.
0951         Ordinarily it can use folio_test_dirty and folio_test_writeback but
0952         some filesystems have more complex state (unstable folios in NFS
0953         prevent reclaim) or do not set those flags due to locking
0954         problems.  This callback allows a filesystem to indicate to the
0955         VM if a folio should be treated as dirty or writeback for the
0956         purposes of stalling.
0957 
0958 ``error_remove_page``
0959         normally set to generic_error_remove_page if truncation is ok
0960         for this address space.  Used for memory failure handling.
0961         Setting this implies you deal with pages going away under you,
0962         unless you have them locked or reference counts increased.
0963 
0964 ``swap_activate``
0965 
0966         Called to prepare the given file for swap.  It should perform
0967         any validation and preparation necessary to ensure that writes
0968         can be performed with minimal memory allocation.  It should call
0969         add_swap_extent(), or the helper iomap_swapfile_activate(), and
0970         return the number of extents added.  If IO should be submitted
0971         through ->swap_rw(), it should set SWP_FS_OPS, otherwise IO will
0972         be submitted directly to the block device ``sis->bdev``.
0973 
0974 ``swap_deactivate``
0975         Called during swapoff on files where swap_activate was
0976         successful.
0977 
0978 ``swap_rw``
0979         Called to read or write swap pages when SWP_FS_OPS is set.
0980 
0981 The File Object
0982 ===============
0983 
0984 A file object represents a file opened by a process.  This is also known
0985 as an "open file description" in POSIX parlance.
0986 
0987 
0988 struct file_operations
0989 ----------------------
0990 
0991 This describes how the VFS can manipulate an open file.  As of kernel
0992 4.18, the following members are defined:
0993 
0994 .. code-block:: c
0995 
0996         struct file_operations {
0997                 struct module *owner;
0998                 loff_t (*llseek) (struct file *, loff_t, int);
0999                 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
1000                 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
1001                 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
1002                 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
1003                 int (*iopoll)(struct kiocb *kiocb, bool spin);
1004                 int (*iterate) (struct file *, struct dir_context *);
1005                 int (*iterate_shared) (struct file *, struct dir_context *);
1006                 __poll_t (*poll) (struct file *, struct poll_table_struct *);
1007                 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
1008                 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
1009                 int (*mmap) (struct file *, struct vm_area_struct *);
1010                 int (*open) (struct inode *, struct file *);
1011                 int (*flush) (struct file *, fl_owner_t id);
1012                 int (*release) (struct inode *, struct file *);
1013                 int (*fsync) (struct file *, loff_t, loff_t, int datasync);
1014                 int (*fasync) (int, struct file *, int);
1015                 int (*lock) (struct file *, int, struct file_lock *);
1016                 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
1017                 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
1018                 int (*check_flags)(int);
1019                 int (*flock) (struct file *, int, struct file_lock *);
1020                 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
1021                 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
1022                 int (*setlease)(struct file *, long, struct file_lock **, void **);
1023                 long (*fallocate)(struct file *file, int mode, loff_t offset,
1024                                   loff_t len);
1025                 void (*show_fdinfo)(struct seq_file *m, struct file *f);
1026         #ifndef CONFIG_MMU
1027                 unsigned (*mmap_capabilities)(struct file *);
1028         #endif
1029                 ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int);
1030                 loff_t (*remap_file_range)(struct file *file_in, loff_t pos_in,
1031                                            struct file *file_out, loff_t pos_out,
1032                                            loff_t len, unsigned int remap_flags);
1033                 int (*fadvise)(struct file *, loff_t, loff_t, int);
1034         };
1035 
1036 Again, all methods are called without any locks being held, unless
1037 otherwise noted.
1038 
1039 ``llseek``
1040         called when the VFS needs to move the file position index
1041 
1042 ``read``
1043         called by read(2) and related system calls
1044 
1045 ``read_iter``
1046         possibly asynchronous read with iov_iter as destination
1047 
1048 ``write``
1049         called by write(2) and related system calls
1050 
1051 ``write_iter``
1052         possibly asynchronous write with iov_iter as source
1053 
1054 ``iopoll``
1055         called when aio wants to poll for completions on HIPRI iocbs
1056 
1057 ``iterate``
1058         called when the VFS needs to read the directory contents
1059 
1060 ``iterate_shared``
1061         called when the VFS needs to read the directory contents when
1062         filesystem supports concurrent dir iterators
1063 
1064 ``poll``
1065         called by the VFS when a process wants to check if there is
1066         activity on this file and (optionally) go to sleep until there
1067         is activity.  Called by the select(2) and poll(2) system calls
1068 
1069 ``unlocked_ioctl``
1070         called by the ioctl(2) system call.
1071 
1072 ``compat_ioctl``
1073         called by the ioctl(2) system call when 32 bit system calls are
1074          used on 64 bit kernels.
1075 
1076 ``mmap``
1077         called by the mmap(2) system call
1078 
1079 ``open``
1080         called by the VFS when an inode should be opened.  When the VFS
1081         opens a file, it creates a new "struct file".  It then calls the
1082         open method for the newly allocated file structure.  You might
1083         think that the open method really belongs in "struct
1084         inode_operations", and you may be right.  I think it's done the
1085         way it is because it makes filesystems simpler to implement.
1086         The open() method is a good place to initialize the
1087         "private_data" member in the file structure if you want to point
1088         to a device structure
1089 
1090 ``flush``
1091         called by the close(2) system call to flush a file
1092 
1093 ``release``
1094         called when the last reference to an open file is closed
1095 
1096 ``fsync``
1097         called by the fsync(2) system call.  Also see the section above
1098         entitled "Handling errors during writeback".
1099 
1100 ``fasync``
1101         called by the fcntl(2) system call when asynchronous
1102         (non-blocking) mode is enabled for a file
1103 
1104 ``lock``
1105         called by the fcntl(2) system call for F_GETLK, F_SETLK, and
1106         F_SETLKW commands
1107 
1108 ``get_unmapped_area``
1109         called by the mmap(2) system call
1110 
1111 ``check_flags``
1112         called by the fcntl(2) system call for F_SETFL command
1113 
1114 ``flock``
1115         called by the flock(2) system call
1116 
1117 ``splice_write``
1118         called by the VFS to splice data from a pipe to a file.  This
1119         method is used by the splice(2) system call
1120 
1121 ``splice_read``
1122         called by the VFS to splice data from file to a pipe.  This
1123         method is used by the splice(2) system call
1124 
1125 ``setlease``
1126         called by the VFS to set or release a file lock lease.  setlease
1127         implementations should call generic_setlease to record or remove
1128         the lease in the inode after setting it.
1129 
1130 ``fallocate``
1131         called by the VFS to preallocate blocks or punch a hole.
1132 
1133 ``copy_file_range``
1134         called by the copy_file_range(2) system call.
1135 
1136 ``remap_file_range``
1137         called by the ioctl(2) system call for FICLONERANGE and FICLONE
1138         and FIDEDUPERANGE commands to remap file ranges.  An
1139         implementation should remap len bytes at pos_in of the source
1140         file into the dest file at pos_out.  Implementations must handle
1141         callers passing in len == 0; this means "remap to the end of the
1142         source file".  The return value should the number of bytes
1143         remapped, or the usual negative error code if errors occurred
1144         before any bytes were remapped.  The remap_flags parameter
1145         accepts REMAP_FILE_* flags.  If REMAP_FILE_DEDUP is set then the
1146         implementation must only remap if the requested file ranges have
1147         identical contents.  If REMAP_FILE_CAN_SHORTEN is set, the caller is
1148         ok with the implementation shortening the request length to
1149         satisfy alignment or EOF requirements (or any other reason).
1150 
1151 ``fadvise``
1152         possibly called by the fadvise64() system call.
1153 
1154 Note that the file operations are implemented by the specific
1155 filesystem in which the inode resides.  When opening a device node
1156 (character or block special) most filesystems will call special
1157 support routines in the VFS which will locate the required device
1158 driver information.  These support routines replace the filesystem file
1159 operations with those for the device driver, and then proceed to call
1160 the new open() method for the file.  This is how opening a device file
1161 in the filesystem eventually ends up calling the device driver open()
1162 method.
1163 
1164 
1165 Directory Entry Cache (dcache)
1166 ==============================
1167 
1168 
1169 struct dentry_operations
1170 ------------------------
1171 
1172 This describes how a filesystem can overload the standard dentry
1173 operations.  Dentries and the dcache are the domain of the VFS and the
1174 individual filesystem implementations.  Device drivers have no business
1175 here.  These methods may be set to NULL, as they are either optional or
1176 the VFS uses a default.  As of kernel 2.6.22, the following members are
1177 defined:
1178 
1179 .. code-block:: c
1180 
1181         struct dentry_operations {
1182                 int (*d_revalidate)(struct dentry *, unsigned int);
1183                 int (*d_weak_revalidate)(struct dentry *, unsigned int);
1184                 int (*d_hash)(const struct dentry *, struct qstr *);
1185                 int (*d_compare)(const struct dentry *,
1186                                  unsigned int, const char *, const struct qstr *);
1187                 int (*d_delete)(const struct dentry *);
1188                 int (*d_init)(struct dentry *);
1189                 void (*d_release)(struct dentry *);
1190                 void (*d_iput)(struct dentry *, struct inode *);
1191                 char *(*d_dname)(struct dentry *, char *, int);
1192                 struct vfsmount *(*d_automount)(struct path *);
1193                 int (*d_manage)(const struct path *, bool);
1194                 struct dentry *(*d_real)(struct dentry *, const struct inode *);
1195         };
1196 
1197 ``d_revalidate``
1198         called when the VFS needs to revalidate a dentry.  This is
1199         called whenever a name look-up finds a dentry in the dcache.
1200         Most local filesystems leave this as NULL, because all their
1201         dentries in the dcache are valid.  Network filesystems are
1202         different since things can change on the server without the
1203         client necessarily being aware of it.
1204 
1205         This function should return a positive value if the dentry is
1206         still valid, and zero or a negative error code if it isn't.
1207 
1208         d_revalidate may be called in rcu-walk mode (flags &
1209         LOOKUP_RCU).  If in rcu-walk mode, the filesystem must
1210         revalidate the dentry without blocking or storing to the dentry,
1211         d_parent and d_inode should not be used without care (because
1212         they can change and, in d_inode case, even become NULL under
1213         us).
1214 
1215         If a situation is encountered that rcu-walk cannot handle,
1216         return
1217         -ECHILD and it will be called again in ref-walk mode.
1218 
1219 ``_weak_revalidate``
1220         called when the VFS needs to revalidate a "jumped" dentry.  This
1221         is called when a path-walk ends at dentry that was not acquired
1222         by doing a lookup in the parent directory.  This includes "/",
1223         "." and "..", as well as procfs-style symlinks and mountpoint
1224         traversal.
1225 
1226         In this case, we are less concerned with whether the dentry is
1227         still fully correct, but rather that the inode is still valid.
1228         As with d_revalidate, most local filesystems will set this to
1229         NULL since their dcache entries are always valid.
1230 
1231         This function has the same return code semantics as
1232         d_revalidate.
1233 
1234         d_weak_revalidate is only called after leaving rcu-walk mode.
1235 
1236 ``d_hash``
1237         called when the VFS adds a dentry to the hash table.  The first
1238         dentry passed to d_hash is the parent directory that the name is
1239         to be hashed into.
1240 
1241         Same locking and synchronisation rules as d_compare regarding
1242         what is safe to dereference etc.
1243 
1244 ``d_compare``
1245         called to compare a dentry name with a given name.  The first
1246         dentry is the parent of the dentry to be compared, the second is
1247         the child dentry.  len and name string are properties of the
1248         dentry to be compared.  qstr is the name to compare it with.
1249 
1250         Must be constant and idempotent, and should not take locks if
1251         possible, and should not or store into the dentry.  Should not
1252         dereference pointers outside the dentry without lots of care
1253         (eg.  d_parent, d_inode, d_name should not be used).
1254 
1255         However, our vfsmount is pinned, and RCU held, so the dentries
1256         and inodes won't disappear, neither will our sb or filesystem
1257         module.  ->d_sb may be used.
1258 
1259         It is a tricky calling convention because it needs to be called
1260         under "rcu-walk", ie. without any locks or references on things.
1261 
1262 ``d_delete``
1263         called when the last reference to a dentry is dropped and the
1264         dcache is deciding whether or not to cache it.  Return 1 to
1265         delete immediately, or 0 to cache the dentry.  Default is NULL
1266         which means to always cache a reachable dentry.  d_delete must
1267         be constant and idempotent.
1268 
1269 ``d_init``
1270         called when a dentry is allocated
1271 
1272 ``d_release``
1273         called when a dentry is really deallocated
1274 
1275 ``d_iput``
1276         called when a dentry loses its inode (just prior to its being
1277         deallocated).  The default when this is NULL is that the VFS
1278         calls iput().  If you define this method, you must call iput()
1279         yourself
1280 
1281 ``d_dname``
1282         called when the pathname of a dentry should be generated.
1283         Useful for some pseudo filesystems (sockfs, pipefs, ...) to
1284         delay pathname generation.  (Instead of doing it when dentry is
1285         created, it's done only when the path is needed.).  Real
1286         filesystems probably dont want to use it, because their dentries
1287         are present in global dcache hash, so their hash should be an
1288         invariant.  As no lock is held, d_dname() should not try to
1289         modify the dentry itself, unless appropriate SMP safety is used.
1290         CAUTION : d_path() logic is quite tricky.  The correct way to
1291         return for example "Hello" is to put it at the end of the
1292         buffer, and returns a pointer to the first char.
1293         dynamic_dname() helper function is provided to take care of
1294         this.
1295 
1296         Example :
1297 
1298 .. code-block:: c
1299 
1300         static char *pipefs_dname(struct dentry *dent, char *buffer, int buflen)
1301         {
1302                 return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]",
1303                                 dentry->d_inode->i_ino);
1304         }
1305 
1306 ``d_automount``
1307         called when an automount dentry is to be traversed (optional).
1308         This should create a new VFS mount record and return the record
1309         to the caller.  The caller is supplied with a path parameter
1310         giving the automount directory to describe the automount target
1311         and the parent VFS mount record to provide inheritable mount
1312         parameters.  NULL should be returned if someone else managed to
1313         make the automount first.  If the vfsmount creation failed, then
1314         an error code should be returned.  If -EISDIR is returned, then
1315         the directory will be treated as an ordinary directory and
1316         returned to pathwalk to continue walking.
1317 
1318         If a vfsmount is returned, the caller will attempt to mount it
1319         on the mountpoint and will remove the vfsmount from its
1320         expiration list in the case of failure.  The vfsmount should be
1321         returned with 2 refs on it to prevent automatic expiration - the
1322         caller will clean up the additional ref.
1323 
1324         This function is only used if DCACHE_NEED_AUTOMOUNT is set on
1325         the dentry.  This is set by __d_instantiate() if S_AUTOMOUNT is
1326         set on the inode being added.
1327 
1328 ``d_manage``
1329         called to allow the filesystem to manage the transition from a
1330         dentry (optional).  This allows autofs, for example, to hold up
1331         clients waiting to explore behind a 'mountpoint' while letting
1332         the daemon go past and construct the subtree there.  0 should be
1333         returned to let the calling process continue.  -EISDIR can be
1334         returned to tell pathwalk to use this directory as an ordinary
1335         directory and to ignore anything mounted on it and not to check
1336         the automount flag.  Any other error code will abort pathwalk
1337         completely.
1338 
1339         If the 'rcu_walk' parameter is true, then the caller is doing a
1340         pathwalk in RCU-walk mode.  Sleeping is not permitted in this
1341         mode, and the caller can be asked to leave it and call again by
1342         returning -ECHILD.  -EISDIR may also be returned to tell
1343         pathwalk to ignore d_automount or any mounts.
1344 
1345         This function is only used if DCACHE_MANAGE_TRANSIT is set on
1346         the dentry being transited from.
1347 
1348 ``d_real``
1349         overlay/union type filesystems implement this method to return
1350         one of the underlying dentries hidden by the overlay.  It is
1351         used in two different modes:
1352 
1353         Called from file_dentry() it returns the real dentry matching
1354         the inode argument.  The real dentry may be from a lower layer
1355         already copied up, but still referenced from the file.  This
1356         mode is selected with a non-NULL inode argument.
1357 
1358         With NULL inode the topmost real underlying dentry is returned.
1359 
1360 Each dentry has a pointer to its parent dentry, as well as a hash list
1361 of child dentries.  Child dentries are basically like files in a
1362 directory.
1363 
1364 
1365 Directory Entry Cache API
1366 --------------------------
1367 
1368 There are a number of functions defined which permit a filesystem to
1369 manipulate dentries:
1370 
1371 ``dget``
1372         open a new handle for an existing dentry (this just increments
1373         the usage count)
1374 
1375 ``dput``
1376         close a handle for a dentry (decrements the usage count).  If
1377         the usage count drops to 0, and the dentry is still in its
1378         parent's hash, the "d_delete" method is called to check whether
1379         it should be cached.  If it should not be cached, or if the
1380         dentry is not hashed, it is deleted.  Otherwise cached dentries
1381         are put into an LRU list to be reclaimed on memory shortage.
1382 
1383 ``d_drop``
1384         this unhashes a dentry from its parents hash list.  A subsequent
1385         call to dput() will deallocate the dentry if its usage count
1386         drops to 0
1387 
1388 ``d_delete``
1389         delete a dentry.  If there are no other open references to the
1390         dentry then the dentry is turned into a negative dentry (the
1391         d_iput() method is called).  If there are other references, then
1392         d_drop() is called instead
1393 
1394 ``d_add``
1395         add a dentry to its parents hash list and then calls
1396         d_instantiate()
1397 
1398 ``d_instantiate``
1399         add a dentry to the alias hash list for the inode and updates
1400         the "d_inode" member.  The "i_count" member in the inode
1401         structure should be set/incremented.  If the inode pointer is
1402         NULL, the dentry is called a "negative dentry".  This function
1403         is commonly called when an inode is created for an existing
1404         negative dentry
1405 
1406 ``d_lookup``
1407         look up a dentry given its parent and path name component It
1408         looks up the child of that given name from the dcache hash
1409         table.  If it is found, the reference count is incremented and
1410         the dentry is returned.  The caller must use dput() to free the
1411         dentry when it finishes using it.
1412 
1413 
1414 Mount Options
1415 =============
1416 
1417 
1418 Parsing options
1419 ---------------
1420 
1421 On mount and remount the filesystem is passed a string containing a
1422 comma separated list of mount options.  The options can have either of
1423 these forms:
1424 
1425   option
1426   option=value
1427 
1428 The <linux/parser.h> header defines an API that helps parse these
1429 options.  There are plenty of examples on how to use it in existing
1430 filesystems.
1431 
1432 
1433 Showing options
1434 ---------------
1435 
1436 If a filesystem accepts mount options, it must define show_options() to
1437 show all the currently active options.  The rules are:
1438 
1439   - options MUST be shown which are not default or their values differ
1440     from the default
1441 
1442   - options MAY be shown which are enabled by default or have their
1443     default value
1444 
1445 Options used only internally between a mount helper and the kernel (such
1446 as file descriptors), or which only have an effect during the mounting
1447 (such as ones controlling the creation of a journal) are exempt from the
1448 above rules.
1449 
1450 The underlying reason for the above rules is to make sure, that a mount
1451 can be accurately replicated (e.g. umounting and mounting again) based
1452 on the information found in /proc/mounts.
1453 
1454 
1455 Resources
1456 =========
1457 
1458 (Note some of these resources are not up-to-date with the latest kernel
1459  version.)
1460 
1461 Creating Linux virtual filesystems. 2002
1462     <https://lwn.net/Articles/13325/>
1463 
1464 The Linux Virtual File-system Layer by Neil Brown. 1999
1465     <http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/vfs.html>
1466 
1467 A tour of the Linux VFS by Michael K. Johnson. 1996
1468     <https://www.tldp.org/LDP/khg/HyperNews/get/fs/vfstour.html>
1469 
1470 A small trail through the Linux kernel by Andries Brouwer. 2001
1471     <https://www.win.tue.nl/~aeb/linux/vfs/trail.html>