From: Christian Brauner <christian.brauner@xxxxxxxxxx> Extend the kernel documentation for clone_private_mount(). Add some more detailed info about its usage and convert it into proper kernel doc. Cc: Amir Goldstein <amir73il@xxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxx> Cc: Miklos Szeredi <mszeredi@xxxxxxxxxx> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: linux-fsdevel@xxxxxxxxxxxxxxx Signed-off-by: Christian Brauner <christian.brauner@xxxxxxxxxx> --- fs/namespace.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index 56bb5a5fdc0d..02f415061efe 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -1939,12 +1939,21 @@ void drop_collected_mounts(struct vfsmount *mnt) /** * clone_private_mount - create a private clone of a path + * @path: path from which the mnt to clone will be taken * - * This creates a new vfsmount, which will be the clone of @path. The new will - * not be attached anywhere in the namespace and will be private (i.e. changes - * to the originating mount won't be propagated into this). + * This creates a new vfsmount, which will be a clone of @path's vfsmount. * - * Release with mntput(). + * In contrast to mnt_clone_internal() the new mount will not be marked + * MNT_INTERNAL but will have MNT_NS_INTERNAL attached as its mount namespace + * making it suitable for long-term mounts since mntput()ing it will always hit + * the fastpath as long as kern_unmount() hasn't been called. + * + * Since the mount is not reachable anwyhere mount properties and propagation + * properties remain stable, i.e. cannot change. + * + * Useable with mntget()/mntput() but needs to be released with kern_unmount(). + * + * Return: A clone of @path's vfsmount on success, an error pointer on failure. */ struct vfsmount *clone_private_mount(const struct path *path) { -- 2.27.0