Re: 2.6.6-rc2-mm2

From: raven
Date: Mon Apr 26 2004 - 12:11:06 EST



Patch to sync 2.6.6-rc2-mm2 with the result of my discussion with
Christoph Hellwig.

Difference is that Christoph realised that merging may_umount_tree and
may_umount was not worth it. They are now seperate functions.

diff -Nur linux-2.6.6-rc2-mm2.orig/fs/namespace.c linux-2.6.6-rc2-mm2/fs/namespace.c
--- linux-2.6.6-rc2-mm2.orig/fs/namespace.c 2004-04-27 00:51:36.000000000 +0800
+++ linux-2.6.6-rc2-mm2/fs/namespace.c 2004-04-27 00:43:32.000000000 +0800
@@ -260,7 +260,15 @@
.show = show_vfsmnt
};

-static int __may_umount_tree(struct vfsmount *mnt, int root_mnt_only)
+/**
+ * may_umount_tree - check if a mount tree is busy
+ * @mnt: root of mount tree
+ *
+ * This is called to check if a tree of mounts has any
+ * open files, pwds, chroots or sub mounts that are
+ * busy.
+ */
+int may_umount_tree(struct vfsmount *mnt)
{
struct list_head *next;
struct vfsmount *this_parent = mnt;
@@ -270,14 +278,6 @@
spin_lock(&vfsmount_lock);
actual_refs = atomic_read(&mnt->mnt_count);
minimum_refs = 2;
-
- if (root_mnt_only) {
- spin_unlock(&vfsmount_lock);
- if (actual_refs > minimum_refs)
- return -EBUSY;
- return 0;
- }
-
repeat:
next = this_parent->mnt_mounts.next;
resume:
@@ -308,19 +308,6 @@
return 0;
}

-/**
- * may_umount_tree - check if a mount tree is busy
- * @mnt: root of mount tree
- *
- * This is called to check if a tree of mounts has any
- * open files, pwds, chroots or sub mounts that are
- * busy.
- */
-int may_umount_tree(struct vfsmount *mnt)
-{
- return __may_umount_tree(mnt, 0);
-}
-
EXPORT_SYMBOL(may_umount_tree);

/**
@@ -338,7 +325,9 @@
*/
int may_umount(struct vfsmount *mnt)
{
- return __may_umount_tree(mnt, 1);
+ if (atomic_read(&mnt->mnt_count) > 2)
+ return -EBUSY;
+ return 0;
}

EXPORT_SYMBOL(may_umount);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/