fs/ext4: Disallow verity if inode is DAX

Verity and DAX are incompatible.  Changing the DAX mode due to a verity
flag change is wrong without a corresponding address_space_operations
update.

Make the 2 options mutually exclusive by returning an error if DAX was
set first.

(Setting DAX is already disabled if Verity is set first.)

Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>

Link: https://lore.kernel.org/r/20200528150003.828793-3-ira.weiny@intel.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
Ira Weiny 2020-05-28 07:59:56 -07:00 committed by Theodore Ts'o
parent ff694ab60c
commit 6c0d077ff8
2 changed files with 6 additions and 0 deletions

View File

@ -39,3 +39,6 @@ is encrypted as well as the data itself.
Verity files cannot have blocks allocated past the end of the verity
metadata.
Verity and DAX are not compatible and attempts to set both of these flags
on a file will fail.

View File

@ -113,6 +113,9 @@ static int ext4_begin_enable_verity(struct file *filp)
handle_t *handle;
int err;
if (IS_DAX(inode))
return -EINVAL;
if (ext4_verity_in_progress(inode))
return -EBUSY;