sdcardfs: Add support for d_canonicalize
Change-Id: I5d6f0e71b8ca99aec4b0894412f1dfd1cfe12add
Signed-off-by: Daniel Rosenberg <drosen@google.com>
diff --git a/fs/sdcardfs/Kconfig b/fs/sdcardfs/Kconfig
index ab25f88..a1c1033 100644
--- a/fs/sdcardfs/Kconfig
+++ b/fs/sdcardfs/Kconfig
@@ -11,8 +11,3 @@
default y
help
Sdcardfs supports fadvise noactive mode.
-
-config SDCARD_FS_CI_SEARCH
- tristate "sdcardfs case-insensitive search support"
- depends on SDCARD_FS
- default y
diff --git a/fs/sdcardfs/dentry.c b/fs/sdcardfs/dentry.c
index 4572a54..4b1095e 100644
--- a/fs/sdcardfs/dentry.c
+++ b/fs/sdcardfs/dentry.c
@@ -178,5 +178,6 @@
.d_release = sdcardfs_d_release,
.d_hash = sdcardfs_hash_ci,
.d_compare = sdcardfs_cmp_ci,
+ .d_canonical_path = sdcardfs_get_real_lower,
};
diff --git a/fs/sdcardfs/lookup.c b/fs/sdcardfs/lookup.c
index d799368..a781526 100644
--- a/fs/sdcardfs/lookup.c
+++ b/fs/sdcardfs/lookup.c
@@ -238,13 +238,8 @@
lower_dir_mnt = lower_parent_path->mnt;
/* Use vfs_path_lookup to check if the dentry exists or not */
- if (sbi->options.lower_fs == LOWER_FS_EXT4) {
- err = vfs_path_lookup(lower_dir_dentry, lower_dir_mnt, name,
- LOOKUP_CASE_INSENSITIVE, &lower_nd.path);
- } else if (sbi->options.lower_fs == LOWER_FS_FAT) {
- err = vfs_path_lookup(lower_dir_dentry, lower_dir_mnt, name, 0,
+ err = vfs_path_lookup(lower_dir_dentry, lower_dir_mnt, name, 0,
&lower_nd.path);
- }
/* no error: handle positive dentries */
if (!err) {
diff --git a/fs/sdcardfs/main.c b/fs/sdcardfs/main.c
index 5ff60ab..2fd586c 100644
--- a/fs/sdcardfs/main.c
+++ b/fs/sdcardfs/main.c
@@ -41,7 +41,6 @@
{Opt_fsgid, "fsgid=%u"},
{Opt_gid, "gid=%u"},
{Opt_debug, "debug"},
- {Opt_lower_fs, "lower_fs=%s"},
{Opt_mask, "mask=%u"},
{Opt_userid, "userid=%d"},
{Opt_multiuser, "multiuser"},
@@ -64,8 +63,6 @@
opts->multiuser = false;
opts->fs_user_id = 0;
opts->gid = 0;
- /* by default, we use LOWER_FS_EXT4 as lower fs type */
- opts->lower_fs = LOWER_FS_EXT4;
/* by default, 0MB is reserved */
opts->reserved_mb = 0;
@@ -113,18 +110,6 @@
case Opt_multiuser:
opts->multiuser = true;
break;
- case Opt_lower_fs:
- string_option = match_strdup(&args[0]);
- if (!strcmp("ext4", string_option)) {
- opts->lower_fs = LOWER_FS_EXT4;
- } else if (!strcmp("fat", string_option)) {
- opts->lower_fs = LOWER_FS_FAT;
- } else {
- kfree(string_option);
- goto invalid_option;
- }
- kfree(string_option);
- break;
case Opt_reserved_mb:
if (match_int(&args[0], &option))
return 0;
diff --git a/fs/sdcardfs/sdcardfs.h b/fs/sdcardfs/sdcardfs.h
index ba1c7d9..f0ad2b1 100644
--- a/fs/sdcardfs/sdcardfs.h
+++ b/fs/sdcardfs/sdcardfs.h
@@ -122,11 +122,6 @@
PERM_ANDROID_MEDIA,
} perm_t;
-typedef enum {
- LOWER_FS_EXT4,
- LOWER_FS_FAT,
-} lower_fs_t;
-
struct sdcardfs_sb_info;
struct sdcardfs_mount_options;
@@ -190,7 +185,6 @@
gid_t fs_low_gid;
userid_t fs_user_id;
gid_t gid;
- lower_fs_t lower_fs;
mode_t mask;
bool multiuser;
unsigned int reserved_mb;
diff --git a/include/linux/namei.h b/include/linux/namei.h
index 1112663..52f6298 100644
--- a/include/linux/namei.h
+++ b/include/linux/namei.h
@@ -65,9 +65,6 @@
#define LOOKUP_JUMPED 0x1000
#define LOOKUP_ROOT 0x2000
#define LOOKUP_EMPTY 0x4000
-#ifdef CONFIG_SDCARD_FS_CI_SEARCH
-#define LOOKUP_CASE_INSENSITIVE 0x8000
-#endif
extern int user_path_at(int, const char __user *, unsigned, struct path *);
extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty);