diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-13 05:28:42 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-13 05:28:42 -0400 |
| commit | 77c688ac87183537ed0fb84ec2cb8fa8ec97c458 (patch) | |
| tree | d18e117e05c0d71463823536165ddd9ad75b6bc5 /include | |
| parent | 5e40d331bd72447197f26525f21711c4a265b6a6 (diff) | |
| parent | a457606a6f81cfddfc9da1ef2a8bf2c65a8eb35e (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs updates from Al Viro:
"The big thing in this pile is Eric's unmount-on-rmdir series; we
finally have everything we need for that. The final piece of prereqs
is delayed mntput() - now filesystem shutdown always happens on
shallow stack.
Other than that, we have several new primitives for iov_iter (Matt
Wilcox, culled from his XIP-related series) pushing the conversion to
->read_iter()/ ->write_iter() a bit more, a bunch of fs/dcache.c
cleanups and fixes (including the external name refcounting, which
gives consistent behaviour of d_move() wrt procfs symlinks for long
and short names alike) and assorted cleanups and fixes all over the
place.
This is just the first pile; there's a lot of stuff from various
people that ought to go in this window. Starting with
unionmount/overlayfs mess... ;-/"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (60 commits)
fs/file_table.c: Update alloc_file() comment
vfs: Deduplicate code shared by xattr system calls operating on paths
reiserfs: remove pointless forward declaration of struct nameidata
don't need that forward declaration of struct nameidata in dcache.h anymore
take dname_external() into fs/dcache.c
let path_init() failures treated the same way as subsequent link_path_walk()
fix misuses of f_count() in ppp and netlink
ncpfs: use list_for_each_entry() for d_subdirs walk
vfs: move getname() from callers to do_mount()
gfs2_atomic_open(): skip lookups on hashed dentry
[infiniband] remove pointless assignments
gadgetfs: saner API for gadgetfs_create_file()
f_fs: saner API for ffs_sb_create_file()
jfs: don't hash direct inode
[s390] remove pointless assignment of ->f_op in vmlogrdr ->open()
ecryptfs: ->f_op is never NULL
android: ->f_op is never NULL
nouveau: __iomem misannotations
missing annotation in fs/file.c
fs: namespace: suppress 'may be used uninitialized' warnings
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/dcache.h | 9 | ||||
| -rw-r--r-- | include/linux/fs.h | 5 | ||||
| -rw-r--r-- | include/linux/uio.h | 3 |
3 files changed, 7 insertions, 10 deletions
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 75a227cc7ce2..b2a2a08523bf 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
| @@ -11,7 +11,6 @@ | |||
| 11 | #include <linux/rcupdate.h> | 11 | #include <linux/rcupdate.h> |
| 12 | #include <linux/lockref.h> | 12 | #include <linux/lockref.h> |
| 13 | 13 | ||
| 14 | struct nameidata; | ||
| 15 | struct path; | 14 | struct path; |
| 16 | struct vfsmount; | 15 | struct vfsmount; |
| 17 | 16 | ||
| @@ -226,11 +225,6 @@ struct dentry_operations { | |||
| 226 | 225 | ||
| 227 | extern seqlock_t rename_lock; | 226 | extern seqlock_t rename_lock; |
| 228 | 227 | ||
| 229 | static inline int dname_external(const struct dentry *dentry) | ||
| 230 | { | ||
| 231 | return dentry->d_name.name != dentry->d_iname; | ||
| 232 | } | ||
| 233 | |||
| 234 | /* | 228 | /* |
| 235 | * These are the low-level FS interfaces to the dcache.. | 229 | * These are the low-level FS interfaces to the dcache.. |
| 236 | */ | 230 | */ |
| @@ -254,7 +248,7 @@ extern struct dentry * d_obtain_root(struct inode *); | |||
| 254 | extern void shrink_dcache_sb(struct super_block *); | 248 | extern void shrink_dcache_sb(struct super_block *); |
| 255 | extern void shrink_dcache_parent(struct dentry *); | 249 | extern void shrink_dcache_parent(struct dentry *); |
| 256 | extern void shrink_dcache_for_umount(struct super_block *); | 250 | extern void shrink_dcache_for_umount(struct super_block *); |
| 257 | extern int d_invalidate(struct dentry *); | 251 | extern void d_invalidate(struct dentry *); |
| 258 | 252 | ||
| 259 | /* only used at mount-time */ | 253 | /* only used at mount-time */ |
| 260 | extern struct dentry * d_make_root(struct inode *); | 254 | extern struct dentry * d_make_root(struct inode *); |
| @@ -269,7 +263,6 @@ extern void d_prune_aliases(struct inode *); | |||
| 269 | 263 | ||
| 270 | /* test whether we have any submounts in a subdir tree */ | 264 | /* test whether we have any submounts in a subdir tree */ |
| 271 | extern int have_submounts(struct dentry *); | 265 | extern int have_submounts(struct dentry *); |
| 272 | extern int check_submounts_and_drop(struct dentry *); | ||
| 273 | 266 | ||
| 274 | /* | 267 | /* |
| 275 | * This adds the entry to the hash queues. | 268 | * This adds the entry to the hash queues. |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 2023306c620e..ab4f1a10da20 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -1839,7 +1839,8 @@ extern struct vfsmount *kern_mount_data(struct file_system_type *, void *data); | |||
| 1839 | extern void kern_unmount(struct vfsmount *mnt); | 1839 | extern void kern_unmount(struct vfsmount *mnt); |
| 1840 | extern int may_umount_tree(struct vfsmount *); | 1840 | extern int may_umount_tree(struct vfsmount *); |
| 1841 | extern int may_umount(struct vfsmount *); | 1841 | extern int may_umount(struct vfsmount *); |
| 1842 | extern long do_mount(const char *, const char *, const char *, unsigned long, void *); | 1842 | extern long do_mount(const char *, const char __user *, |
| 1843 | const char *, unsigned long, void *); | ||
| 1843 | extern struct vfsmount *collect_mounts(struct path *); | 1844 | extern struct vfsmount *collect_mounts(struct path *); |
| 1844 | extern void drop_collected_mounts(struct vfsmount *); | 1845 | extern void drop_collected_mounts(struct vfsmount *); |
| 1845 | extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, | 1846 | extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, |
| @@ -1858,7 +1859,7 @@ extern int current_umask(void); | |||
| 1858 | extern void ihold(struct inode * inode); | 1859 | extern void ihold(struct inode * inode); |
| 1859 | extern void iput(struct inode *); | 1860 | extern void iput(struct inode *); |
| 1860 | 1861 | ||
| 1861 | static inline struct inode *file_inode(struct file *f) | 1862 | static inline struct inode *file_inode(const struct file *f) |
| 1862 | { | 1863 | { |
| 1863 | return f->f_inode; | 1864 | return f->f_inode; |
| 1864 | } | 1865 | } |
diff --git a/include/linux/uio.h b/include/linux/uio.h index 290fbf0b6b8a..9b1581414cd4 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h | |||
| @@ -80,6 +80,9 @@ size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes, | |||
| 80 | struct iov_iter *i); | 80 | struct iov_iter *i); |
| 81 | size_t copy_page_from_iter(struct page *page, size_t offset, size_t bytes, | 81 | size_t copy_page_from_iter(struct page *page, size_t offset, size_t bytes, |
| 82 | struct iov_iter *i); | 82 | struct iov_iter *i); |
| 83 | size_t copy_to_iter(void *addr, size_t bytes, struct iov_iter *i); | ||
| 84 | size_t copy_from_iter(void *addr, size_t bytes, struct iov_iter *i); | ||
| 85 | size_t iov_iter_zero(size_t bytes, struct iov_iter *); | ||
| 83 | unsigned long iov_iter_alignment(const struct iov_iter *i); | 86 | unsigned long iov_iter_alignment(const struct iov_iter *i); |
| 84 | void iov_iter_init(struct iov_iter *i, int direction, const struct iovec *iov, | 87 | void iov_iter_init(struct iov_iter *i, int direction, const struct iovec *iov, |
| 85 | unsigned long nr_segs, size_t count); | 88 | unsigned long nr_segs, size_t count); |
