diff options
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r-- | fs/ext4/ioctl.c | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 3e14060b398e..ea27eaa0cfe5 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c | |||
@@ -23,7 +23,6 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
23 | struct inode *inode = filp->f_dentry->d_inode; | 23 | struct inode *inode = filp->f_dentry->d_inode; |
24 | struct ext4_inode_info *ei = EXT4_I(inode); | 24 | struct ext4_inode_info *ei = EXT4_I(inode); |
25 | unsigned int flags; | 25 | unsigned int flags; |
26 | unsigned short rsv_window_size; | ||
27 | 26 | ||
28 | ext4_debug("cmd = %u, arg = %lu\n", cmd, arg); | 27 | ext4_debug("cmd = %u, arg = %lu\n", cmd, arg); |
29 | 28 | ||
@@ -190,49 +189,6 @@ setversion_out: | |||
190 | return ret; | 189 | return ret; |
191 | } | 190 | } |
192 | #endif | 191 | #endif |
193 | case EXT4_IOC_GETRSVSZ: | ||
194 | if (test_opt(inode->i_sb, RESERVATION) | ||
195 | && S_ISREG(inode->i_mode) | ||
196 | && ei->i_block_alloc_info) { | ||
197 | rsv_window_size = ei->i_block_alloc_info->rsv_window_node.rsv_goal_size; | ||
198 | return put_user(rsv_window_size, (int __user *)arg); | ||
199 | } | ||
200 | return -ENOTTY; | ||
201 | case EXT4_IOC_SETRSVSZ: { | ||
202 | int err; | ||
203 | |||
204 | if (!test_opt(inode->i_sb, RESERVATION) || !S_ISREG(inode->i_mode)) | ||
205 | return -ENOTTY; | ||
206 | |||
207 | if (!is_owner_or_cap(inode)) | ||
208 | return -EACCES; | ||
209 | |||
210 | if (get_user(rsv_window_size, (int __user *)arg)) | ||
211 | return -EFAULT; | ||
212 | |||
213 | err = mnt_want_write(filp->f_path.mnt); | ||
214 | if (err) | ||
215 | return err; | ||
216 | |||
217 | if (rsv_window_size > EXT4_MAX_RESERVE_BLOCKS) | ||
218 | rsv_window_size = EXT4_MAX_RESERVE_BLOCKS; | ||
219 | |||
220 | /* | ||
221 | * need to allocate reservation structure for this inode | ||
222 | * before set the window size | ||
223 | */ | ||
224 | down_write(&ei->i_data_sem); | ||
225 | if (!ei->i_block_alloc_info) | ||
226 | ext4_init_block_alloc_info(inode); | ||
227 | |||
228 | if (ei->i_block_alloc_info){ | ||
229 | struct ext4_reserve_window_node *rsv = &ei->i_block_alloc_info->rsv_window_node; | ||
230 | rsv->rsv_goal_size = rsv_window_size; | ||
231 | } | ||
232 | up_write(&ei->i_data_sem); | ||
233 | mnt_drop_write(filp->f_path.mnt); | ||
234 | return 0; | ||
235 | } | ||
236 | case EXT4_IOC_GROUP_EXTEND: { | 192 | case EXT4_IOC_GROUP_EXTEND: { |
237 | ext4_fsblk_t n_blocks_count; | 193 | ext4_fsblk_t n_blocks_count; |
238 | struct super_block *sb = inode->i_sb; | 194 | struct super_block *sb = inode->i_sb; |