Snap for 6240399 from 1a2a2bbb39eafedd3c3bc055c9b75cd5c7e61f3f to rvc-preview2-release

Change-Id: I741e557bf8a36d9ab06c08b2be4ffb53cd3cfbcc
diff --git a/fsck/fsck.c b/fsck/fsck.c
index 4d8aff0..4d437e7 100644
--- a/fsck/fsck.c
+++ b/fsck/fsck.c
@@ -1303,6 +1303,10 @@
 			struct f2fs_dir_entry *dentry,
 			const unsigned char *name, u32 len, int enc_name)
 {
+	/* Casefolded Encrypted names require a key to compute siphash */
+	if (enc_name && casefolded)
+		return 0;
+
 	f2fs_hash_t hash_code = f2fs_dentry_hash(encoding, casefolded, name, len);
 	/* fix hash_code made by old buggy code */
 	if (dentry->hash_code != hash_code) {
diff --git a/fsck/mount.c b/fsck/mount.c
index e4ba048..325fbaa 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -3052,12 +3052,6 @@
 	int sb_changed = 0;
 	struct f2fs_super_block *sb = F2FS_RAW_SUPER(sbi);
 
-	if (c.feature & cpu_to_le32(F2FS_FEATURE_ENCRYPT) &&
-		c.feature & cpu_to_le32(F2FS_FEATURE_CASEFOLD)) {
-		ERR_MSG("ERROR: Cannot set both encrypt and casefold. Skipping.\n");
-		return -1;
-	}
-
 	if (!(sb->feature & cpu_to_le32(F2FS_FEATURE_ENCRYPT)) &&
 			c.feature & cpu_to_le32(F2FS_FEATURE_ENCRYPT)) {
 		sb->feature |= cpu_to_le32(F2FS_FEATURE_ENCRYPT);
diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index 0e9e7a9..44575e0 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -517,10 +517,6 @@
 	memcpy(sb->init_version, c.version, VERSION_LEN);
 
 	if (c.feature & cpu_to_le32(F2FS_FEATURE_CASEFOLD)) {
-		if (c.feature & cpu_to_le32(F2FS_FEATURE_ENCRYPT)) {
-			MSG(0, "\tError: Casefolding and encryption are not compatible\n");
-			return -1;
-		}
 		set_sb(s_encoding, c.s_encoding);
 		set_sb(s_encoding_flags, c.s_encoding_flags);
 	}