mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-29 18:43:59 +00:00
more conversions to namespace_unlock()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
b54b9be782
commit
3ab6abee59
1 changed files with 6 additions and 14 deletions
|
@ -1426,13 +1426,11 @@ struct vfsmount *collect_mounts(struct path *path)
|
||||||
|
|
||||||
void drop_collected_mounts(struct vfsmount *mnt)
|
void drop_collected_mounts(struct vfsmount *mnt)
|
||||||
{
|
{
|
||||||
LIST_HEAD(umount_list);
|
|
||||||
down_write(&namespace_sem);
|
down_write(&namespace_sem);
|
||||||
br_write_lock(&vfsmount_lock);
|
br_write_lock(&vfsmount_lock);
|
||||||
umount_tree(real_mount(mnt), 0, &umount_list);
|
umount_tree(real_mount(mnt), 0, &unmounted);
|
||||||
br_write_unlock(&vfsmount_lock);
|
br_write_unlock(&vfsmount_lock);
|
||||||
up_write(&namespace_sem);
|
namespace_unlock();
|
||||||
release_mounts(&umount_list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
||||||
|
@ -2060,7 +2058,6 @@ void mark_mounts_for_expiry(struct list_head *mounts)
|
||||||
{
|
{
|
||||||
struct mount *mnt, *next;
|
struct mount *mnt, *next;
|
||||||
LIST_HEAD(graveyard);
|
LIST_HEAD(graveyard);
|
||||||
LIST_HEAD(umounts);
|
|
||||||
|
|
||||||
if (list_empty(mounts))
|
if (list_empty(mounts))
|
||||||
return;
|
return;
|
||||||
|
@ -2083,12 +2080,10 @@ void mark_mounts_for_expiry(struct list_head *mounts)
|
||||||
while (!list_empty(&graveyard)) {
|
while (!list_empty(&graveyard)) {
|
||||||
mnt = list_first_entry(&graveyard, struct mount, mnt_expire);
|
mnt = list_first_entry(&graveyard, struct mount, mnt_expire);
|
||||||
touch_mnt_namespace(mnt->mnt_ns);
|
touch_mnt_namespace(mnt->mnt_ns);
|
||||||
umount_tree(mnt, 1, &umounts);
|
umount_tree(mnt, 1, &unmounted);
|
||||||
}
|
}
|
||||||
br_write_unlock(&vfsmount_lock);
|
br_write_unlock(&vfsmount_lock);
|
||||||
up_write(&namespace_sem);
|
namespace_unlock();
|
||||||
|
|
||||||
release_mounts(&umounts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL_GPL(mark_mounts_for_expiry);
|
EXPORT_SYMBOL_GPL(mark_mounts_for_expiry);
|
||||||
|
@ -2741,16 +2736,13 @@ void __init mnt_init(void)
|
||||||
|
|
||||||
void put_mnt_ns(struct mnt_namespace *ns)
|
void put_mnt_ns(struct mnt_namespace *ns)
|
||||||
{
|
{
|
||||||
LIST_HEAD(umount_list);
|
|
||||||
|
|
||||||
if (!atomic_dec_and_test(&ns->count))
|
if (!atomic_dec_and_test(&ns->count))
|
||||||
return;
|
return;
|
||||||
down_write(&namespace_sem);
|
down_write(&namespace_sem);
|
||||||
br_write_lock(&vfsmount_lock);
|
br_write_lock(&vfsmount_lock);
|
||||||
umount_tree(ns->root, 0, &umount_list);
|
umount_tree(ns->root, 0, &unmounted);
|
||||||
br_write_unlock(&vfsmount_lock);
|
br_write_unlock(&vfsmount_lock);
|
||||||
up_write(&namespace_sem);
|
namespace_unlock();
|
||||||
release_mounts(&umount_list);
|
|
||||||
free_mnt_ns(ns);
|
free_mnt_ns(ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue