Skip to content

Commit

Permalink
Documentation/filesystems: update documentation of file_operations
Browse files Browse the repository at this point in the history
...to kernel 4.18.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
  • Loading branch information
Amir Goldstein authored and Miklos Szeredi committed Aug 30, 2018
1 parent 5b910bd commit 17ef445
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions Documentation/filesystems/vfs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -848,7 +848,7 @@ struct file_operations
----------------------

This describes how the VFS can manipulate an open file. As of kernel
4.1, the following members are defined:
4.18, the following members are defined:

struct file_operations {
struct module *owner;
Expand All @@ -858,11 +858,11 @@ struct file_operations {
ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
int (*iterate) (struct file *, struct dir_context *);
int (*iterate_shared) (struct file *, struct dir_context *);
__poll_t (*poll) (struct file *, struct poll_table_struct *);
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
int (*mmap) (struct file *, struct vm_area_struct *);
int (*mremap)(struct file *, struct vm_area_struct *);
int (*open) (struct inode *, struct file *);
int (*flush) (struct file *, fl_owner_t id);
int (*release) (struct inode *, struct file *);
Expand All @@ -882,6 +882,9 @@ struct file_operations {
#ifndef CONFIG_MMU
unsigned (*mmap_capabilities)(struct file *);
#endif
ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int);
int (*clone_file_range)(struct file *, loff_t, struct file *, loff_t, u64);
int (*dedupe_file_range)(struct file *, loff_t, struct file *, loff_t, u64);
};

Again, all methods are called without any locks being held, unless
Expand All @@ -899,6 +902,9 @@ otherwise noted.

iterate: called when the VFS needs to read the directory contents

iterate_shared: called when the VFS needs to read the directory contents
when filesystem supports concurrent dir iterators

poll: called by the VFS when a process wants to check if there is
activity on this file and (optionally) go to sleep until there
is activity. Called by the select(2) and poll(2) system calls
Expand Down Expand Up @@ -951,6 +957,14 @@ otherwise noted.

fallocate: called by the VFS to preallocate blocks or punch a hole.

copy_file_range: called by the copy_file_range(2) system call.

clone_file_range: called by the ioctl(2) system call for FICLONERANGE and
FICLONE commands.

dedupe_file_range: called by the ioctl(2) system call for FIDEDUPERANGE
command.

Note that the file operations are implemented by the specific
filesystem in which the inode resides. When opening a device node
(character or block special) most filesystems will call special
Expand Down

0 comments on commit 17ef445

Please sign in to comment.