update_status() previously acquired the shared_status write lock on the first line and then called rc::vfs_stats() and rc::core_stats() (blocking ureq HTTP) for every share while holding it. With dir-refresh flooding the rclone RC port, these calls could take seconds, starving all web handler reads and making the portal completely unresponsive. Refactor to a two-phase approach: Phase 1 collects all RC stats with no lock held; Phase 2 applies the results under a short-lived write lock (pure memory writes, microseconds). Lock hold time drops from seconds to microseconds regardless of rclone response latency. Also included in this batch: - vfs_refresh now reads the response body and surfaces partial failures - dir-refresh iterates top-level FUSE subdirs instead of refreshing "/" (rclone does not accept "/" as a valid vfs/refresh target) - Track per-share dirs_ok / dirs_failed counts in DaemonStatus and expose them through the web API Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
No description provided
Languages
Rust
62.4%
Shell
24.5%
HTML
9.6%
CSS
3.5%