diff options
author | Tao Ma <tao.ma@oracle.com> | 2007-12-18 02:47:03 -0500 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2008-01-25 17:53:35 -0500 |
commit | d659072f736837e56b6433d58e5315ad1d4d5ccf (patch) | |
tree | 56882b7b36c6b60a8208f6ed5bee9904adc7b649 /fs/ocfs2/ioctl.c | |
parent | 7f68fc28219be3b44ef4132f95c6506ff3e806b5 (diff) |
[PATCH 1/2] ocfs2: Add group extend for online resize
This patch adds the ability for a userspace program to request an extend of
last cluster group on an Ocfs2 file system. The request is made via ioctl,
OCFS2_IOC_GROUP_EXTEND. This is derived from EXT3_IOC_GROUP_EXTEND, but is
obviously Ocfs2 specific.
tunefs.ocfs2 would call this for an online-resize operation if the last
cluster group isn't full.
Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/ioctl.c')
-rw-r--r-- | fs/ocfs2/ioctl.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c index 67c2fb4bae91..b74b24ecf0e4 100644 --- a/fs/ocfs2/ioctl.c +++ b/fs/ocfs2/ioctl.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include "ocfs2_fs.h" | 21 | #include "ocfs2_fs.h" |
22 | #include "ioctl.h" | 22 | #include "ioctl.h" |
23 | #include "resize.h" | ||
23 | 24 | ||
24 | #include <linux/ext2_fs.h> | 25 | #include <linux/ext2_fs.h> |
25 | 26 | ||
@@ -115,6 +116,7 @@ int ocfs2_ioctl(struct inode * inode, struct file * filp, | |||
115 | unsigned int cmd, unsigned long arg) | 116 | unsigned int cmd, unsigned long arg) |
116 | { | 117 | { |
117 | unsigned int flags; | 118 | unsigned int flags; |
119 | int new_clusters; | ||
118 | int status; | 120 | int status; |
119 | struct ocfs2_space_resv sr; | 121 | struct ocfs2_space_resv sr; |
120 | 122 | ||
@@ -140,6 +142,11 @@ int ocfs2_ioctl(struct inode * inode, struct file * filp, | |||
140 | return -EFAULT; | 142 | return -EFAULT; |
141 | 143 | ||
142 | return ocfs2_change_file_space(filp, cmd, &sr); | 144 | return ocfs2_change_file_space(filp, cmd, &sr); |
145 | case OCFS2_IOC_GROUP_EXTEND: | ||
146 | if (get_user(new_clusters, (int __user *)arg)) | ||
147 | return -EFAULT; | ||
148 | |||
149 | return ocfs2_group_extend(inode, new_clusters); | ||
143 | default: | 150 | default: |
144 | return -ENOTTY; | 151 | return -ENOTTY; |
145 | } | 152 | } |
@@ -162,6 +169,7 @@ long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg) | |||
162 | case OCFS2_IOC_RESVSP64: | 169 | case OCFS2_IOC_RESVSP64: |
163 | case OCFS2_IOC_UNRESVSP: | 170 | case OCFS2_IOC_UNRESVSP: |
164 | case OCFS2_IOC_UNRESVSP64: | 171 | case OCFS2_IOC_UNRESVSP64: |
172 | case OCFS2_IOC_GROUP_EXTEND: | ||
165 | break; | 173 | break; |
166 | default: | 174 | default: |
167 | return -ENOIOCTLCMD; | 175 | return -ENOIOCTLCMD; |