summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2016-03-24 11:40:14 +0100
committerJoas Schilling <nickvergessen@owncloud.com>2016-03-24 11:50:17 +0100
commit3d9863febcdc0526cee96a7cc57cc6633313bc9d (patch)
tree9a14ff57919c774fb0dab12be61989093abfa61c /lib/private
parenta355e3abe383ea3fbb955db2efa2d10dc07268e5 (diff)
downloadnextcloud-server-3d9863febcdc0526cee96a7cc57cc6633313bc9d.tar.gz
nextcloud-server-3d9863febcdc0526cee96a7cc57cc6633313bc9d.zip
Lock the mountpoint while removing
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/files/view.php4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php
index 52be8a7e226..4421a016356 100644
--- a/lib/private/files/view.php
+++ b/lib/private/files/view.php
@@ -269,17 +269,21 @@ class View {
// cut of /user/files to get the relative path to data/user/files
$pathParts = explode('/', $path, 4);
$relPath = '/' . $pathParts[3];
+ $this->lockFile($relPath, ILockingProvider::LOCK_SHARED, true);
\OC_Hook::emit(
Filesystem::CLASSNAME, "umount",
array(Filesystem::signal_param_path => $relPath)
);
+ $this->changeLock($relPath, ILockingProvider::LOCK_EXCLUSIVE, true);
$result = $mount->removeMount();
+ $this->changeLock($relPath, ILockingProvider::LOCK_SHARED, true);
if ($result) {
\OC_Hook::emit(
Filesystem::CLASSNAME, "post_umount",
array(Filesystem::signal_param_path => $relPath)
);
}
+ $this->unlockFile($relPath, ILockingProvider::LOCK_SHARED, true);
return $result;
} else {
// do not allow deleting the storage's root / the mount point