aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/filesystems/Locking
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/filesystems/Locking')
-rw-r--r--Documentation/filesystems/Locking12
1 files changed, 9 insertions, 3 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index f91926f2f482..0a926e2ba3ab 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -196,7 +196,7 @@ prototypes:
196 void (*invalidatepage) (struct page *, unsigned int, unsigned int); 196 void (*invalidatepage) (struct page *, unsigned int, unsigned int);
197 int (*releasepage) (struct page *, int); 197 int (*releasepage) (struct page *, int);
198 void (*freepage)(struct page *); 198 void (*freepage)(struct page *);
199 int (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset); 199 int (*direct_IO)(struct kiocb *, struct iov_iter *iter, loff_t offset);
200 int (*migratepage)(struct address_space *, struct page *, struct page *); 200 int (*migratepage)(struct address_space *, struct page *, struct page *);
201 int (*launder_page)(struct page *); 201 int (*launder_page)(struct page *);
202 int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long); 202 int (*is_partially_uptodate)(struct page *, unsigned long, unsigned long);
@@ -429,8 +429,6 @@ prototypes:
429 loff_t (*llseek) (struct file *, loff_t, int); 429 loff_t (*llseek) (struct file *, loff_t, int);
430 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); 430 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
431 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); 431 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
432 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
433 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
434 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *); 432 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
435 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *); 433 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
436 int (*iterate) (struct file *, struct dir_context *); 434 int (*iterate) (struct file *, struct dir_context *);
@@ -525,6 +523,7 @@ prototypes:
525 void (*close)(struct vm_area_struct*); 523 void (*close)(struct vm_area_struct*);
526 int (*fault)(struct vm_area_struct*, struct vm_fault *); 524 int (*fault)(struct vm_area_struct*, struct vm_fault *);
527 int (*page_mkwrite)(struct vm_area_struct *, struct vm_fault *); 525 int (*page_mkwrite)(struct vm_area_struct *, struct vm_fault *);
526 int (*pfn_mkwrite)(struct vm_area_struct *, struct vm_fault *);
528 int (*access)(struct vm_area_struct *, unsigned long, void*, int, int); 527 int (*access)(struct vm_area_struct *, unsigned long, void*, int, int);
529 528
530locking rules: 529locking rules:
@@ -534,6 +533,7 @@ close: yes
534fault: yes can return with page locked 533fault: yes can return with page locked
535map_pages: yes 534map_pages: yes
536page_mkwrite: yes can return with page locked 535page_mkwrite: yes can return with page locked
536pfn_mkwrite: yes
537access: yes 537access: yes
538 538
539 ->fault() is called when a previously not present pte is about 539 ->fault() is called when a previously not present pte is about
@@ -560,6 +560,12 @@ the page has been truncated, the filesystem should not look up a new page
560like the ->fault() handler, but simply return with VM_FAULT_NOPAGE, which 560like the ->fault() handler, but simply return with VM_FAULT_NOPAGE, which
561will cause the VM to retry the fault. 561will cause the VM to retry the fault.
562 562
563 ->pfn_mkwrite() is the same as page_mkwrite but when the pte is
564VM_PFNMAP or VM_MIXEDMAP with a page-less entry. Expected return is
565VM_FAULT_NOPAGE. Or one of the VM_FAULT_ERROR types. The default behavior
566after this call is to make the pte read-write, unless pfn_mkwrite returns
567an error.
568
563 ->access() is called when get_user_pages() fails in 569 ->access() is called when get_user_pages() fails in
564access_process_vm(), typically used to debug a process through 570access_process_vm(), typically used to debug a process through
565/proc/pid/mem or ptrace. This function is needed only for 571/proc/pid/mem or ptrace. This function is needed only for