#endif
        }
        case EXT4_IOC_GET_ENCRYPTION_POLICY:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
                return fscrypt_ioctl_get_policy(filp, (void __user *)arg);
  
 +      case FS_IOC_GET_ENCRYPTION_POLICY_EX:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_get_policy_ex(filp, (void __user *)arg);
 +
 +      case FS_IOC_ADD_ENCRYPTION_KEY:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_add_key(filp, (void __user *)arg);
 +
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_remove_key(filp, (void __user *)arg);
 +
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_remove_key_all_users(filp,
 +                                                        (void __user *)arg);
 +      case FS_IOC_GET_ENCRYPTION_KEY_STATUS:
 +              if (!ext4_has_feature_encrypt(sb))
 +                      return -EOPNOTSUPP;
 +              return fscrypt_ioctl_get_key_status(filp, (void __user *)arg);
 +
+       case EXT4_IOC_CLEAR_ES_CACHE:
+       {
+               if (!inode_owner_or_capable(inode))
+                       return -EACCES;
+               ext4_clear_inode_es(inode);
+               return 0;
+       }
+ 
+       case EXT4_IOC_GETSTATE:
+       {
+               __u32   state = 0;
+ 
+               if (ext4_test_inode_state(inode, EXT4_STATE_EXT_PRECACHED))
+                       state |= EXT4_STATE_FLAG_EXT_PRECACHED;
+               if (ext4_test_inode_state(inode, EXT4_STATE_NEW))
+                       state |= EXT4_STATE_FLAG_NEW;
+               if (ext4_test_inode_state(inode, EXT4_STATE_NEWENTRY))
+                       state |= EXT4_STATE_FLAG_NEWENTRY;
+               if (ext4_test_inode_state(inode, EXT4_STATE_DA_ALLOC_CLOSE))
+                       state |= EXT4_STATE_FLAG_DA_ALLOC_CLOSE;
+ 
+               return put_user(state, (__u32 __user *) arg);
+       }
+ 
+       case EXT4_IOC_GET_ES_CACHE:
+               return ext4_ioctl_get_es_cache(filp, arg);
+ 
        case EXT4_IOC_FSGETXATTR:
        {
                struct fsxattr fa;
        case EXT4_IOC_SET_ENCRYPTION_POLICY:
        case EXT4_IOC_GET_ENCRYPTION_PWSALT:
        case EXT4_IOC_GET_ENCRYPTION_POLICY:
 +      case FS_IOC_GET_ENCRYPTION_POLICY_EX:
 +      case FS_IOC_ADD_ENCRYPTION_KEY:
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY:
 +      case FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS:
 +      case FS_IOC_GET_ENCRYPTION_KEY_STATUS:
        case EXT4_IOC_SHUTDOWN:
        case FS_IOC_GETFSMAP:
 +      case FS_IOC_ENABLE_VERITY:
 +      case FS_IOC_MEASURE_VERITY:
+       case EXT4_IOC_CLEAR_ES_CACHE:
+       case EXT4_IOC_GETSTATE:
+       case EXT4_IOC_GET_ES_CACHE:
                break;
        default:
                return -ENOIOCTLCMD;