diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 711acc0bf53b09f0016d14032ff4a249f1e72db3..46158b42f10c93665d705662f0c11ad666e598d3 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -1166,6 +1166,7 @@ class View {
 				// if the file is not in the cache or needs to be updated, trigger the scanner and reload the data
 				if (!$data) {
 					if (!$storage->file_exists($internalPath)) {
+						$this->unlockFile($relativePath, ILockingProvider::LOCK_SHARED);
 						return false;
 					}
 					$scanner = $storage->getScanner($internalPath);
@@ -1251,6 +1252,7 @@ class View {
 				$watcher = $storage->getWatcher($internalPath);
 				if (!$data or $data['size'] === -1) {
 					if (!$storage->file_exists($internalPath)) {
+						$this->unlockFile($directory, ILockingProvider::LOCK_SHARED);
 						return array();
 					}
 					$scanner = $storage->getScanner($internalPath);