mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-27 16:48:58 +00:00
6bdfdd164a
refactor(ecstore,heal): return the local disk map as an owned read guard (Phase 5 prep) Prerequisite for the Phase 5 disk-registry migration (backlog#939): the disk map cannot move from the process global into the per-instance InstanceContext while callers depend on a `'static` read guard borrowed from the global. Change `local_disk_map_read` to return an owned guard (`OwnedRwLockReadGuard`) via `Arc::read_owned` instead of `RwLockReadGuard<'static, _>`: - ecstore `runtime::sources::local_disk_map_read` now returns `OwnedRwLockReadGuard<..>` (holds an Arc clone of the lock), not a `'static` borrow of `GLOBAL_LOCAL_DISK_MAP`. - heal's forwarding accessor and its callers (which hold the guard across `.await` while clearing/writing per-disk markers) keep identical behavior — the owned guard derefs to the same map, so iteration is unchanged. This decouples the heal crate from the global's `'static` lifetime so a later PR can source the map from the current instance's context. Single-instance behavior is byte-for-byte unchanged; the same read lock is held across the same awaits. Verification: cargo test -p rustfs-heal (201 tests green), cargo clippy -p rustfs-ecstore -p rustfs-heal --all-targets (clean), make pre-commit (pass). Refs: backlog#939 (Phase 5, disk-registry prerequisite)
RustFS ECStore - Erasure Coding Storage
High-performance erasure coding storage engine for RustFS distributed object storage
📖 Documentation
· 🐛 Bug Reports
· 💬 Discussions
📖 Overview
RustFS ECStore provides erasure coding storage capabilities for the RustFS distributed object storage system. For the complete RustFS experience, please visit the main RustFS repository.
✨ Features
- Reed-Solomon erasure coding implementation
- Configurable redundancy levels (N+K schemes)
- Automatic data healing and reconstruction
- Multi-drive support with intelligent placement
- Parallel encoding/decoding for performance
- Efficient disk space utilization
📚 Documentation
For comprehensive documentation, examples, and usage guides, please visit the main RustFS repository.
📄 License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Copyright 2024 RustFS Team
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
RustFS is a trademark of RustFS, Inc.
All other trademarks are the property of their respective owners.
Made with ❤️ by the RustFS Storage Team
