Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
[profile/ivi/kernel-x86-ivi.git] / fs / ext4 / ioctl.c
index 7f7dad7..5747f52 100644 (file)
@@ -233,7 +233,7 @@ group_extend_out:
 
        case EXT4_IOC_MOVE_EXT: {
                struct move_extent me;
-               struct file *donor_filp;
+               struct fd donor;
                int err;
 
                if (!(filp->f_mode & FMODE_READ) ||
@@ -245,11 +245,11 @@ group_extend_out:
                        return -EFAULT;
                me.moved_len = 0;
 
-               donor_filp = fget(me.donor_fd);
-               if (!donor_filp)
+               donor = fdget(me.donor_fd);
+               if (!donor.file)
                        return -EBADF;
 
-               if (!(donor_filp->f_mode & FMODE_WRITE)) {
+               if (!(donor.file->f_mode & FMODE_WRITE)) {
                        err = -EBADF;
                        goto mext_out;
                }
@@ -258,14 +258,15 @@ group_extend_out:
                               EXT4_FEATURE_RO_COMPAT_BIGALLOC)) {
                        ext4_msg(sb, KERN_ERR,
                                 "Online defrag not supported with bigalloc");
-                       return -EOPNOTSUPP;
+                       err = -EOPNOTSUPP;
+                       goto mext_out;
                }
 
                err = mnt_want_write_file(filp);
                if (err)
                        goto mext_out;
 
-               err = ext4_move_extents(filp, donor_filp, me.orig_start,
+               err = ext4_move_extents(filp, donor.file, me.orig_start,
                                        me.donor_start, me.len, &me.moved_len);
                mnt_drop_write_file(filp);
 
@@ -273,7 +274,7 @@ group_extend_out:
                                 &me, sizeof(me)))
                        err = -EFAULT;
 mext_out:
-               fput(donor_filp);
+               fdput(donor);
                return err;
        }
 
@@ -365,26 +366,11 @@ group_add_out:
                        return -EOPNOTSUPP;
                }
 
-               if (EXT4_HAS_INCOMPAT_FEATURE(sb,
-                              EXT4_FEATURE_INCOMPAT_META_BG)) {
-                       ext4_msg(sb, KERN_ERR,
-                                "Online resizing not (yet) supported with meta_bg");
-                       return -EOPNOTSUPP;
-               }
-
                if (copy_from_user(&n_blocks_count, (__u64 __user *)arg,
                                   sizeof(__u64))) {
                        return -EFAULT;
                }
 
-               if (n_blocks_count > MAX_32_NUM &&
-                   !EXT4_HAS_INCOMPAT_FEATURE(sb,
-                                              EXT4_FEATURE_INCOMPAT_64BIT)) {
-                       ext4_msg(sb, KERN_ERR,
-                                "File system only supports 32-bit block numbers");
-                       return -EOPNOTSUPP;
-               }
-
                err = ext4_resize_begin(sb);
                if (err)
                        return err;
@@ -419,13 +405,6 @@ resizefs_out:
                if (!blk_queue_discard(q))
                        return -EOPNOTSUPP;
 
-               if (EXT4_HAS_RO_COMPAT_FEATURE(sb,
-                              EXT4_FEATURE_RO_COMPAT_BIGALLOC)) {
-                       ext4_msg(sb, KERN_ERR,
-                                "FITRIM not supported with bigalloc");
-                       return -EOPNOTSUPP;
-               }
-
                if (copy_from_user(&range, (struct fstrim_range __user *)arg,
                    sizeof(range)))
                        return -EFAULT;