summaryrefslogtreecommitdiffstats
path: root/include/linux/namei.h
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2005-10-18 14:20:16 -0700
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-10-18 14:20:16 -0700
commit834f2a4a1554dc5b2598038b3fe8703defcbe467 (patch)
treed27a000a2dd03029e6e2472c6e13801688185b51 /include/linux/namei.h
parent039c4d7a82d8268ec71f59679460b41d0dd9b225 (diff)
downloadkernel-crypto-834f2a4a1554dc5b2598038b3fe8703defcbe467.tar.gz
kernel-crypto-834f2a4a1554dc5b2598038b3fe8703defcbe467.tar.xz
kernel-crypto-834f2a4a1554dc5b2598038b3fe8703defcbe467.zip
VFS: Allow the filesystem to return a full file pointer on open intent
This is needed by NFSv4 for atomicity reasons: our open command is in fact a lookup+open, so we need to be able to propagate open context information from lookup() into the resulting struct file's private_data field. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/namei.h')
-rw-r--r--include/linux/namei.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/linux/namei.h b/include/linux/namei.h
index 7db67b008ca..1c975d0d9e9 100644
--- a/include/linux/namei.h
+++ b/include/linux/namei.h
@@ -8,6 +8,7 @@ struct vfsmount;
struct open_intent {
int flags;
int create_mode;
+ struct file *file;
};
enum { MAX_NESTED_LINKS = 5 };
@@ -65,6 +66,13 @@ 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 int __user_path_lookup_open(const char __user *, unsigned lookup_flags, struct nameidata *nd, int open_flags);
+extern int path_lookup_open(const char *, unsigned lookup_flags, struct nameidata *, int open_flags);
+extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry,
+ int (*open)(struct inode *, struct file *));
+extern struct file *nameidata_to_filp(struct nameidata *nd, int flags);
+extern void release_open_intent(struct nameidata *);
+
extern struct dentry * lookup_one_len(const char *, struct dentry *, int);
extern struct dentry * lookup_hash(struct qstr *, struct dentry *);