diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 1d4654e11fc4a8f9f7308695e9b74a6b2d54e8ea..39e2fe6bfce26283b93fbdee6fcb8a3ac66ffaf7 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -1683,6 +1683,7 @@ class View {
 	 */
 	private function lockPath($path, $type) {
 		$absolutePath = $this->getAbsolutePath($path);
+		$absolutePath = Filesystem::normalizePath($absolutePath);
 		if (!$this->shouldLockFile($absolutePath)) {
 			return false;
 		}
@@ -1717,6 +1718,7 @@ class View {
 	 */
 	public function changeLock($path, $type) {
 		$absolutePath = $this->getAbsolutePath($path);
+		$absolutePath = Filesystem::normalizePath($absolutePath);
 		if (!$this->shouldLockFile($absolutePath)) {
 			return false;
 		}
@@ -1750,6 +1752,7 @@ class View {
 	 */
 	private function unlockPath($path, $type) {
 		$absolutePath = $this->getAbsolutePath($path);
+		$absolutePath = Filesystem::normalizePath($absolutePath);
 		if (!$this->shouldLockFile($absolutePath)) {
 			return false;
 		}
@@ -1774,9 +1777,8 @@ class View {
 	 * @return bool False if the path is excluded from locking, true otherwise
 	 */
 	public function lockFile($path, $type) {
-		$path = '/' . trim($path, '/');
-
 		$absolutePath = $this->getAbsolutePath($path);
+		$absolutePath = Filesystem::normalizePath($absolutePath);
 		if (!$this->shouldLockFile($absolutePath)) {
 			return false;
 		}
@@ -1799,9 +1801,8 @@ class View {
 	 * @return bool False if the path is excluded from locking, true otherwise
 	 */
 	public function unlockFile($path, $type) {
-		$path = rtrim($path, '/');
-
 		$absolutePath = $this->getAbsolutePath($path);
+		$absolutePath = Filesystem::normalizePath($absolutePath);
 		if (!$this->shouldLockFile($absolutePath)) {
 			return false;
 		}
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index 63d136bc7a9de21689d3c58c73392f53ac7cc494..dcdebfd9bceb2e8580875735fa7a48483e2d4b26 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -1208,4 +1208,26 @@ class View extends \Test\TestCase {
 		$view = new \OC\Files\View();
 		$view->getPathRelativeToFiles($path);
 	}
+
+	public function testChangeLock() {
+		$view = new \OC\Files\View('/testuser/files/');
+		$storage = new Temporary(array());
+		\OC\Files\Filesystem::mount($storage, [], '/');
+
+		$view->lockFile('/test/sub', ILockingProvider::LOCK_SHARED);
+		$this->assertTrue($this->isFileLocked($view, '/test//sub', ILockingProvider::LOCK_SHARED));
+		$this->assertFalse($this->isFileLocked($view, '/test//sub', ILockingProvider::LOCK_EXCLUSIVE));
+
+		$view->changeLock('//test/sub', ILockingProvider::LOCK_EXCLUSIVE);
+		$this->assertTrue($this->isFileLocked($view, '/test//sub', ILockingProvider::LOCK_EXCLUSIVE));
+
+		$view->changeLock('test/sub', ILockingProvider::LOCK_SHARED);
+		$this->assertTrue($this->isFileLocked($view, '/test//sub', ILockingProvider::LOCK_SHARED));
+
+		$view->unlockFile('/test/sub/', ILockingProvider::LOCK_SHARED);
+
+		$this->assertFalse($this->isFileLocked($view, '/test//sub', ILockingProvider::LOCK_SHARED));
+		$this->assertFalse($this->isFileLocked($view, '/test//sub', ILockingProvider::LOCK_EXCLUSIVE));
+
+	}
 }