Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs mount infrastructure updates from Al Viro: "The rest of core infrastructure; no new syscalls in that pile, but the old parts are switched to new infrastructure. At that point conversions of individual filesystems can happen independently; some are done here (afs, cgroup, procfs, etc.), there's also a large series outside of that pile dealing with NFS (quite a bit of option-parsing stuff is getting used there - it's one of the most convoluted filesystems in terms of mount-related logics), but NFS bits are the next cycle fodder. It got seriously simplified since the last cycle; documentation is probably the weakest bit at the moment - I considered dropping the commit introducing Documentation/filesystems/mount_api.txt (cutting the size increase by quarter ;-), but decided that it would be better to fix it up after -rc1 instead. That pile allows to do followup work in independent branches, which should make life much easier for the next cycle. fs/super.c size increase is unpleasant; there's a followup series that allows to shrink it considerably, but I decided to leave that until the next cycle" * 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (41 commits) afs: Use fs_context to pass parameters over automount afs: Add fs_context support vfs: Add some logging to the core users of the fs_context log vfs: Implement logging through fs_context vfs: Provide documentation for new mount API vfs: Remove kern_mount_data() hugetlbfs: Convert to fs_context cpuset: Use fs_context kernfs, sysfs, cgroup, intel_rdt: Support fs_context cgroup: store a reference to cgroup_ns into cgroup_fs_context cgroup1_get_tree(): separate "get cgroup_root to use" into a separate helper cgroup_do_mount(): massage calling conventions cgroup: stash cgroup_root reference into cgroup_fs_context cgroup2: switch to option-by-option parsing cgroup1: switch to option-by-option parsing cgroup: take options parsing into ->parse_monolithic() cgroup: fold cgroup1_mount() into cgroup1_get_tree() cgroup: start switching to fs_context ipc: Convert mqueue fs to fs_context proc: Add fs_context support to procfs ...
This commit is contained in:
@@ -26,7 +26,9 @@ struct vm_area_struct;
|
||||
struct super_block;
|
||||
struct file_system_type;
|
||||
struct poll_table_struct;
|
||||
struct fs_context;
|
||||
|
||||
struct kernfs_fs_context;
|
||||
struct kernfs_open_node;
|
||||
struct kernfs_iattrs;
|
||||
|
||||
@@ -168,7 +170,6 @@ struct kernfs_node {
|
||||
* kernfs_node parameter.
|
||||
*/
|
||||
struct kernfs_syscall_ops {
|
||||
int (*remount_fs)(struct kernfs_root *root, int *flags, char *data);
|
||||
int (*show_options)(struct seq_file *sf, struct kernfs_root *root);
|
||||
|
||||
int (*mkdir)(struct kernfs_node *parent, const char *name,
|
||||
@@ -272,6 +273,18 @@ struct kernfs_ops {
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* The kernfs superblock creation/mount parameter context.
|
||||
*/
|
||||
struct kernfs_fs_context {
|
||||
struct kernfs_root *root; /* Root of the hierarchy being mounted */
|
||||
void *ns_tag; /* Namespace tag of the mount (or NULL) */
|
||||
unsigned long magic; /* File system specific magic number */
|
||||
|
||||
/* The following are set/used by kernfs_mount() */
|
||||
bool new_sb_created; /* Set to T if we allocated a new sb */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_KERNFS
|
||||
|
||||
static inline enum kernfs_node_type kernfs_type(struct kernfs_node *kn)
|
||||
@@ -359,11 +372,9 @@ __poll_t kernfs_generic_poll(struct kernfs_open_file *of,
|
||||
void kernfs_notify(struct kernfs_node *kn);
|
||||
|
||||
const void *kernfs_super_ns(struct super_block *sb);
|
||||
struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags,
|
||||
struct kernfs_root *root, unsigned long magic,
|
||||
bool *new_sb_created, const void *ns);
|
||||
int kernfs_get_tree(struct fs_context *fc);
|
||||
void kernfs_free_fs_context(struct fs_context *fc);
|
||||
void kernfs_kill_sb(struct super_block *sb);
|
||||
struct super_block *kernfs_pin_sb(struct kernfs_root *root, const void *ns);
|
||||
|
||||
void kernfs_init(void);
|
||||
|
||||
@@ -465,11 +476,10 @@ static inline void kernfs_notify(struct kernfs_node *kn) { }
|
||||
static inline const void *kernfs_super_ns(struct super_block *sb)
|
||||
{ return NULL; }
|
||||
|
||||
static inline struct dentry *
|
||||
kernfs_mount_ns(struct file_system_type *fs_type, int flags,
|
||||
struct kernfs_root *root, unsigned long magic,
|
||||
bool *new_sb_created, const void *ns)
|
||||
{ return ERR_PTR(-ENOSYS); }
|
||||
static inline int kernfs_get_tree(struct fs_context *fc)
|
||||
{ return -ENOSYS; }
|
||||
|
||||
static inline void kernfs_free_fs_context(struct fs_context *fc) { }
|
||||
|
||||
static inline void kernfs_kill_sb(struct super_block *sb) { }
|
||||
|
||||
@@ -552,13 +562,4 @@ static inline int kernfs_rename(struct kernfs_node *kn,
|
||||
return kernfs_rename_ns(kn, new_parent, new_name, NULL);
|
||||
}
|
||||
|
||||
static inline struct dentry *
|
||||
kernfs_mount(struct file_system_type *fs_type, int flags,
|
||||
struct kernfs_root *root, unsigned long magic,
|
||||
bool *new_sb_created)
|
||||
{
|
||||
return kernfs_mount_ns(fs_type, flags, root,
|
||||
magic, new_sb_created, NULL);
|
||||
}
|
||||
|
||||
#endif /* __LINUX_KERNFS_H */
|
||||
|
Reference in New Issue
Block a user