diff --git a/lib/files/storage/mappedlocal.php b/lib/files/storage/mappedlocal.php
index ba3fcdc5c9e5bee3368c0423a6b1cdd370e16429..cf5d9b3ef4f0b5b048e373fcc50cb6f7d7db2b49 100644
--- a/lib/files/storage/mappedlocal.php
+++ b/lib/files/storage/mappedlocal.php
@@ -34,10 +34,30 @@ class MappedLocal extends \OC\Files\Storage\Common{
 		return @mkdir($this->buildPath($path));
 	}
 	public function rmdir($path) {
-		if ($result = @rmdir($this->buildPath($path))) {
-			$this->cleanMapper($path);
+		try {
+			$it = new \RecursiveIteratorIterator(
+				new \RecursiveDirectoryIterator($this->buildPath($path)),
+				\RecursiveIteratorIterator::CHILD_FIRST
+			);
+			foreach ($it as $file) {
+				/**
+				 * @var \SplFileInfo $file
+				 */
+				if (in_array($file->getBasename(), array('.', '..'))) {
+					continue;
+				} elseif ($file->isDir()) {
+					rmdir($file->getPathname());
+				} elseif ($file->isFile() || $file->isLink()) {
+					unlink($file->getPathname());
+				}
+			}
+			if ($result = @rmdir($this->buildPath($path))) {
+				$this->cleanMapper($path);
+			}
+			return $result;
+		} catch (\UnexpectedValueException $e) {
+			return false;
 		}
-		return $result;
 	}
 	public function opendir($path) {
 		$files = array('.', '..');