Skip to content

Conversation

@markovejnovic
Copy link
Collaborator

No description provided.

@mesa-dot-dev
Copy link

mesa-dot-dev bot commented Feb 10, 2026

Mesa Description

This pull request introduces a fundamental architectural overhaul of the filesystem layer, replacing the synchronous inode cache with a high-performance, asynchronous implementation. This change significantly improves concurrency and scalability by allowing multiple filesystem operations to proceed in parallel without blocking on I/O.

The core of this effort is the new AsyncICache, a concurrent, thread-safe inode cache built on scc::HashMap. It introduces the IcbResolver trait, which allows inode attributes to be fetched and populated on-demand. This design coalesces concurrent requests for the same inode, preventing redundant lookups and improving efficiency.

To support this new caching model, the existing MesaFS has been refactored. Common logic for managing nested filesystems has been extracted into a new, generic CompositeFs struct. This simplifies the OrgFs and RepoFs implementations, which now primarily define their specific resolving logic (OrgResolver, RepoResolver) while delegating common filesystem operations to CompositeFs.

Key changes include:

  • New Async Inode Cache (AsyncICache): Replaces the old synchronous ICache with a fully concurrent, lock-free implementation.
  • Resolver Pattern (IcbResolver): Decouples the cache from the data source, enabling asynchronous, on-demand population of inode data.
  • Composite Filesystem (CompositeFs): A new generic component that abstracts the logic for composing multiple child filesystems, simplifying MesaFS, OrgFs, and RepoFs.
  • Thread-Safe ID Generation: Both InodeFactory and the new FileTable now use atomic counters for safe, concurrent inode and file handle allocation.
  • Removed Local Filesystem: The unused local.rs implementation has been deleted.
  • New Development Guidelines: Added CLAUDE.md to document Rust development conventions and best practices.

Description generated by Mesa. Update settings

@markovejnovic markovejnovic force-pushed the marko/mes-710-async-icache branch from 3482369 to 9f3fd04 Compare February 10, 2026 18:28
@markovejnovic markovejnovic force-pushed the marko/mes-710-async-icache branch from 9f3fd04 to 4f222d5 Compare February 10, 2026 18:29
Fix all clippy warnings and dead code warnings introduced during the
async icache migration (Tasks 1-7). Zero warnings from cargo clippy.
Also includes prerequisite: make AsyncICache::contains synchronous
and add contains_resolved method.
Remove unused methods, types, and files accumulated during the
readdir-icache-caching refactoring — recoverable from git history.
Use `name = "Struct::method"` so indicatif spinners show the owning
type, not just the bare function name.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant