Commit Graph
979 Commits
Author SHA1 Message Date
Carl-Johannes JohnsenandGitHub 476774640a Merge pull request #5991 from carljohnsen/performance/restoreopt2 2025-02-28 13:03:25 +01:00
Carl Johnsen dbe413d889 Fixed the restore BlockManager block counting logic 2025-02-28 10:26:07 +01:00
Carl Johnsen 97df02c57c Fixed missing docstrings 2025-02-27 14:48:08 +01:00
Carl Johnsen b9eaa224b8 Renamed variables in VolumeDecompressor 2025-02-27 14:46:04 +01:00
Carl Johnsen 6ef151f4af Cleaned up FileProcessor 2025-02-27 14:45:05 +01:00
Carl Johnsen a539af58ca Removed unused code from FileLister 2025-02-27 14:44:54 +01:00
Carl Johnsen 2ebb021174 Cleaned up BlockManager 2025-02-27 14:40:29 +01:00
Carl Johnsen 2fae2d510e Removed old block counters from BlockManager 2025-02-27 14:16:06 +01:00
Carl Johnsen 260786a91a Merge branch 'feature/restore-buffer-size-option' into performance/restoreopt2 2025-02-27 14:03:01 +01:00
Carl Johnsen 038e78ad06 The block cache is now always present, as it keeps track of blocks. In case of a cache size 0, every Set() will trigger an evict. 2025-02-27 11:17:11 +01:00
Carl Johnsen bdfdc7e92a MemoryCache evict now correctly handles the ArrayPool 2025-02-27 10:54:47 +01:00
Kenneth Skovhede 11a27042bc Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider 2025-02-26 19:25:46 +01:00
Carl Johnsen 7109155127 Additional block count reporting of the block manager 2025-02-26 16:11:13 +01:00
Carl Johnsen 0e6e1bcbd8 Currently, the block cache cannot compact while using the arraypool, as this doesn't properly return the buffers to the pool 2025-02-26 16:10:51 +01:00
Carl Johnsen 6873162002 Additional internal profiling resolution 2025-02-26 16:09:23 +01:00
Kenneth Skovhede f77e529eb6 Merge commit '2339aeff28adba15442d0be60c56568ae642ad0b' into feature/make-backends-async 2025-02-26 15:23:48 +01:00
Carl Johnsen a49c66bcb5 Added caching of localrestoredatabase data 2025-02-25 17:42:30 +01:00
Carl Johnsen bf3a26ffcd Added more internal profiling timers to the FileProcessor to get more high-resolution profiling 2025-02-25 16:49:46 +01:00
Carl Johnsen e773907eed Changed from allocating a new byte[] buffer in the decompressor to use the Buffers.ArrayPool 2025-02-25 16:45:55 +01:00
Carl Johnsen d7b8d13bc0 VolumeDecryptor and VolumeManager were unnecessarily sending around and keeping track of disposed encrypted volumes 2025-02-25 16:39:28 +01:00
Carl Johnsen 5c7a933722 FileLister did not report its internal profling properly 2025-02-25 16:37:49 +01:00
Carl Johnsen b62a1f7600 Added missing comments in filelister 2025-02-25 16:36:30 +01:00
Carl Johnsen b86794791b Reallocating byte[] buffer takes up too long time if done for each file 2025-02-25 16:35:46 +01:00
Carl Johnsen c5ebf4fa71 Added the restore channel depth option 2025-02-25 16:19:04 +01:00
Kenneth Skovhede 26bbe6a577 Added setup step for source providers.
This enables a fail-early approach, where the remote source loads the initial results.
By storing the `IAsyncEnumerable` it is possible to not perform any additional remote calls, even with the initial probing call.

This makes it possible to detect the absence of sources, so the backup can be aborted if sources are missing.
2025-02-24 12:50:58 +01:00
Kenneth Skovhede 9dfe977d3f Changed logic so the source providers are now logically mounted into the source directory structure.
This fixes the restore issues as all sources will now appear as if they were originally part of the source file system.

The backend implementation has now been simplified so the backends only return names of entries with no path information.  Most backends already do this, but the S3 backends did not, so this was fixed as well.

This also clears up the interfaces, so the backend does not know about the `ISourceProviderEntry`. All mapping is done by the `BackendSourceProvider`, making it simpler to support other backends as sources.
2025-02-21 16:06:55 +01:00
Carl-Johannes JohnsenandGitHub 5aa06f3cd4 Merge pull request #5983 from carljohnsen/performance/restore-parallel-download
Performance/restore parallel download
2025-02-21 14:29:54 +01:00
Kenneth Skovhede 1716d09b51 Fixed source providers for S3, CIFS, and SSH.
Made the SMBShareConnection slightly more robust.

Introduced v2 List API to S3 backend, currently it retains v1 as the default.

Changed S3 backends to not recurse, potentially making smaller listings. This option can be disabled if it breaks things.

Added support for relative paths in the SSH backend.
2025-02-21 13:20:52 +01:00
Kenneth Skovhede 5a4fcaa6d7 Added tool to work with remote sources 2025-02-21 11:51:45 +01:00
Carl Johnsen 9919d86e9b Updated VolumeDownloader to use the new BackendManager.GetDirectAsync() method 2025-02-19 16:12:42 +01:00
Carl Johnsen 2c06820281 Made the BackendManager.GetOperations' decryption methods static and public so the restores VolumeDecryptor can use the same code. 2025-02-19 16:09:32 +01:00
Kenneth Skovhede cf5b4bb24d Added support for Wmic based Windows VSS snapshots.
Refactored code a bit to be easier to understand.
2025-02-19 14:00:14 +01:00
Kenneth Skovhede 73d0ad905f Fixed USN support 2025-02-18 22:12:37 +01:00
Carl Johnsen a0d5096ebc Reworked the "Volume loop" of the restore network to handle Backends themselves, rather than using the BackendManager.
This allows for tighter control over which process performs which action, allowing them more easily to run in parallel.
2025-02-18 09:25:20 +01:00
Carl Johnsen 17e2c0b9cf Added ConfigureAwait(false) 2025-02-18 09:20:28 +01:00
Carl Johnsen ce60b807c8 Added additional profiling logging 2025-02-18 09:18:46 +01:00
Kenneth Skovhede 7031bc57b6 Adding ConfigureAwait(false) to all async enumerations 2025-02-18 09:18:36 +01:00
Carl Johnsen 93756cd74b Whitespace fixes 2025-02-18 09:17:08 +01:00
Carl Johnsen 6600e418a7 Fixed a bug during profile logging 2025-02-18 09:14:17 +01:00
Kenneth Skovhede bb5fd80a29 Implemented support for some backends as sources: SSH, CIFS, and S3 2025-02-17 14:01:08 +01:00
Kenneth Skovhede a621bb3d14 Fixed issue after merge 2025-02-17 08:19:19 +01:00
Kenneth Skovhede 6bbc93b8df Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider 2025-02-16 16:37:12 +01:00
Kenneth SkovhedeandGitHub e76bbc478f Merge pull request #5950 from duplicati/feature/fix-zip-fallback
Handle automatic fallback when reading zip files
2025-02-10 21:06:39 +01:00
Kenneth SkovhedeandGitHub 6693b77d85 Merge pull request #5948 from duplicati/feature/fix-not-storing-updated-timestamps
Fix not storing updated timestamps
2025-02-10 21:05:46 +01:00
Carl Johnsen 043b9230b5 VerifyLocalBlocks opened file in incorrect mode, and the target file may not exist. 2025-02-10 13:44:02 +01:00
Carl Johnsen 82019ea28e Modified VerifyTargetBlocks to not evict block from cache. It is now handled outside, in case of file name retargeting when overwrite is false. 2025-02-10 13:42:27 +01:00
Carl Johnsen 0b3ff33716 Moved retire on exception to final, so regardless of how the FileProcessor exits, it retires the channels. 2025-02-10 12:38:24 +01:00
Carl Johnsen 3b9fc188e1 Retire block request and response on exception in FileProcessor 2025-02-10 12:34:44 +01:00
Carl Johnsen 259322f0d9 CopyOldTargetBlocksToNewTarget was made async 2025-02-10 12:34:16 +01:00
Carl Johnsen 6e2f8156f8 VerifyLocalBlocks should only perform checks when the target differs from the original. 2025-02-10 12:33:45 +01:00