From 107120105231f6d3402a204efb15854a0971fc64 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 20 Aug 2024 13:31:35 +0200 Subject: [PATCH 1/2] feat: store the mountpoint of storages in the mount options Signed-off-by: Robin Appelman --- lib/private/Files/SetupManager.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/private/Files/SetupManager.php b/lib/private/Files/SetupManager.php index 53befe57e366f..3a3f7ba9c11a9 100644 --- a/lib/private/Files/SetupManager.php +++ b/lib/private/Files/SetupManager.php @@ -107,8 +107,9 @@ private function setupBuiltinWrappers() { $prevLogging = Filesystem::logWarningWhenAddingStorageWrapper(false); Filesystem::addStorageWrapper('mount_options', function ($mountPoint, IStorage $storage, IMountPoint $mount) { - if ($mount->getOptions() && $storage->instanceOfStorage(Common::class)) { - $storage->setMountOptions($mount->getOptions()); + if ($storage->instanceOfStorage(Common::class)) { + $options = array_merge($mount->getOptions(), ['mount_point' => $mountPoint]); + $storage->setMountOptions($options); } return $storage; }); From 3756152cb15d849457de6631c32758aa982e0a5f Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 20 Aug 2024 13:32:03 +0200 Subject: [PATCH 2/2] fix: use mountpoint from storage to find the encryption keys Signed-off-by: Robin Appelman --- lib/private/Files/Storage/Wrapper/Encryption.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php index 7d45c356bfed0..09048c239eece 100644 --- a/lib/private/Files/Storage/Wrapper/Encryption.php +++ b/lib/private/Files/Storage/Wrapper/Encryption.php @@ -14,6 +14,7 @@ use OC\Files\Filesystem; use OC\Files\Mount\Manager; use OC\Files\ObjectStore\ObjectStoreStorage; +use OC\Files\Storage\Common; use OC\Files\Storage\LocalTempFileTrait; use OC\Memcache\ArrayCache; use OCP\Cache\CappedMemoryCache; @@ -776,9 +777,8 @@ private function copyBetweenStorage( // first copy the keys that we reuse the existing file key on the target location // and don't create a new one which would break versions for example. - $mount = $this->mountManager->findByStorageId($sourceStorage->getId()); - if (count($mount) >= 1) { - $mountPoint = $mount[0]->getMountPoint(); + if ($sourceStorage->instanceOfStorage(Common::class) && $sourceStorage->getMountOption('mount_point')) { + $mountPoint = $sourceStorage->getMountOption('mount_point'); $source = $mountPoint . '/' . $sourceInternalPath; $target = $this->getFullPath($targetInternalPath); $this->copyKeys($source, $target);