summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKetut Putu Kumajaya <ketut.kumajaya@gmail.com>2015-12-02 16:17:23 +0700
committerMichael Bestas <mkbestas@lineageos.org>2017-12-20 22:14:52 +0200
commitc5df265dce568e476ccb93a54239111ad8c4417e (patch)
tree619c39acab5fb1594922937cf11d4edbf4b824dc
parent18335a5b00d5144655a7b334c03993495e48abcd (diff)
downloadandroid_system_vold-c5df265dce568e476ccb93a54239111ad8c4417e.tar.gz
android_system_vold-c5df265dce568e476ccb93a54239111ad8c4417e.tar.bz2
android_system_vold-c5df265dce568e476ccb93a54239111ad8c4417e.zip
vold: Native exfat driver support
* exfat-nofuse https://github.com/dorimanx/exfat-nofuse Change-Id: I0b7d7b3f3e21defa83e08564b3fdb67a9957edc0 vold: Fix native exfat driver support Change-Id: I772368c0ec054a2ba86cf0ba0e37f07ba2b82fd2
-rw-r--r--Android.mk4
-rw-r--r--fs/Exfat.cpp12
2 files changed, 16 insertions, 0 deletions
diff --git a/Android.mk b/Android.mk
index 1eeee01..f759047 100644
--- a/Android.mk
+++ b/Android.mk
@@ -114,6 +114,10 @@ ifeq ($(TARGET_HW_DISK_ENCRYPTION),true)
vold_cflags += -DCONFIG_HW_DISK_ENCRYPTION
endif
+ifeq ($(TARGET_KERNEL_HAVE_EXFAT),true)
+ vold_cflags += -DCONFIG_KERNEL_HAVE_EXFAT
+endif
+
include $(CLEAR_VARS)
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
diff --git a/fs/Exfat.cpp b/fs/Exfat.cpp
index 1f435ad..d0b1143 100644
--- a/fs/Exfat.cpp
+++ b/fs/Exfat.cpp
@@ -33,7 +33,11 @@ namespace exfat {
static const char* kMkfsPath = "/system/bin/mkfs.exfat";
static const char* kFsckPath = "/system/bin/fsck.exfat";
+#ifdef CONFIG_KERNEL_HAVE_EXFAT
+static const char* kMountPath = "/system/bin/mount";
+#else
static const char* kMountPath = "/system/bin/mount.exfat";
+#endif
bool IsSupported() {
return access(kMkfsPath, X_OK) == 0
@@ -59,13 +63,21 @@ status_t Mount(const std::string& source, const std::string& target, bool ro,
const char* c_target = target.c_str();
sprintf(mountData,
+#ifdef CONFIG_KERNEL_HAVE_EXFAT
+ "noatime,nodev,nosuid,uid=%d,gid=%d,fmask=%o,dmask=%o,%s,%s",
+#else
"noatime,nodev,nosuid,dirsync,uid=%d,gid=%d,fmask=%o,dmask=%o,%s,%s",
+#endif
ownerUid, ownerGid, permMask, permMask,
(executable ? "exec" : "noexec"),
(ro ? "ro" : "rw"));
std::vector<std::string> cmd;
cmd.push_back(kMountPath);
+#ifdef CONFIG_KERNEL_HAVE_EXFAT
+ cmd.push_back("-t");
+ cmd.push_back("exfat");
+#endif
cmd.push_back("-o");
cmd.push_back(mountData);
cmd.push_back(c_source);