diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2020-09-17 08:55:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-17 08:55:35 +0200 |
commit | b0c04a3e0c2d2c8f99e112afc410441aa36093a1 (patch) | |
tree | 3071af83021953d0d650dce46b6c7a13253fe5a2 /lib/private | |
parent | 05edd1e5d6156766d072a9bf4782293b37210977 (diff) | |
parent | cfde74442c67b9a6e639536536c18e4c6d4f7a0e (diff) | |
download | nextcloud-server-b0c04a3e0c2d2c8f99e112afc410441aa36093a1.tar.gz nextcloud-server-b0c04a3e0c2d2c8f99e112afc410441aa36093a1.zip |
Merge pull request #22867 from nextcloud/shared-storage-init-less
Shared storage optimizations
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Files/Cache/NullWatcher.php | 53 | ||||
-rw-r--r-- | lib/private/Files/View.php | 29 |
2 files changed, 71 insertions, 11 deletions
diff --git a/lib/private/Files/Cache/NullWatcher.php b/lib/private/Files/Cache/NullWatcher.php new file mode 100644 index 00000000000..57e43444fdc --- /dev/null +++ b/lib/private/Files/Cache/NullWatcher.php @@ -0,0 +1,53 @@ +<?php + +declare(strict_types=1); +/** + * @copyright Copyright (c) 2020 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\Files\Cache; + +class NullWatcher extends Watcher { + private $policy; + + public function __construct() { + } + + public function setPolicy($policy) { + $this->policy = $policy; + } + + public function getPolicy() { + return $this->policy; + } + + public function checkUpdate($path, $cachedEntry = null) { + return false; + } + + public function update($path, $cachedData) { + } + + public function needsUpdate($path, $cachedData) { + return false; + } + + public function cleanFolder($path) { + } +} diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php index ef8656258d1..16074a89ca8 100644 --- a/lib/private/Files/View.php +++ b/lib/private/Files/View.php @@ -239,7 +239,7 @@ class View { public function getLocalFile($path) { $parent = substr($path, 0, strrpos($path, '/')); $path = $this->getAbsolutePath($path); - list($storage, $internalPath) = Filesystem::resolvePath($path); + [$storage, $internalPath] = Filesystem::resolvePath($path); if (Filesystem::isValidPath($parent) and $storage) { return $storage->getLocalFile($internalPath); } else { @@ -254,7 +254,7 @@ class View { public function getLocalFolder($path) { $parent = substr($path, 0, strrpos($path, '/')); $path = $this->getAbsolutePath($path); - list($storage, $internalPath) = Filesystem::resolvePath($path); + [$storage, $internalPath] = Filesystem::resolvePath($path); if (Filesystem::isValidPath($parent) and $storage) { return $storage->getLocalFolder($internalPath); } else { @@ -668,10 +668,10 @@ class View { $this->changeLock($path, ILockingProvider::LOCK_EXCLUSIVE); /** @var \OC\Files\Storage\Storage $storage */ - list($storage, $internalPath) = $this->resolvePath($path); + [$storage, $internalPath] = $this->resolvePath($path); $target = $storage->fopen($internalPath, 'w'); if ($target) { - list(, $result) = \OC_Helper::streamCopy($data, $target); + [, $result] = \OC_Helper::streamCopy($data, $target); fclose($target); fclose($data); @@ -1089,7 +1089,7 @@ class View { [Filesystem::signal_param_path => $this->getHookPath($path)] ); } - list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix); + [$storage, $internalPath] = Filesystem::resolvePath($absolutePath . $postFix); if ($storage) { return $storage->hash($type, $internalPath, $raw); } @@ -1143,7 +1143,7 @@ class View { $run = $this->runHooks($hooks, $path); /** @var \OC\Files\Storage\Storage $storage */ - list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix); + [$storage, $internalPath] = Filesystem::resolvePath($absolutePath . $postFix); if ($run and $storage) { if (in_array('write', $hooks) || in_array('delete', $hooks)) { try { @@ -1568,7 +1568,7 @@ class View { * @var \OC\Files\Storage\Storage $storage * @var string $internalPath */ - list($storage, $internalPath) = Filesystem::resolvePath($path); + [$storage, $internalPath] = Filesystem::resolvePath($path); if ($storage) { $cache = $storage->getCache($path); @@ -1705,7 +1705,7 @@ class View { * @var Storage\Storage $storage * @var string $internalPath */ - list($storage, $internalPath) = $this->resolvePath($path); + [$storage, $internalPath] = $this->resolvePath($path); if ($storage) { return $storage->getETag($internalPath); } else { @@ -1719,10 +1719,11 @@ class View { * Note that the resulting path is not guarantied to be unique for the id, multiple paths can point to the same file * * @param int $id - * @throws NotFoundException + * @param int|null $storageId * @return string + * @throws NotFoundException */ - public function getPath($id) { + public function getPath($id, int $storageId = null) { $id = (int)$id; $manager = Filesystem::getMountManager(); $mounts = $manager->findIn($this->fakeRoot); @@ -1737,6 +1738,12 @@ class View { return $a instanceof SharedMount && (!$b instanceof SharedMount) ? 1 : -1; }); + if (!is_null($storageId)) { + $mounts = array_filter($mounts, function (IMountPoint $mount) use ($storageId) { + return $mount->getNumericStorageId() === $storageId; + }); + } + foreach ($mounts as $mount) { /** * @var \OC\Files\Mount\MountPoint $mount @@ -1844,7 +1851,7 @@ class View { public function verifyPath($path, $fileName) { try { /** @type \OCP\Files\Storage $storage */ - list($storage, $internalPath) = $this->resolvePath($path); + [$storage, $internalPath] = $this->resolvePath($path); $storage->verifyPath($internalPath, $fileName); } catch (ReservedWordException $ex) { $l = \OC::$server->getL10N('lib'); |