vfs: spread struct mount - __lookup_mnt() result

switch __lookup_mnt() to returning struct mount *; callers adjusted.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2011-11-24 18:22:03 -05:00
parent 7d6fec45a5
commit c71053659e
5 changed files with 31 additions and 22 deletions

View file

@ -289,7 +289,8 @@ static inline int do_refcount_check(struct vfsmount *mnt, int count)
*/
int propagate_mount_busy(struct vfsmount *mnt, int refcnt)
{
struct vfsmount *m, *child;
struct vfsmount *m;
struct mount *child;
struct vfsmount *parent = mnt->mnt_parent;
int ret = 0;
@ -307,8 +308,8 @@ int propagate_mount_busy(struct vfsmount *mnt, int refcnt)
for (m = propagation_next(parent, parent); m;
m = propagation_next(m, parent)) {
child = __lookup_mnt(m, mnt->mnt_mountpoint, 0);
if (child && list_empty(&child->mnt_mounts) &&
(ret = do_refcount_check(child, 1)))
if (child && list_empty(&child->mnt.mnt_mounts) &&
(ret = do_refcount_check(&child->mnt, 1)))
break;
}
return ret;
@ -328,14 +329,14 @@ static void __propagate_umount(struct vfsmount *mnt)
for (m = propagation_next(parent, parent); m;
m = propagation_next(m, parent)) {
struct vfsmount *child = __lookup_mnt(m,
struct mount *child = __lookup_mnt(m,
mnt->mnt_mountpoint, 0);
/*
* 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.mnt_mounts))
list_move_tail(&child->mnt.mnt_hash, &mnt->mnt_hash);
}
}