vfs: Enable FS_IOC_FIEMAP and FIGETBSZ for all filetypes
The fiemap and get_blk_size ioctls should be enabled even for directories. So move it outisde file_ioctl. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
Родитель
abc8746eb9
Коммит
19ba0559f9
14
fs/ioctl.c
14
fs/ioctl.c
|
@ -414,10 +414,6 @@ static int file_ioctl(struct file *filp, unsigned int cmd,
|
|||
switch (cmd) {
|
||||
case FIBMAP:
|
||||
return ioctl_fibmap(filp, p);
|
||||
case FS_IOC_FIEMAP:
|
||||
return ioctl_fiemap(filp, arg);
|
||||
case FIGETBSZ:
|
||||
return put_user(inode->i_sb->s_blocksize, p);
|
||||
case FIONREAD:
|
||||
return put_user(i_size_read(inode) - filp->f_pos, p);
|
||||
}
|
||||
|
@ -557,6 +553,16 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
|
|||
error = ioctl_fsthaw(filp);
|
||||
break;
|
||||
|
||||
case FS_IOC_FIEMAP:
|
||||
return ioctl_fiemap(filp, arg);
|
||||
|
||||
case FIGETBSZ:
|
||||
{
|
||||
struct inode *inode = filp->f_path.dentry->d_inode;
|
||||
int __user *p = (int __user *)arg;
|
||||
return put_user(inode->i_sb->s_blocksize, p);
|
||||
}
|
||||
|
||||
default:
|
||||
if (S_ISREG(filp->f_path.dentry->d_inode->i_mode))
|
||||
error = file_ioctl(filp, cmd, arg);
|
||||
|
|
Загрузка…
Ссылка в новой задаче