]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/ocfs2/ioctl.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[mv-sheeva.git] / fs / ocfs2 / ioctl.c
index b74b24ecf0e4ba6bfd86d1197954260afca3d6b2..5177fba5162b55616c77d8a1a2db7b5c28842297 100644 (file)
@@ -119,6 +119,7 @@ int ocfs2_ioctl(struct inode * inode, struct file * filp,
        int new_clusters;
        int status;
        struct ocfs2_space_resv sr;
+       struct ocfs2_new_group_input input;
 
        switch (cmd) {
        case OCFS2_IOC_GETFLAGS:
@@ -143,10 +144,22 @@ int ocfs2_ioctl(struct inode * inode, struct file * filp,
 
                return ocfs2_change_file_space(filp, cmd, &sr);
        case OCFS2_IOC_GROUP_EXTEND:
+               if (!capable(CAP_SYS_RESOURCE))
+                       return -EPERM;
+
                if (get_user(new_clusters, (int __user *)arg))
                        return -EFAULT;
 
                return ocfs2_group_extend(inode, new_clusters);
+       case OCFS2_IOC_GROUP_ADD:
+       case OCFS2_IOC_GROUP_ADD64:
+               if (!capable(CAP_SYS_RESOURCE))
+                       return -EPERM;
+
+               if (copy_from_user(&input, (int __user *) arg, sizeof(input)))
+                       return -EFAULT;
+
+               return ocfs2_group_add(inode, &input);
        default:
                return -ENOTTY;
        }
@@ -170,6 +183,8 @@ long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg)
        case OCFS2_IOC_UNRESVSP:
        case OCFS2_IOC_UNRESVSP64:
        case OCFS2_IOC_GROUP_EXTEND:
+       case OCFS2_IOC_GROUP_ADD:
+       case OCFS2_IOC_GROUP_ADD64:
                break;
        default:
                return -ENOIOCTLCMD;