linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / fs / pnode.c
index da42ee6..f1871f7 100644 (file)
@@ -53,7 +53,8 @@ static int do_make_slave(struct vfsmount *mnt)
        if (master) {
                list_for_each_entry(slave_mnt, &mnt->mnt_slave_list, mnt_slave)
                        slave_mnt->mnt_master = master;
-               list_move(&mnt->mnt_slave, &master->mnt_slave_list);
+               list_del(&mnt->mnt_slave);
+               list_add(&mnt->mnt_slave, &master->mnt_slave_list);
                list_splice(&mnt->mnt_slave_list, master->mnt_slave_list.prev);
                INIT_LIST_HEAD(&mnt->mnt_slave_list);
        } else {
@@ -129,7 +130,7 @@ static struct vfsmount *get_source(struct vfsmount *dest,
 {
        struct vfsmount *p_last_src = NULL;
        struct vfsmount *p_last_dest = NULL;
-       *type = CL_PROPAGATION;
+       *type = CL_PROPAGATION;;
 
        if (IS_MNT_SHARED(dest))
                *type |= CL_MAKE_SHARED;
@@ -282,8 +283,10 @@ static void __propagate_umount(struct vfsmount *mnt)
                 * umount the child only if the child has no
                 * other children
                 */
-               if (child && list_empty(&child->mnt_mounts))
-                       list_move_tail(&child->mnt_hash, &mnt->mnt_hash);
+               if (child && list_empty(&child->mnt_mounts)) {
+                       list_del(&child->mnt_hash);
+                       list_add_tail(&child->mnt_hash, &mnt->mnt_hash);
+               }
        }
 }