diff options
Diffstat (limited to 'Documentation/filesystems')
| -rw-r--r-- | Documentation/filesystems/Locking | 7 | ||||
| -rw-r--r-- | Documentation/filesystems/vfs.txt | 13 |
2 files changed, 1 insertions, 19 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 2c391338c675..37bf0a9de75c 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
| @@ -441,8 +441,6 @@ prototypes: | |||
| 441 | int (*iterate) (struct file *, struct dir_context *); | 441 | int (*iterate) (struct file *, struct dir_context *); |
| 442 | int (*iterate_shared) (struct file *, struct dir_context *); | 442 | int (*iterate_shared) (struct file *, struct dir_context *); |
| 443 | __poll_t (*poll) (struct file *, struct poll_table_struct *); | 443 | __poll_t (*poll) (struct file *, struct poll_table_struct *); |
| 444 | struct wait_queue_head * (*get_poll_head)(struct file *, __poll_t); | ||
| 445 | __poll_t (*poll_mask) (struct file *, __poll_t); | ||
| 446 | long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); | 444 | long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); |
| 447 | long (*compat_ioctl) (struct file *, unsigned int, unsigned long); | 445 | long (*compat_ioctl) (struct file *, unsigned int, unsigned long); |
| 448 | int (*mmap) (struct file *, struct vm_area_struct *); | 446 | int (*mmap) (struct file *, struct vm_area_struct *); |
| @@ -473,7 +471,7 @@ prototypes: | |||
| 473 | }; | 471 | }; |
| 474 | 472 | ||
| 475 | locking rules: | 473 | locking rules: |
| 476 | All except for ->poll_mask may block. | 474 | All may block. |
| 477 | 475 | ||
| 478 | ->llseek() locking has moved from llseek to the individual llseek | 476 | ->llseek() locking has moved from llseek to the individual llseek |
| 479 | implementations. If your fs is not using generic_file_llseek, you | 477 | implementations. If your fs is not using generic_file_llseek, you |
| @@ -505,9 +503,6 @@ in sys_read() and friends. | |||
| 505 | the lease within the individual filesystem to record the result of the | 503 | the lease within the individual filesystem to record the result of the |
| 506 | operation | 504 | operation |
| 507 | 505 | ||
| 508 | ->poll_mask can be called with or without the waitqueue lock for the waitqueue | ||
| 509 | returned from ->get_poll_head. | ||
| 510 | |||
| 511 | --------------------------- dquot_operations ------------------------------- | 506 | --------------------------- dquot_operations ------------------------------- |
| 512 | prototypes: | 507 | prototypes: |
| 513 | int (*write_dquot) (struct dquot *); | 508 | int (*write_dquot) (struct dquot *); |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 829a7b7857a4..f608180ad59d 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
| @@ -857,8 +857,6 @@ struct file_operations { | |||
| 857 | ssize_t (*write_iter) (struct kiocb *, struct iov_iter *); | 857 | ssize_t (*write_iter) (struct kiocb *, struct iov_iter *); |
| 858 | int (*iterate) (struct file *, struct dir_context *); | 858 | int (*iterate) (struct file *, struct dir_context *); |
| 859 | __poll_t (*poll) (struct file *, struct poll_table_struct *); | 859 | __poll_t (*poll) (struct file *, struct poll_table_struct *); |
| 860 | struct wait_queue_head * (*get_poll_head)(struct file *, __poll_t); | ||
| 861 | __poll_t (*poll_mask) (struct file *, __poll_t); | ||
| 862 | long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); | 860 | long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); |
| 863 | long (*compat_ioctl) (struct file *, unsigned int, unsigned long); | 861 | long (*compat_ioctl) (struct file *, unsigned int, unsigned long); |
| 864 | int (*mmap) (struct file *, struct vm_area_struct *); | 862 | int (*mmap) (struct file *, struct vm_area_struct *); |
| @@ -903,17 +901,6 @@ otherwise noted. | |||
| 903 | activity on this file and (optionally) go to sleep until there | 901 | activity on this file and (optionally) go to sleep until there |
| 904 | is activity. Called by the select(2) and poll(2) system calls | 902 | is activity. Called by the select(2) and poll(2) system calls |
| 905 | 903 | ||
| 906 | get_poll_head: Returns the struct wait_queue_head that callers can | ||
| 907 | wait on. Callers need to check the returned events using ->poll_mask | ||
| 908 | once woken. Can return NULL to indicate polling is not supported, | ||
| 909 | or any error code using the ERR_PTR convention to indicate that a | ||
| 910 | grave error occured and ->poll_mask shall not be called. | ||
| 911 | |||
| 912 | poll_mask: return the mask of EPOLL* values describing the file descriptor | ||
| 913 | state. Called either before going to sleep on the waitqueue returned by | ||
| 914 | get_poll_head, or after it has been woken. If ->get_poll_head and | ||
| 915 | ->poll_mask are implemented ->poll does not need to be implement. | ||
| 916 | |||
| 917 | unlocked_ioctl: called by the ioctl(2) system call. | 904 | unlocked_ioctl: called by the ioctl(2) system call. |
| 918 | 905 | ||
| 919 | compat_ioctl: called by the ioctl(2) system call when 32 bit system calls | 906 | compat_ioctl: called by the ioctl(2) system call when 32 bit system calls |
