diff options
Diffstat (limited to 'fs/ext4/ioctl.c')
| -rw-r--r-- | fs/ext4/ioctl.c | 17 | 
1 files changed, 15 insertions, 2 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 42dc83fb247..91e75f7a9e7 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -48,8 +48,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  		if (err)  			return err; -		if (!S_ISDIR(inode->i_mode)) -			flags &= ~EXT4_DIRSYNC_FL; +		flags = ext4_mask_flags(inode->i_mode, flags);  		err = -EPERM;  		mutex_lock(&inode->i_mutex); @@ -263,6 +262,20 @@ setversion_out:  		return err;  	} +	case EXT4_IOC_ALLOC_DA_BLKS: +	{ +		int err; +		if (!is_owner_or_cap(inode)) +			return -EACCES; + +		err = mnt_want_write(filp->f_path.mnt); +		if (err) +			return err; +		err = ext4_alloc_da_blocks(inode); +		mnt_drop_write(filp->f_path.mnt); +		return err; +	} +  	default:  		return -ENOTTY;  	}  |