• Home
  • Raw
  • Download

Lines Matching refs:mnt

36 static bool is_path_reachable(struct vfsmount *mnt, struct dentry *dentry,  in is_path_reachable()  argument
39 while (mnt != root->mnt && mnt->mnt_parent != mnt) { in is_path_reachable()
40 dentry = mnt->mnt_mountpoint; in is_path_reachable()
41 mnt = mnt->mnt_parent; in is_path_reachable()
43 return mnt == root->mnt && is_subdir(dentry, root->dentry); in is_path_reachable()
46 static struct vfsmount *get_peer_under_root(struct vfsmount *mnt, in get_peer_under_root() argument
50 struct vfsmount *m = mnt; in get_peer_under_root()
58 } while (m != mnt); in get_peer_under_root()
69 int get_dominating_id(struct vfsmount *mnt, const struct path *root) in get_dominating_id() argument
73 for (m = mnt->mnt_master; m != NULL; m = m->mnt_master) { in get_dominating_id()
74 struct vfsmount *d = get_peer_under_root(m, mnt->mnt_ns, root); in get_dominating_id()
82 static int do_make_slave(struct vfsmount *mnt) in do_make_slave() argument
84 struct vfsmount *peer_mnt = mnt, *master = mnt->mnt_master; in do_make_slave()
92 while ((peer_mnt = next_peer(peer_mnt)) != mnt && in do_make_slave()
93 peer_mnt->mnt_root != mnt->mnt_root) ; in do_make_slave()
95 if (peer_mnt == mnt) { in do_make_slave()
96 peer_mnt = next_peer(mnt); in do_make_slave()
97 if (peer_mnt == mnt) in do_make_slave()
100 if (IS_MNT_SHARED(mnt) && list_empty(&mnt->mnt_share)) in do_make_slave()
101 mnt_release_group_id(mnt); in do_make_slave()
103 list_del_init(&mnt->mnt_share); in do_make_slave()
104 mnt->mnt_group_id = 0; in do_make_slave()
110 list_for_each_entry(slave_mnt, &mnt->mnt_slave_list, mnt_slave) in do_make_slave()
112 list_move(&mnt->mnt_slave, &master->mnt_slave_list); in do_make_slave()
113 list_splice(&mnt->mnt_slave_list, master->mnt_slave_list.prev); in do_make_slave()
114 INIT_LIST_HEAD(&mnt->mnt_slave_list); in do_make_slave()
116 struct list_head *p = &mnt->mnt_slave_list; in do_make_slave()
124 mnt->mnt_master = master; in do_make_slave()
125 CLEAR_MNT_SHARED(mnt); in do_make_slave()
129 void change_mnt_propagation(struct vfsmount *mnt, int type) in change_mnt_propagation() argument
132 set_mnt_shared(mnt); in change_mnt_propagation()
135 do_make_slave(mnt); in change_mnt_propagation()
137 list_del_init(&mnt->mnt_slave); in change_mnt_propagation()
138 mnt->mnt_master = NULL; in change_mnt_propagation()
140 mnt->mnt_flags |= MNT_UNBINDABLE; in change_mnt_propagation()
142 mnt->mnt_flags &= ~MNT_UNBINDABLE; in change_mnt_propagation()
280 static inline int do_refcount_check(struct vfsmount *mnt, int count) in do_refcount_check() argument
282 int mycount = atomic_read(&mnt->mnt_count) - mnt->mnt_ghosts; in do_refcount_check()
294 int propagate_mount_busy(struct vfsmount *mnt, int refcnt) in propagate_mount_busy() argument
297 struct vfsmount *parent = mnt->mnt_parent; in propagate_mount_busy()
300 if (mnt == parent) in propagate_mount_busy()
301 return do_refcount_check(mnt, refcnt); in propagate_mount_busy()
308 if (!list_empty(&mnt->mnt_mounts) || do_refcount_check(mnt, refcnt)) in propagate_mount_busy()
313 child = __lookup_mnt(m, mnt->mnt_mountpoint, 0); in propagate_mount_busy()
325 static void __propagate_umount(struct vfsmount *mnt) in __propagate_umount() argument
327 struct vfsmount *parent = mnt->mnt_parent; in __propagate_umount()
330 BUG_ON(parent == mnt); in __propagate_umount()
336 mnt->mnt_mountpoint, 0); in __propagate_umount()
342 list_move_tail(&child->mnt_hash, &mnt->mnt_hash); in __propagate_umount()
353 struct vfsmount *mnt; in propagate_umount() local
355 list_for_each_entry(mnt, list, mnt_hash) in propagate_umount()
356 __propagate_umount(mnt); in propagate_umount()