VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / include / linux / namei.h
index 4117cd9..1bbfa29 100644 (file)
@@ -10,12 +10,16 @@ struct open_intent {
        int     create_mode;
 };
 
+enum { MAX_NESTED_LINKS = 5 };
+
 struct nameidata {
        struct dentry   *dentry;
        struct vfsmount *mnt;
        struct qstr     last;
        unsigned int    flags;
        int             last_type;
+       unsigned        depth;
+       char *saved_names[MAX_NESTED_LINKS + 1];
 
        /* Intent data */
        union {
@@ -57,6 +61,7 @@ extern int FASTCALL(path_lookup(const char *, unsigned, struct nameidata *));
 extern int FASTCALL(path_walk(const char *, struct nameidata *));
 extern int FASTCALL(link_path_walk(const char *, struct nameidata *));
 extern void path_release(struct nameidata *);
+extern void path_release_on_umount(struct nameidata *);
 
 extern struct dentry * lookup_one_len(const char *, struct dentry *, int);
 extern struct dentry * lookup_hash(struct qstr *, struct dentry *);
@@ -67,4 +72,14 @@ extern int follow_up(struct vfsmount **, struct dentry **);
 extern struct dentry *lock_rename(struct dentry *, struct dentry *);
 extern void unlock_rename(struct dentry *, struct dentry *);
 
+static inline void nd_set_link(struct nameidata *nd, char *path)
+{
+       nd->saved_names[nd->depth] = path;
+}
+
+static inline char *nd_get_link(struct nameidata *nd)
+{
+       return nd->saved_names[nd->depth];
+}
+
 #endif /* _LINUX_NAMEI_H */