diff --git a/lib/filecache.php b/lib/filecache.php
index 1a6100481adf0a39f8d962278f11024195b9c934..a74d7cbc390bd238b2ab8d2ce2504befa5bf2a8b 100644
--- a/lib/filecache.php
+++ b/lib/filecache.php
@@ -350,12 +350,25 @@ class OC_FileCache{
 	 */
 	public static function increaseSize($path, $sizeDiff, $root=false) {
 		if($sizeDiff==0) return;
-		$id=self::getId($path, $root);
+		$item = OC_FileCache_Cached::get($path);
+		//stop walking up the filetree if we hit a non-folder
+		if($item['mimetype'] !== 'httpd/unix-directory'){
+			return;
+		}
+		$id = $item['id'];
 		while($id!=-1) {//walk up the filetree increasing the size of all parent folders
 			$query=OC_DB::prepare('UPDATE `*PREFIX*fscache` SET `size`=`size`+? WHERE `id`=?');
 			$query->execute(array($sizeDiff, $id));
-			$id=self::getParentId($path);
+			if($path == '' or $path =='/'){
+				return;
+			}
 			$path=dirname($path);
+			$parent = OC_FileCache_Cached::get($path);
+			$id = $parent['id'];
+			//stop walking up the filetree if we hit a non-folder
+			if($parent['mimetype'] !== 'httpd/unix-directory'){
+				return;
+			}
 		}
 	}