]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/ext3/ioctl.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / fs / ext3 / ioctl.c
index 88974814783a346ca18d9eddea1c417cccbf695b..fc080dd561f74ecf8b00a48038e8c9f18f4a789e 100644 (file)
@@ -276,7 +276,29 @@ group_add_out:
                mnt_drop_write(filp->f_path.mnt);
                return err;
        }
+       case FITRIM: {
 
+               struct super_block *sb = inode->i_sb;
+               struct fstrim_range range;
+               int ret = 0;
+
+               if (!capable(CAP_SYS_ADMIN))
+                       return -EPERM;
+
+               if (copy_from_user(&range, (struct fstrim_range *)arg,
+                                  sizeof(range)))
+                       return -EFAULT;
+
+               ret = ext3_trim_fs(sb, &range);
+               if (ret < 0)
+                       return ret;
+
+               if (copy_to_user((struct fstrim_range *)arg, &range,
+                                sizeof(range)))
+                       return -EFAULT;
+
+               return 0;
+       }
 
        default:
                return -ENOTTY;