X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;ds=sidebyside;f=fs%2Fext3%2Fioctl.c;fp=fs%2Fext3%2Fioctl.c;h=fc080dd561f74ecf8b00a48038e8c9f18f4a789e;hb=92d62d098f574ed70b26548e6a2e2f67025864dc;hp=88974814783a346ca18d9eddea1c417cccbf695b;hpb=690c12d2c8ca50e55a3f507059c780ecdb8fd83f;p=mv-sheeva.git diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c index 88974814783..fc080dd561f 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;