Patches as of 2018-03-06 release
diff --git a/patches/platform_system_vold/0001-Allow-deletion-of-symlink.patch b/patches/platform_system_vold/0001-Allow-deletion-of-symlink.patch
new file mode 100644
index 0000000..b9afea8
--- /dev/null
+++ b/patches/platform_system_vold/0001-Allow-deletion-of-symlink.patch
@@ -0,0 +1,25 @@
+From f838998f3f28d93a8085047725da96404b0ae56c Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Sat, 17 Feb 2018 19:39:38 +0100
+Subject: [PATCH 1/2] Allow deletion of symlink
+
+Change-Id: I9731895f88729072297f753088583aabbe6990f4
+---
+ Ext4Crypt.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Ext4Crypt.cpp b/Ext4Crypt.cpp
+index dc2e42a..6398464 100644
+--- a/Ext4Crypt.cpp
++++ b/Ext4Crypt.cpp
+@@ -211,6 +211,7 @@ static bool prepare_dir(const std::string& dir, mode_t mode, uid_t uid, gid_t gi
+ static bool destroy_dir(const std::string& dir) {
+     LOG(DEBUG) << "Destroying: " << dir;
+     if (rmdir(dir.c_str()) != 0 && errno != ENOENT) {
++        if(unlink(dir.c_str()) == 0) return true;
+         PLOG(ERROR) << "Failed to destroy " << dir;
+         return false;
+     }
+-- 
+2.15.1
+
diff --git a/patches/platform_system_vold/0002-Workaround-perdev_minors-path-change-in-Linux.patch b/patches/platform_system_vold/0002-Workaround-perdev_minors-path-change-in-Linux.patch
new file mode 100644
index 0000000..73edc04
--- /dev/null
+++ b/patches/platform_system_vold/0002-Workaround-perdev_minors-path-change-in-Linux.patch
@@ -0,0 +1,42 @@
+From 2f89ac71e213bfbd45d503ef615b778697ef8dc2 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@archos.com>
+Date: Tue, 28 Nov 2017 15:42:56 +0100
+Subject: [PATCH 2/2] Workaround perdev_minors path change in Linux
+
+This upstream Linux change has been discussed at https://patchwork.kernel.org/patch/8281851/
+And included in AOSP in https://android-review.googlesource.com/c/kernel/common/+/202752
+Some devices have been released without it, so we need this change to
+have a working SDcard on those devices.
+
+Change-Id: I323d85bd8381f82b75db09493ddc22f432cec548
+---
+ Disk.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/Disk.cpp b/Disk.cpp
+index 9c22400..2f6ed5e 100644
+--- a/Disk.cpp
++++ b/Disk.cpp
+@@ -50,7 +50,8 @@ static const char* kSgdiskPath = "/system/bin/sgdisk";
+ static const char* kSgdiskToken = " \t\n";
+ 
+ static const char* kSysfsLoopMaxMinors = "/sys/module/loop/parameters/max_part";
+-static const char* kSysfsMmcMaxMinors = "/sys/module/mmcblk/parameters/perdev_minors";
++static const char* kSysfsMmcMaxMinorsDeprecated = "/sys/module/mmcblk/parameters/perdev_minors";
++static const char* kSysfsMmcMaxMinors = "/sys/module/mmc_block/parameters/perdev_minors";
+ 
+ static const unsigned int kMajorBlockLoop = 7;
+ static const unsigned int kMajorBlockScsiA = 8;
+@@ -566,7 +567,8 @@ int Disk::getMaxMinors() {
+     case kMajorBlockMmc: {
+         // Per Documentation/devices.txt this is dynamic
+         std::string tmp;
+-        if (!ReadFileToString(kSysfsMmcMaxMinors, &tmp)) {
++        if (!ReadFileToString(kSysfsMmcMaxMinors, &tmp) &&
++                !ReadFileToString(kSysfsMmcMaxMinorsDeprecated, &tmp)) {
+             LOG(ERROR) << "Failed to read max minors";
+             return -errno;
+         }
+-- 
+2.15.1
+