From 4fba4cd14ce78e3e0af64a97485a02e47640a144 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 28 Apr 2022 15:39:01 +0200 Subject: [PATCH] fix: fix user folder init Signed-off-by: Robin Appelman --- lib/private/Files/Config/UserMountCache.php | 2 +- lib/private/Files/ObjectStore/ObjectStoreStorage.php | 8 ++++++++ lib/private/Files/SetupManager.php | 6 ++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index 27d84e93838..13908c8725e 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -94,7 +94,7 @@ class UserMountCache implements IUserMountCache { $cachedMounts = $this->getMountsForUser($user); if (is_array($mountProviderClasses)) { - $cachedMounts = array_filter($cachedMounts, function (ICachedMountInfo $mountInfo) use ($mountProviderClasses, $newMounts) { + $cachedMounts = array_filter($cachedMounts, function (ICachedMountInfo $mountInfo) use ($mountProviderClasses, $newMounts): bool { // for existing mounts that didn't have a mount provider set // we still want the ones that map to new mounts if ($mountInfo->getMountProvider() === '' && isset($newMounts[$mountInfo->getKey()])) { diff --git a/lib/private/Files/ObjectStore/ObjectStoreStorage.php b/lib/private/Files/ObjectStore/ObjectStoreStorage.php index 7eb284fc774..3ef13f0ab01 100644 --- a/lib/private/Files/ObjectStore/ObjectStoreStorage.php +++ b/lib/private/Files/ObjectStore/ObjectStoreStorage.php @@ -82,6 +82,14 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common implements IChunkedFil if (isset($params['validateWrites'])) { $this->validateWrites = (bool)$params['validateWrites']; } + + // home storage is setup in the SetupManager + if (!$this instanceof HomeObjectStoreStorage) { + //initialize cache with root directory in cache + if (!$this->is_dir('/')) { + $this->mkdir('/'); + } + } $this->handleCopiesAsOwned = (bool)($params['handleCopiesAsOwned'] ?? false); $this->logger = \OCP\Server::get(LoggerInterface::class); diff --git a/lib/private/Files/SetupManager.php b/lib/private/Files/SetupManager.php index db4debfb83f..accb071a814 100644 --- a/lib/private/Files/SetupManager.php +++ b/lib/private/Files/SetupManager.php @@ -257,8 +257,10 @@ class SetupManager { if ($homeMount->getStorageRootId() === -1) { $this->eventLogger->start('fs:setup:user:home:scan', 'Scan home filesystem for user'); - $homeMount->getStorage()->mkdir(''); - $homeMount->getStorage()->getScanner()->scan(''); + $homeStorage = $homeMount->getStorage(); + $homeStorage->mkdir(''); + $homeStorage->mkdir('files'); + $homeStorage->getScanner()->scan(''); $this->eventLogger->end('fs:setup:user:home:scan'); }