From: Al Viro Date: Fri, 25 Nov 2011 00:47:15 +0000 (-0500) Subject: vfs: spread struct mount - commit_tree X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=4b2619a571f9fbb46649f968eea284103734f718;p=linux-beck.git vfs: spread struct mount - commit_tree Signed-off-by: Al Viro --- diff --git a/fs/namespace.c b/fs/namespace.c index 444557e04b38..fad3b218679d 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -609,16 +609,16 @@ static inline void __mnt_make_shortterm(struct vfsmount *mnt) /* * vfsmount lock must be held for write */ -static void commit_tree(struct vfsmount *mnt) +static void commit_tree(struct mount *mnt) { - struct vfsmount *parent = mnt->mnt_parent; + struct vfsmount *parent = mnt->mnt.mnt_parent; struct vfsmount *m; LIST_HEAD(head); struct mnt_namespace *n = parent->mnt_ns; - BUG_ON(parent == mnt); + BUG_ON(parent == &mnt->mnt); - list_add_tail(&head, &mnt->mnt_list); + list_add_tail(&head, &mnt->mnt.mnt_list); list_for_each_entry(m, &head, mnt_list) { m->mnt_ns = n; __mnt_make_longterm(m); @@ -626,9 +626,9 @@ static void commit_tree(struct vfsmount *mnt) list_splice(&head, n->list.prev); - list_add_tail(&mnt->mnt_hash, mount_hashtable + - hash(parent, mnt->mnt_mountpoint)); - list_add_tail(&mnt->mnt_child, &parent->mnt_mounts); + list_add_tail(&mnt->mnt.mnt_hash, mount_hashtable + + hash(parent, mnt->mnt.mnt_mountpoint)); + list_add_tail(&mnt->mnt.mnt_child, &parent->mnt_mounts); touch_mnt_namespace(n); } @@ -1617,12 +1617,12 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt, touch_mnt_namespace(parent_path->mnt->mnt_ns); } else { mnt_set_mountpoint(dest_mnt, dest_dentry, source_mnt); - commit_tree(source_mnt); + commit_tree(real_mount(source_mnt)); } list_for_each_entry_safe(child, p, &tree_list, mnt.mnt_hash) { list_del_init(&child->mnt.mnt_hash); - commit_tree(&child->mnt); + commit_tree(child); } br_write_unlock(vfsmount_lock);