aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAnkit Jain <me@ankitjain.org>2009-06-19 14:28:07 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2009-06-24 08:15:27 -0400
commit3e63cbb1efca7dd3137de1bb475e2e068e38ef23 (patch)
tree5a7964068266e778e94c1348192d3c85eba4ac48 /include/linux
parent01c031945f2755c7afaaf456088543312f2b72ea (diff)
fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
This patch adds ioctls to vfs for compatibility with legacy XFS pre-allocation ioctls (XFS_IOC_*RESVP*). The implementation effectively invokes sys_fallocate for the new ioctls. Also handles the compat_ioctl case. Note: These legacy ioctls are also implemented by OCFS2. [AV: folded fixes from hch] Signed-off-by: Ankit Jain <me@ankitjain.org> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/falloc.h21
-rw-r--r--include/linux/fs.h6
2 files changed, 27 insertions, 0 deletions
diff --git a/include/linux/falloc.h b/include/linux/falloc.h
index 8e912ab6a07..3c155107d61 100644
--- a/include/linux/falloc.h
+++ b/include/linux/falloc.h
@@ -3,4 +3,25 @@
3 3
4#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ 4#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */
5 5
6#ifdef __KERNEL__
7
8/*
9 * Space reservation ioctls and argument structure
10 * are designed to be compatible with the legacy XFS ioctls.
11 */
12struct space_resv {
13 __s16 l_type;
14 __s16 l_whence;
15 __s64 l_start;
16 __s64 l_len; /* len == 0 means until end of file */
17 __s32 l_sysid;
18 __u32 l_pid;
19 __s32 l_pad[4]; /* reserved area */
20};
21
22#define FS_IOC_RESVSP _IOW('X', 40, struct space_resv)
23#define FS_IOC_RESVSP64 _IOW('X', 42, struct space_resv)
24
25#endif /* __KERNEL__ */
26
6#endif /* _FALLOC_H_ */ 27#endif /* _FALLOC_H_ */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 1ff5e4e0195..79e302ddde0 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1906,6 +1906,8 @@ static inline int break_lease(struct inode *inode, unsigned int mode)
1906 1906
1907extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs, 1907extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs,
1908 struct file *filp); 1908 struct file *filp);
1909extern int do_fallocate(struct file *file, int mode, loff_t offset,
1910 loff_t len);
1909extern long do_sys_open(int dfd, const char __user *filename, int flags, 1911extern long do_sys_open(int dfd, const char __user *filename, int flags,
1910 int mode); 1912 int mode);
1911extern struct file *filp_open(const char *, int, int); 1913extern struct file *filp_open(const char *, int, int);
@@ -1914,6 +1916,10 @@ extern struct file * dentry_open(struct dentry *, struct vfsmount *, int,
1914extern int filp_close(struct file *, fl_owner_t id); 1916extern int filp_close(struct file *, fl_owner_t id);
1915extern char * getname(const char __user *); 1917extern char * getname(const char __user *);
1916 1918
1919/* fs/ioctl.c */
1920
1921extern int ioctl_preallocate(struct file *filp, void __user *argp);
1922
1917/* fs/dcache.c */ 1923/* fs/dcache.c */
1918extern void __init vfs_caches_init_early(void); 1924extern void __init vfs_caches_init_early(void);
1919extern void __init vfs_caches_init(unsigned long); 1925extern void __init vfs_caches_init(unsigned long);