This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / include / linux / mnt_namespace.h
diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h
new file mode 100644 (file)
index 0000000..4af0b1f
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef _NAMESPACE_H_
+#define _NAMESPACE_H_
+#ifdef __KERNEL__
+
+#include <linux/mount.h>
+#include <linux/sched.h>
+#include <linux/nsproxy.h>
+
+struct mnt_namespace {
+       atomic_t                count;
+       struct vfsmount *       root;
+       struct list_head        list;
+       wait_queue_head_t poll;
+       int event;
+};
+
+extern int copy_mnt_ns(int, struct task_struct *);
+extern void __put_mnt_ns(struct mnt_namespace *ns);
+extern struct mnt_namespace *dup_mnt_ns(struct task_struct *,
+               struct fs_struct *);
+
+static inline void put_mnt_ns(struct mnt_namespace *ns)
+{
+       if (atomic_dec_and_lock(&ns->count, &vfsmount_lock))
+               /* releases vfsmount_lock */
+               __put_mnt_ns(ns);
+}
+
+static inline void exit_mnt_ns(struct task_struct *p)
+{
+       struct mnt_namespace *ns = p->nsproxy->mnt_ns;
+       if (ns)
+               put_mnt_ns(ns);
+}
+
+static inline void get_mnt_ns(struct mnt_namespace *ns)
+{
+       atomic_inc(&ns->count);
+}
+
+#endif
+#endif