summaryrefslogtreecommitdiff
path: root/fs/ext3/ioctl.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2011-01-12 14:47:21 +0900
committerPaul Mundt <lethal@linux-sh.org>2011-01-12 14:47:21 +0900
commit53582c4c508a95ece9f7c907edef9911c7eb79eb (patch)
treec099e9880f7bf7d60e87dfa6a19cb4e8780ec860 /fs/ext3/ioctl.c
parent6ae1e19dbb43ff0d429a9f45087c513212686836 (diff)
parentda97da73d418533187a8390cf6541f48bed653e8 (diff)
Merge branch 'rmobile/sdio' into rmobile-latest
Diffstat (limited to 'fs/ext3/ioctl.c')
-rw-r--r--fs/ext3/ioctl.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
index 88974814783a..fc080dd561f7 100644
--- a/fs/ext3/ioctl.c
+++ b/fs/ext3/ioctl.c
@@ -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;