Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull VFS changes from Al Viro:
"First pile out of several (there _definitely_ will be more). Stuff in
this one:
- unification of d_splice_alias()/d_materialize_unique()
- iov_iter rewrite
- killing a bunch of ->f_path.dentry users (and f_dentry macro).
Getting that completed will make life much simpler for
unionmount/overlayfs, since then we'll be able to limit the places
sensitive to file _dentry_ to reasonably few. Which allows to have
file_inode(file) pointing to inode in a covered layer, with dentry
pointing to (negative) dentry in union one.
Still not complete, but much closer now.
- crapectomy in lustre (dead code removal, mostly)
- "let's make seq_printf return nothing" preparations
- assorted cleanups and fixes
There _definitely_ will be more piles"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits)
copy_from_iter_nocache()
new helper: iov_iter_kvec()
csum_and_copy_..._iter()
iov_iter.c: handle ITER_KVEC directly
iov_iter.c: convert copy_to_iter() to iterate_and_advance
iov_iter.c: convert copy_from_iter() to iterate_and_advance
iov_iter.c: get rid of bvec_copy_page_{to,from}_iter()
iov_iter.c: convert iov_iter_zero() to iterate_and_advance
iov_iter.c: convert iov_iter_get_pages_alloc() to iterate_all_kinds
iov_iter.c: convert iov_iter_get_pages() to iterate_all_kinds
iov_iter.c: convert iov_iter_npages() to iterate_all_kinds
iov_iter.c: iterate_and_advance
iov_iter.c: macros for iterating over iov_iter
kill f_dentry macro
dcache: fix kmemcheck warning in switch_names
new helper: audit_file()
nfsd_vfs_write(): use file_inode()
ncpfs: use file_inode()
kill f_dentry uses
lockd: get rid of ->f_path.dentry->d_sb
...
This commit is contained in:
@@ -786,7 +786,6 @@ struct file {
|
||||
struct rcu_head fu_rcuhead;
|
||||
} f_u;
|
||||
struct path f_path;
|
||||
#define f_dentry f_path.dentry
|
||||
struct inode *f_inode; /* cached value */
|
||||
const struct file_operations *f_op;
|
||||
|
||||
@@ -1465,7 +1464,10 @@ int fiemap_check_flags(struct fiemap_extent_info *fieinfo, u32 fs_flags);
|
||||
* This allows the kernel to read directories into kernel space or
|
||||
* to have different dirent layouts depending on the binary type.
|
||||
*/
|
||||
typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned);
|
||||
struct dir_context;
|
||||
typedef int (*filldir_t)(struct dir_context *, const char *, int, loff_t, u64,
|
||||
unsigned);
|
||||
|
||||
struct dir_context {
|
||||
const filldir_t actor;
|
||||
loff_t pos;
|
||||
@@ -1511,7 +1513,7 @@ struct file_operations {
|
||||
int (*setlease)(struct file *, long, struct file_lock **, void **);
|
||||
long (*fallocate)(struct file *file, int mode, loff_t offset,
|
||||
loff_t len);
|
||||
int (*show_fdinfo)(struct seq_file *m, struct file *f);
|
||||
void (*show_fdinfo)(struct seq_file *m, struct file *f);
|
||||
};
|
||||
|
||||
struct inode_operations {
|
||||
@@ -2787,6 +2789,11 @@ static inline void inode_has_no_xattr(struct inode *inode)
|
||||
inode->i_flags |= S_NOSEC;
|
||||
}
|
||||
|
||||
static inline bool is_root_inode(struct inode *inode)
|
||||
{
|
||||
return inode == inode->i_sb->s_root->d_inode;
|
||||
}
|
||||
|
||||
static inline bool dir_emit(struct dir_context *ctx,
|
||||
const char *name, int namelen,
|
||||
u64 ino, unsigned type)
|
||||
|
||||
Reference in New Issue
Block a user