diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 12:29:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 12:29:20 -0400 |
commit | b64ada6b23d4a305fb3ca59b79dd38707fc53b69 (patch) | |
tree | 61bc87dc3a2549f54231261aaa544acffcd12281 /fs/ocfs2/ioctl.c | |
parent | be90a49ca22a95f184d9f32d35b5247b44032849 (diff) | |
parent | b80474b432913f73cce8db001e9fa3104f9b79ee (diff) |
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (85 commits)
ocfs2: Use buffer IO if we are appending a file.
ocfs2: add spinlock protection when dealing with lockres->purge.
dlmglue.c: add missed mlog lines
ocfs2: __ocfs2_abort() should not enable panic for local mounts
ocfs2: Add ioctl for reflink.
ocfs2: Enable refcount tree support.
ocfs2: Implement ocfs2_reflink.
ocfs2: Add preserve to reflink.
ocfs2: Create reflinked file in orphan dir.
ocfs2: Use proper parameter for some inode operation.
ocfs2: Make transaction extend more efficient.
ocfs2: Don't merge in 1st refcount ops of reflink.
ocfs2: Modify removing xattr process for refcount.
ocfs2: Add reflink support for xattr.
ocfs2: Create an xattr indexed block if needed.
ocfs2: Call refcount tree remove process properly.
ocfs2: Attach xattr clusters to refcount tree.
ocfs2: Abstract ocfs2 xattr tree extend rec iteration process.
ocfs2: Abstract the creation of xattr block.
ocfs2: Remove inode from ocfs2_xattr_bucket_get_name_value.
...
Diffstat (limited to 'fs/ocfs2/ioctl.c')
-rw-r--r-- | fs/ocfs2/ioctl.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c index 467b413bec21..31fbb0619510 100644 --- a/fs/ocfs2/ioctl.c +++ b/fs/ocfs2/ioctl.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include "ocfs2_fs.h" | 21 | #include "ocfs2_fs.h" |
22 | #include "ioctl.h" | 22 | #include "ioctl.h" |
23 | #include "resize.h" | 23 | #include "resize.h" |
24 | #include "refcounttree.h" | ||
24 | 25 | ||
25 | #include <linux/ext2_fs.h> | 26 | #include <linux/ext2_fs.h> |
26 | 27 | ||
@@ -115,6 +116,9 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
115 | int status; | 116 | int status; |
116 | struct ocfs2_space_resv sr; | 117 | struct ocfs2_space_resv sr; |
117 | struct ocfs2_new_group_input input; | 118 | struct ocfs2_new_group_input input; |
119 | struct reflink_arguments args; | ||
120 | const char *old_path, *new_path; | ||
121 | bool preserve; | ||
118 | 122 | ||
119 | switch (cmd) { | 123 | switch (cmd) { |
120 | case OCFS2_IOC_GETFLAGS: | 124 | case OCFS2_IOC_GETFLAGS: |
@@ -160,6 +164,15 @@ long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
160 | return -EFAULT; | 164 | return -EFAULT; |
161 | 165 | ||
162 | return ocfs2_group_add(inode, &input); | 166 | return ocfs2_group_add(inode, &input); |
167 | case OCFS2_IOC_REFLINK: | ||
168 | if (copy_from_user(&args, (struct reflink_arguments *)arg, | ||
169 | sizeof(args))) | ||
170 | return -EFAULT; | ||
171 | old_path = (const char *)(unsigned long)args.old_path; | ||
172 | new_path = (const char *)(unsigned long)args.new_path; | ||
173 | preserve = (args.preserve != 0); | ||
174 | |||
175 | return ocfs2_reflink_ioctl(inode, old_path, new_path, preserve); | ||
163 | default: | 176 | default: |
164 | return -ENOTTY; | 177 | return -ENOTTY; |
165 | } | 178 | } |
@@ -182,6 +195,7 @@ long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg) | |||
182 | case OCFS2_IOC_GROUP_EXTEND: | 195 | case OCFS2_IOC_GROUP_EXTEND: |
183 | case OCFS2_IOC_GROUP_ADD: | 196 | case OCFS2_IOC_GROUP_ADD: |
184 | case OCFS2_IOC_GROUP_ADD64: | 197 | case OCFS2_IOC_GROUP_ADD64: |
198 | case OCFS2_IOC_REFLINK: | ||
185 | break; | 199 | break; |
186 | default: | 200 | default: |
187 | return -ENOIOCTLCMD; | 201 | return -ENOIOCTLCMD; |