lkml.org 
[lkml]   [2015]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.0 114/220] mnt: Factor out unhash_mnt from detach_mnt and umount_tree
    Date
    4.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "Eric W. Biederman" <ebiederm@xmission.com>

    commit 7bdb11de8ee4f4ae195e2fa19efd304e0b36c63b upstream.

    Create a function unhash_mnt that contains the common code between
    detach_mnt and umount_tree, and use unhash_mnt in place of the common
    code. This add a unncessary list_del_init(mnt->mnt_child) into
    umount_tree but given that mnt_child is already empty this extra
    line is a noop.

    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/namespace.c | 21 ++++++++++++---------
    1 file changed, 12 insertions(+), 9 deletions(-)

    --- a/fs/namespace.c
    +++ b/fs/namespace.c
    @@ -798,10 +798,8 @@ static void __touch_mnt_namespace(struct
    /*
    * vfsmount lock must be held for write
    */
    -static void detach_mnt(struct mount *mnt, struct path *old_path)
    +static void unhash_mnt(struct mount *mnt)
    {
    - old_path->dentry = mnt->mnt_mountpoint;
    - old_path->mnt = &mnt->mnt_parent->mnt;
    mnt->mnt_parent = mnt;
    mnt->mnt_mountpoint = mnt->mnt.mnt_root;
    list_del_init(&mnt->mnt_child);
    @@ -814,6 +812,16 @@ static void detach_mnt(struct mount *mnt
    /*
    * vfsmount lock must be held for write
    */
    +static void detach_mnt(struct mount *mnt, struct path *old_path)
    +{
    + old_path->dentry = mnt->mnt_mountpoint;
    + old_path->mnt = &mnt->mnt_parent->mnt;
    + unhash_mnt(mnt);
    +}
    +
    +/*
    + * vfsmount lock must be held for write
    + */
    void mnt_set_mountpoint(struct mount *mnt,
    struct mountpoint *mp,
    struct mount *child_mnt)
    @@ -1364,15 +1372,10 @@ static void umount_tree(struct mount *mn

    pin_insert_group(&p->mnt_umount, &p->mnt_parent->mnt, &unmounted);
    if (mnt_has_parent(p)) {
    - hlist_del_init(&p->mnt_mp_list);
    - put_mountpoint(p->mnt_mp);
    mnt_add_count(p->mnt_parent, -1);
    /* old mountpoint will be dropped when we can do that */
    p->mnt_ex_mountpoint = p->mnt_mountpoint;
    - p->mnt_mountpoint = p->mnt.mnt_root;
    - p->mnt_parent = p;
    - p->mnt_mp = NULL;
    - hlist_del_init_rcu(&p->mnt_hash);
    + unhash_mnt(p);
    }
    change_mnt_propagation(p, MS_PRIVATE);
    }



    \
     
     \ /
      Last update: 2015-05-02 23:41    [W:4.110 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site