aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/ioctl.c
diff options
context:
space:
mode:
authorTao Ma <tao.ma@oracle.com>2007-12-18 02:47:03 -0500
committerMark Fasheh <mark.fasheh@oracle.com>2008-01-25 17:53:35 -0500
commitd659072f736837e56b6433d58e5315ad1d4d5ccf (patch)
tree56882b7b36c6b60a8208f6ed5bee9904adc7b649 /fs/ocfs2/ioctl.c
parent7f68fc28219be3b44ef4132f95c6506ff3e806b5 (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.c8
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;