lkml.org 
[lkml]   [2011]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 3/6 v6] vfs: introduce clone_private_mount()
    From: Miklos Szeredi <mszeredi@suse.cz>

    Overlayfs needs a private clone of the mount, so create a function for
    this and export to modules.

    Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
    ---
    fs/namespace.c | 17 +++++++++++++++++
    include/linux/mount.h | 3 +++
    2 files changed, 20 insertions(+)

    Index: linux-2.6/fs/namespace.c
    ===================================================================
    --- linux-2.6.orig/fs/namespace.c 2011-03-01 12:17:47.000000000 +0100
    +++ linux-2.6/fs/namespace.c 2011-03-01 12:18:18.000000000 +0100
    @@ -1451,6 +1451,23 @@ void drop_collected_mounts(struct vfsmou
    release_mounts(&umount_list);
    }

    +struct vfsmount *clone_private_mount(struct path *path)
    +{
    + struct vfsmount *mnt;
    +
    + if (IS_MNT_UNBINDABLE(path->mnt))
    + return ERR_PTR(-EINVAL);
    +
    + down_read(&namespace_sem);
    + mnt = clone_mnt(path->mnt, path->dentry, CL_PRIVATE);
    + up_read(&namespace_sem);
    + if (!mnt)
    + return ERR_PTR(-ENOMEM);
    +
    + return mnt;
    +}
    +EXPORT_SYMBOL_GPL(clone_private_mount);
    +
    int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
    struct vfsmount *root)
    {
    Index: linux-2.6/include/linux/mount.h
    ===================================================================
    --- linux-2.6.orig/include/linux/mount.h 2011-03-01 12:17:47.000000000 +0100
    +++ linux-2.6/include/linux/mount.h 2011-03-01 12:18:18.000000000 +0100
    @@ -100,6 +100,9 @@ extern void mnt_pin(struct vfsmount *mnt
    extern void mnt_unpin(struct vfsmount *mnt);
    extern int __mnt_is_readonly(struct vfsmount *mnt);

    +struct path;
    +extern struct vfsmount *clone_private_mount(struct path *path);
    +
    extern struct vfsmount *do_kern_mount(const char *fstype, int flags,
    const char *name, void *data);

    --


    \
     
     \ /
      Last update: 2011-03-01 13:39    [W:0.019 / U:117.188 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site