#include <linux/blk_types.h>
#include <linux/workqueue.h>
#include <linux/percpu-rwsem.h>
+#include <linux/delayed_call.h>
#include <asm/byteorder.h>
#include <uapi/linux/fs.h>
extern int fcntl_getlease(struct file *filp);
/* fs/locks.c */
- void locks_free_lock_context(struct file_lock_context *ctx);
+ void locks_free_lock_context(struct inode *inode);
void locks_free_lock(struct file_lock *fl);
extern void locks_init_lock(struct file_lock *);
extern struct file_lock * locks_alloc_lock(void);
}
static inline void
- locks_free_lock_context(struct file_lock_context *ctx)
+ locks_free_lock_context(struct inode *inode)
{
}
struct inode_operations {
struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
- const char * (*follow_link) (struct dentry *, void **);
+ const char * (*get_link) (struct dentry *, struct inode *, struct delayed_call *);
int (*permission) (struct inode *, int);
struct posix_acl * (*get_acl)(struct inode *, int);
int (*readlink) (struct dentry *, char __user *,int);
- void (*put_link) (struct inode *, void *);
int (*create) (struct inode *,struct dentry *, umode_t, bool);
int (*link) (struct dentry *,struct inode *,struct dentry *);
#define FLOCK_VERIFY_READ 1
#define FLOCK_VERIFY_WRITE 2
- #ifdef CONFIG_FILE_LOCKING
+ #ifdef CONFIG_MANDATORY_FILE_LOCKING
extern int locks_mandatory_locked(struct file *);
extern int locks_mandatory_area(int, struct inode *, struct file *, loff_t, size_t);
return 0;
}
+ #else /* !CONFIG_MANDATORY_FILE_LOCKING */
+
+ static inline int locks_mandatory_locked(struct file *file)
+ {
+ return 0;
+ }
+
+ static inline int locks_mandatory_area(int rw, struct inode *inode,
+ struct file *filp, loff_t offset,
+ size_t count)
+ {
+ return 0;
+ }
+
+ static inline int __mandatory_lock(struct inode *inode)
+ {
+ return 0;
+ }
+
+ static inline int mandatory_lock(struct inode *inode)
+ {
+ return 0;
+ }
+
+ static inline int locks_verify_locked(struct file *file)
+ {
+ return 0;
+ }
+
+ static inline int locks_verify_truncate(struct inode *inode, struct file *filp,
+ size_t size)
+ {
+ return 0;
+ }
+
+ #endif /* CONFIG_MANDATORY_FILE_LOCKING */
+
+
+ #ifdef CONFIG_FILE_LOCKING
static inline int break_lease(struct inode *inode, unsigned int mode)
{
/*
}
#else /* !CONFIG_FILE_LOCKING */
- static inline int locks_mandatory_locked(struct file *file)
- {
- return 0;
- }
-
- static inline int locks_mandatory_area(int rw, struct inode *inode,
- struct file *filp, loff_t offset,
- size_t count)
- {
- return 0;
- }
-
- static inline int __mandatory_lock(struct inode *inode)
- {
- return 0;
- }
-
- static inline int mandatory_lock(struct inode *inode)
- {
- return 0;
- }
-
- static inline int locks_verify_locked(struct file *file)
- {
- return 0;
- }
-
- static inline int locks_verify_truncate(struct inode *inode, struct file *filp,
- size_t size)
- {
- return 0;
- }
-
static inline int break_lease(struct inode *inode, unsigned int mode)
{
return 0;
extern int readlink_copy(char __user *, int, const char *);
extern int page_readlink(struct dentry *, char __user *, int);
-extern const char *page_follow_link_light(struct dentry *, void **);
-extern void page_put_link(struct inode *, void *);
+extern const char *page_get_link(struct dentry *, struct inode *,
+ struct delayed_call *);
+extern void page_put_link(void *);
extern int __page_symlink(struct inode *inode, const char *symname, int len,
int nofs);
extern int page_symlink(struct inode *inode, const char *symname, int len);
extern const struct inode_operations page_symlink_inode_operations;
-extern void kfree_put_link(struct inode *, void *);
-extern void free_page_put_link(struct inode *, void *);
+extern void kfree_link(void *);
extern int generic_readlink(struct dentry *, char __user *, int);
extern void generic_fillattr(struct inode *, struct kstat *);
int vfs_getattr_nosec(struct path *path, struct kstat *stat);
void inode_sub_bytes(struct inode *inode, loff_t bytes);
loff_t inode_get_bytes(struct inode *inode);
void inode_set_bytes(struct inode *inode, loff_t bytes);
-const char *simple_follow_link(struct dentry *, void **);
+const char *simple_get_link(struct dentry *, struct inode *,
+ struct delayed_call *);
extern const struct inode_operations simple_symlink_inode_operations;
extern int iterate_dir(struct file *, struct dir_context *);
extern int vfs_fstat(unsigned int, struct kstat *);
extern int vfs_fstatat(int , const char __user *, struct kstat *, int);
-extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
- unsigned long arg);
extern int __generic_block_fiemap(struct inode *inode,
struct fiemap_extent_info *fieinfo,
loff_t start, loff_t len,
}
extern bool path_noexec(const struct path *path);
+extern void inode_nohighmem(struct inode *inode);
#endif /* _LINUX_FS_H */