aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/filesystems
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-12 13:30:18 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-12 13:30:18 -0400
commit16b9057804c02e2d351e9c8f606e909b43cbd9e7 (patch)
treea3ac6e1d9d57a8abf4267e5ead3f2de1309335eb /Documentation/filesystems
parent5c02c392cd2320e8d612376d6b72b6548a680923 (diff)
parentc2338f2dc7c1e9f6202f370c64ffd7f44f3d4b51 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs updates from Al Viro: "This the bunch that sat in -next + lock_parent() fix. This is the minimal set; there's more pending stuff. In particular, I really hope to get acct.c fixes merged this cycle - we need that to deal sanely with delayed-mntput stuff. In the next pile, hopefully - that series is fairly short and localized (kernel/acct.c, fs/super.c and fs/namespace.c). In this pile: more iov_iter work. Most of prereqs for ->splice_write with sane locking order are there and Kent's dio rewrite would also fit nicely on top of this pile" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (70 commits) lock_parent: don't step on stale ->d_parent of all-but-freed one kill generic_file_splice_write() ceph: switch to iter_file_splice_write() shmem: switch to iter_file_splice_write() nfs: switch to iter_splice_write_file() fs/splice.c: remove unneeded exports ocfs2: switch to iter_file_splice_write() ->splice_write() via ->write_iter() bio_vec-backed iov_iter optimize copy_page_{to,from}_iter() bury generic_file_aio_{read,write} lustre: get rid of messing with iovecs ceph: switch to ->write_iter() ceph_sync_direct_write: stop poking into iov_iter guts ceph_sync_read: stop poking into iov_iter guts new helper: copy_page_from_iter() fuse: switch to ->write_iter() btrfs: switch to ->write_iter() ocfs2: switch to ->write_iter() xfs: switch to ->write_iter() ...
Diffstat (limited to 'Documentation/filesystems')
-rw-r--r--Documentation/filesystems/Locking5
-rw-r--r--Documentation/filesystems/vfs.txt13
2 files changed, 12 insertions, 6 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index eba790134253..b18dd1779029 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -196,8 +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 *, const struct iovec *iov, 199 int (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset);
200 loff_t offset, unsigned long nr_segs);
201 int (*get_xip_mem)(struct address_space *, pgoff_t, int, void **, 200 int (*get_xip_mem)(struct address_space *, pgoff_t, int, void **,
202 unsigned long *); 201 unsigned long *);
203 int (*migratepage)(struct address_space *, struct page *, struct page *); 202 int (*migratepage)(struct address_space *, struct page *, struct page *);
@@ -431,6 +430,8 @@ prototypes:
431 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); 430 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); 431 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); 432 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
433 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
434 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
434 int (*iterate) (struct file *, struct dir_context *); 435 int (*iterate) (struct file *, struct dir_context *);
435 unsigned int (*poll) (struct file *, struct poll_table_struct *); 436 unsigned int (*poll) (struct file *, struct poll_table_struct *);
436 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); 437 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index 617f6d70c077..a1d0d7a30165 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -589,8 +589,7 @@ struct address_space_operations {
589 void (*invalidatepage) (struct page *, unsigned int, unsigned int); 589 void (*invalidatepage) (struct page *, unsigned int, unsigned int);
590 int (*releasepage) (struct page *, int); 590 int (*releasepage) (struct page *, int);
591 void (*freepage)(struct page *); 591 void (*freepage)(struct page *);
592 ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov, 592 ssize_t (*direct_IO)(int, struct kiocb *, struct iov_iter *iter, loff_t offset);
593 loff_t offset, unsigned long nr_segs);
594 struct page* (*get_xip_page)(struct address_space *, sector_t, 593 struct page* (*get_xip_page)(struct address_space *, sector_t,
595 int); 594 int);
596 /* migrate the contents of a page to the specified target */ 595 /* migrate the contents of a page to the specified target */
@@ -807,6 +806,8 @@ struct file_operations {
807 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); 806 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
808 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t); 807 ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
809 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t); 808 ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
809 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
810 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
810 int (*iterate) (struct file *, struct dir_context *); 811 int (*iterate) (struct file *, struct dir_context *);
811 unsigned int (*poll) (struct file *, struct poll_table_struct *); 812 unsigned int (*poll) (struct file *, struct poll_table_struct *);
812 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); 813 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
@@ -837,11 +838,15 @@ otherwise noted.
837 838
838 read: called by read(2) and related system calls 839 read: called by read(2) and related system calls
839 840
840 aio_read: called by io_submit(2) and other asynchronous I/O operations 841 aio_read: vectored, possibly asynchronous read
842
843 read_iter: possibly asynchronous read with iov_iter as destination
841 844
842 write: called by write(2) and related system calls 845 write: called by write(2) and related system calls
843 846
844 aio_write: called by io_submit(2) and other asynchronous I/O operations 847 aio_write: vectored, possibly asynchronous write
848
849 write_iter: possibly asynchronous write with iov_iter as source
845 850
846 iterate: called when the VFS needs to read the directory contents 851 iterate: called when the VFS needs to read the directory contents
847 852