|
@@ -1051,6 +1051,14 @@ xfs_ioctl_setattr_xflags(
|
|
|
!capable(CAP_LINUX_IMMUTABLE))
|
|
|
return -EPERM;
|
|
|
|
|
|
+ /*
|
|
|
+ * It is only valid to set the DAX flag on regular files and
|
|
|
+ * directories. On directories it serves as an inherit hint.
|
|
|
+ */
|
|
|
+ if ((fa->fsx_xflags & FS_XFLAG_DAX) &&
|
|
|
+ !(S_ISREG(VFS_I(ip)->i_mode) || S_ISDIR(VFS_I(ip)->i_mode)))
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
xfs_set_diflags(ip, fa->fsx_xflags);
|
|
|
xfs_diflags_to_linux(ip);
|
|
|
xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG);
|