Merge tag 'pull-automount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull automount updates from Al Viro: "Automount wart removal A bunch of odd boilerplate gone from instances - the reason for those was the need to protect the yet-to-be-attched mount from mark_mounts_for_expiry() deciding to take it out. But that's easy to detect and take care of in mark_mounts_for_expiry() itself; no need to have every instance simulate mount being busy by grabbing an extra reference to it, with finish_automount() undoing that once it attaches that mount. Should've done it that way from the very beginning... This is a flagday change, thankfully there are very few instances. vfs_submount() is gone - its sole remaining user (trace_automount) had been switched to saner primitives" * tag 'pull-automount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: kill vfs_submount() saner calling conventions for ->d_automount()
This commit is contained in:
+16
-5
@@ -51,6 +51,7 @@
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/sort.h>
|
||||
#include <linux/io.h> /* vmap_page_range() */
|
||||
#include <linux/fs_context.h>
|
||||
|
||||
#include <asm/setup.h> /* COMMAND_LINE_SIZE */
|
||||
|
||||
@@ -10241,6 +10242,8 @@ static struct vfsmount *trace_automount(struct dentry *mntpt, void *ingore)
|
||||
{
|
||||
struct vfsmount *mnt;
|
||||
struct file_system_type *type;
|
||||
struct fs_context *fc;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* To maintain backward compatibility for tools that mount
|
||||
@@ -10250,12 +10253,20 @@ static struct vfsmount *trace_automount(struct dentry *mntpt, void *ingore)
|
||||
type = get_fs_type("tracefs");
|
||||
if (!type)
|
||||
return NULL;
|
||||
mnt = vfs_submount(mntpt, type, "tracefs", NULL);
|
||||
put_filesystem(type);
|
||||
if (IS_ERR(mnt))
|
||||
return NULL;
|
||||
mntget(mnt);
|
||||
|
||||
fc = fs_context_for_submount(type, mntpt);
|
||||
put_filesystem(type);
|
||||
if (IS_ERR(fc))
|
||||
return ERR_CAST(fc);
|
||||
|
||||
ret = vfs_parse_fs_string(fc, "source",
|
||||
"tracefs", strlen("tracefs"));
|
||||
if (!ret)
|
||||
mnt = fc_mount(fc);
|
||||
else
|
||||
mnt = ERR_PTR(ret);
|
||||
|
||||
put_fs_context(fc);
|
||||
return mnt;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user