Skip to main content

ipfrs_storage/
lib.rs

1//! IPFRS Storage - Block storage and retrieval
2//!
3//! This crate provides the storage layer for IPFRS including:
4//! - Sled, ParityDB, and in-memory block stores
5//! - LRU and tiered caching
6//! - Bloom filter for fast existence checks
7//! - Streaming interface for large blocks
8//! - Content-defined chunking and deduplication
9//! - Transparent block compression (Zstd, Lz4, Snappy)
10//! - Pin management for preventing GC
11//! - Hot/cold tiering with access tracking
12//! - Garbage collection (mark-and-sweep)
13//! - CAR format export/import for backups
14//! - Encryption at rest (ChaCha20-Poly1305, AES-256-GCM)
15//! - Version Control System for differentiable storage (Git for Tensors)
16//! - RAFT consensus protocol for distributed storage
17//! - Network transport abstraction (TCP, QUIC with TLS) for multi-node RAFT clusters
18//! - Cluster coordinator with automatic failover and re-election
19//! - Multi-datacenter support with latency-aware routing and cross-datacenter replication
20//! - Eventual consistency with version vectors and conflict resolution
21//! - GraphQL query interface for flexible metadata querying
22//! - ARM profiler with NEON SIMD optimization and low-power tuning
23//! - Production-grade metrics and observability for monitoring (Prometheus, OpenTelemetry)
24//! - Circuit breaker pattern for fault-tolerant external service calls
25//! - Unified health check system for liveness and readiness monitoring
26//! - TTL support for automatic block expiration
27//! - Advanced retry logic with exponential backoff and jitter
28//! - Optimized S3 multipart uploads for large blocks
29//! - Rate limiting for controlling request rates to backends
30//! - Write coalescing for batching similar writes
31//! - Workload simulation for testing and benchmarking
32//! - Automatic configuration tuning based on workload patterns
33//! - Comprehensive profiling system with comparative analysis and regression detection
34//! - Storage pool manager for multi-backend routing with intelligent load balancing
35//! - Quota management system for per-tenant storage limits and bandwidth control
36//! - Lifecycle policies for automatic data tiering, archival, and expiration
37//! - Predictive prefetching with access pattern learning and adaptive depth control
38//! - Cost analytics and optimization for cloud storage (AWS, Azure, GCP)
39//! - Safe, transactional schema migration framework with rollback support
40
41pub mod block_garbage_collector;
42pub use block_garbage_collector::{
43    BgcBlockRecord, BgcCollectorConfig, BgcCollectorStats, BgcGcPolicy, BgcGcResult,
44    BgcSweepResult, BlockGarbageCollector,
45};
46
47pub mod content_dedup_index;
48pub use content_dedup_index::{
49    ContentDedupConfig, ContentDedupResult, ContentDedupStats, ContentDeduplicationIndex,
50    ContentHash, DedupIndexError,
51};
52
53pub mod block_validator;
54pub use block_validator::{
55    StorageBlockValidator, ValidationReport, ValidationResult, ValidationRule, ValidatorStats,
56};
57
58pub mod block_verifier;
59pub use block_verifier::{
60    BlockRecord, StorageBlockVerifier, VerificationReport, VerificationResult, VerifierStats,
61};
62
63pub mod block_index;
64pub mod block_manifest;
65pub mod block_packer;
66pub mod index_builder;
67pub mod index_recovery;
68pub use index_recovery::{
69    IndexEntry as IrIndexEntry, IndexRecovery, RawBlock, RecoveryConfig, RecoveryStats,
70    RecoveryStatus,
71};
72pub mod metrics_collector;
73pub mod storage_metrics_collector;
74pub use storage_metrics_collector::{
75    AggregatedStats, CollectorConfig, CollectorStats, MetricKind, MetricSample, MetricSeries,
76    StorageMetricsCollector as SmcStorageMetricsCollector, TimeBucket,
77};
78pub mod eviction_policy;
79pub use eviction_policy::{
80    CacheEntry as EvictionCacheEntry, EvictionCandidate, EvictionStrategy,
81    PolicyStats as EvictionPolicyStats, StorageEvictionPolicy,
82};
83pub mod access_logger;
84pub mod access_predictor;
85pub mod analyzer;
86pub mod audit_trail;
87pub mod eviction_simulator;
88pub mod fragmentation_analyzer;
89pub mod heatmap_tracker;
90pub use audit_trail::{
91    AuditEntry, AuditEventType, AuditFilter, AuditTrail, AuditTrailConfig, AuditTrailStats,
92};
93pub mod block_migration_planner;
94pub use block_migration_planner::{
95    BlockMigrationPlanner, BmpBlockMeta, BmpMigrationPlan, BmpPlanStatus, BmpPlannerConfig,
96    BmpPlannerStats, BmpPriorityPolicy,
97};
98pub mod arm_profiler;
99pub mod auto_tuner;
100pub mod batch;
101pub mod block_cache;
102pub mod block_stream;
103pub mod blockstore;
104pub mod bloom;
105pub mod compaction;
106pub mod compaction_advisor;
107pub mod compression_advisor;
108pub mod compression_pipeline;
109pub use compression_pipeline::{
110    CompressionAlgo as CpCompressionAlgo, CompressionError as CpCompressionError,
111    CompressionHint as CpCompressionHint, CompressionResult as CpCompressionResult,
112    PipelineConfig as CpPipelineConfig, PipelineStage as CpPipelineStage,
113    PipelineStats as CpPipelineStats, StorageCompressionPipeline,
114};
115pub mod compression_registry;
116pub use compression_registry::{
117    CodecProfile, CodecRecommendation, CompressionCodec as RegistryCompressionCodec,
118    CompressionRegistryStats, DataCharacteristics, StorageCompressionRegistry,
119};
120pub mod compactor;
121pub use compactor::{
122    CompactionResult as RegionCompactionResult, CompactionState as RegionCompactionState,
123    CompactorConfig as RegionCompactorConfig, CompactorStats as RegionCompactorStats,
124    FragmentationReport as RegionFragmentationReport, StorageCompactor,
125};
126pub mod cache;
127pub mod car;
128pub mod chunk_manager;
129pub mod circuit_breaker;
130pub mod cold_storage;
131pub use cold_storage::{
132    fnv1a_cold, ColdStorageManager, ColdStorageStats, StorageTier as CsStorageTier,
133    TierPolicy as CsTierPolicy, TieredBlock as CsTieredBlock,
134};
135pub mod cluster;
136pub mod coalesce;
137#[cfg(feature = "compression")]
138pub mod compression;
139pub mod corruption_repair;
140pub use corruption_repair::{
141    BlockWithParity, CorruptionRepairer, CorruptionReport, CorruptionType, RepairAction,
142    RepairConfig, RepairStats,
143};
144pub mod cost_analytics;
145pub mod cost_estimator;
146pub mod data_integrity_auditor;
147pub use data_integrity_auditor::{
148    compute_adler32 as dia_compute_adler32, compute_checksum as dia_compute_checksum,
149    compute_crc32 as dia_compute_crc32, compute_fnv_xor64 as dia_compute_fnv_xor64, AuditConfig,
150    AuditResult, AuditorStats, BlockChecksum, ChecksumAlgo, DataIntegrityAuditor, RepairRecord,
151};
152pub mod data_integrity_checker;
153pub use data_integrity_checker::{
154    BlockRecord as DicBlockRecord, DataIntegrityChecker, IntegrityCheckerConfig, IntegrityReport,
155    IntegrityStats, IntegrityStatus,
156};
157pub mod datacenter;
158pub mod dedup;
159pub mod dedup_tracker;
160pub mod deduplication_pipeline;
161pub use deduplication_pipeline::{
162    BlockEntry, DedupPipelineStats, DedupResult as DpDedupResult, DedupStage,
163    DeduplicationPipeline, PipelineConfig,
164};
165pub mod diagnostics;
166#[cfg(feature = "encryption")]
167pub mod encryption;
168pub mod eventual_consistency;
169pub mod exporters;
170pub mod garbage_collector;
171#[cfg(feature = "gateway")]
172pub mod gateway;
173pub use garbage_collector::{
174    GcError, GcObject, GcObjectId, GcPhase, StorageGarbageCollector, StorageGcConfig, StorageGcRun,
175    StorageGcStats,
176};
177
178pub mod gc;
179pub mod gc_planner;
180pub mod gradient;
181#[cfg(feature = "graphql")]
182pub mod graphql;
183pub mod health;
184#[cfg(feature = "sled-backend")]
185pub mod helpers;
186pub mod integrity_checker;
187pub mod integrity_scanner;
188// pub mod incremental_backup;  // Module file not found - commented out
189pub mod lifecycle;
190pub mod memory;
191pub mod metrics;
192pub mod migration;
193#[cfg(feature = "mmap")]
194pub mod mmap;
195pub mod otel;
196#[cfg(feature = "parity-db-backend")]
197pub mod paritydb;
198pub mod pinning;
199pub mod pool;
200pub mod prefetch;
201pub mod profiler;
202pub mod profiling;
203pub mod prometheus;
204pub mod query_optimizer;
205pub mod quota;
206pub mod quota_enforcer;
207pub mod read_ahead;
208pub use quota_enforcer::{
209    NamespaceQuota as EnforcerNamespaceQuota, QuotaEnforcerConfig, QuotaEnforcerStats, QuotaLevel,
210    StorageQuotaEnforcer,
211};
212pub mod quota_manager;
213pub mod raft;
214pub mod rate_limit;
215pub mod replication;
216pub mod replication_tracker;
217pub mod retention_engine;
218pub mod retention_policy;
219pub mod retry;
220#[cfg(feature = "s3")]
221pub mod s3;
222pub mod safetensors;
223pub mod snapshot_diff;
224pub use snapshot_diff::{
225    DiffEntry, DiffKind, DiffStats as SnapshotDiffStats, SnapshotDiffResult,
226    SnapshotEntry as SnapshotDiffEntry, StorageSnapshotDiff,
227};
228pub mod snapshot_differ;
229pub mod snapshot_manager;
230pub use snapshot_manager::{
231    fnv1a_64 as snapshot_fnv1a_64,
232    LegacySnapshot,
233    LegacySnapshotDiff as ManagerSnapshotDiff,
234    LegacySnapshotEntry,
235    // Legacy block-snapshot API
236    LegacyStorageSnapshotManager,
237    SnapshotConfig,
238    SnapshotDelta,
239    SnapshotEntry as SsmSnapshotEntry,
240    SnapshotError,
241    SnapshotId,
242    SnapshotKind,
243    SnapshotManagerStats,
244    SnapshotState,
245    SnapshotStats as SsmSnapshotStats,
246    SsmSnapshot,
247    StorageSnapshot,
248    // New production-grade API
249    StorageSnapshotManager,
250    StorageState as SsmStorageState,
251};
252
253pub mod streaming;
254pub mod tier_migration_engine;
255pub use tier_migration_engine::{
256    BlockMeta as TmBlockMeta, MigrationAction as TmMigrationAction,
257    MigrationReason as TmMigrationReason, MigrationResult as TmMigrationResult, MigratorConfig,
258    MigratorStats, StorageTier as TmStorageTier, StorageTierMigrator, TierPolicy as TmTierPolicy,
259};
260
261pub mod content_addressable_cache;
262pub mod tier_balancer;
263pub mod tier_manager;
264pub mod tier_migrator;
265pub mod tiering;
266pub mod traits;
267pub mod transport;
268pub mod ttl;
269pub mod utils;
270pub mod vcs;
271pub mod wal;
272pub mod workload;
273pub mod write_buffer;
274pub mod write_journal;
275pub use content_addressable_cache::{
276    CacheConfig as CacCacheConfig, CacheEntry as CacCacheEntry, CacheError,
277    CacheStats as CacCacheStats, ContentAddressableCache, EvictionPolicy as CacEvictionPolicy,
278    LruNode,
279};
280
281pub mod content_addressed_cache_v2;
282pub use content_addressed_cache_v2::{
283    Cac2CacheConfig, Cac2CacheStats, Cac2Cid, Cac2Entry, Cac2EvictionRecord, Cac2Tier,
284    ContentAddressedCacheV2,
285};
286
287pub mod hotspot_detector;
288
289pub use access_predictor::{
290    AccessEvent, AccessPattern as PredictorAccessPattern, PredictionResult, PredictorStats,
291    StorageAccessPredictor,
292};
293pub use analyzer::{
294    Category, Difficulty, OperationStats, OptimizationRecommendation, Priority, SizeDistribution,
295    StorageAnalysis, StorageAnalyzer, WorkloadCharacterization, WorkloadType,
296};
297pub use arm_profiler::{
298    hash_block, ArmFeatures, ArmPerfCounter, ArmPerfReport, LowPowerBatcher, PowerProfile,
299    PowerStats,
300};
301pub use auto_tuner::{
302    AutoTuner, AutoTunerConfig, TuningPresets, TuningRecommendation, TuningReport,
303};
304pub use batch::{batch_delete, batch_get, batch_has, batch_put, BatchConfig, BatchResult};
305pub use block_index::{
306    BlockIndexEntry, BlockIndexStats, IndexEntry, IndexKey, IndexQuery, IndexStats,
307    SecondaryBlockIndex, StorageBlockIndex,
308};
309pub use block_manifest::{
310    fnv1a, ManifestEntry, ManifestFilter, ManifestStats, StorageBlockManifest,
311};
312pub use block_packer::{
313    fnv1a as packer_fnv1a, Pack, PackEntry, PackerConfig, PackerStats, StorageBlockPacker,
314};
315pub use block_stream::{
316    BlockChunk, BlockStreamIterator, BlockStreamState, StreamConfig as BlockStreamConfig,
317    StreamStats as BlockStreamStats,
318};
319#[cfg(feature = "sled-backend")]
320pub use blockstore::SledBlockStore;
321pub use blockstore::{BlockStoreConfig, DeduplicationStats, DeduplicationStatsSnapshot};
322pub use bloom::{
323    BloomBlockStore, BloomConfig, BloomFilter, BloomFilterConfig, BloomSnapshot, BloomStats,
324    CidBloomFilter,
325};
326pub use cache::{
327    BlockCache, CacheConfig, CacheStats, CacheStatsSnapshot, CachedBlockStore, LegacyCacheStats,
328    TieredBlockCache, TieredCacheStats, TieredCachedBlockStore,
329};
330pub use car::{
331    export_to_car, import_from_car, CarHeader, CarReadStats, CarReader, CarWriteStats, CarWriter,
332};
333pub use circuit_breaker::{CircuitBreaker, CircuitState, CircuitStats};
334pub use cluster::{ClusterConfig, ClusterCoordinator, ClusterStats, NodeHealth, NodeInfo};
335pub use coalesce::{CoalesceConfig, CoalesceStats, CoalescingBlockStore};
336pub use compaction::{CompactionConfig, CompactionScheduler};
337#[cfg(feature = "compression")]
338pub use compression::{
339    compress_block, compress_block_with_algorithm, compress_block_with_level,
340    compress_block_with_stats, decompress_block, BlockCompressStats, BlockCompressionStats,
341    CompressionAlgorithm, CompressionBlockStore, CompressionConfig, MAGIC_LZ4, MAGIC_RAW,
342    MAGIC_SNAPPY, MAGIC_ZSTD, MIN_COMPRESS_SIZE,
343};
344pub use cost_analytics::{
345    CloudProvider, CostAnalyzer, CostBreakdown, CostProjection, CostTier, TierCostModel,
346    TierOption, TierRecommendation,
347};
348pub use datacenter::{
349    CrossDcStats, Datacenter, DatacenterId, LatencyAwareSelector, MultiDatacenterCoordinator,
350    Region, ReplicationPolicy,
351};
352pub use dedup::{ChunkingConfig, DedupBlockStore, DedupStats};
353pub use diagnostics::{
354    BenchmarkComparison, DiagnosticsReport, HealthMetrics, PerformanceMetrics, StorageDiagnostics,
355};
356#[cfg(feature = "encryption")]
357pub use encryption::{Cipher, EncryptedBlockStore, EncryptionConfig, EncryptionKey};
358pub use eventual_consistency::{
359    ConflictResolution, ConsistencyLevel, EventualStore, EventualStoreStats, VersionVector,
360    VersionedValue,
361};
362pub use exporters::{BatchExporter, ExportFormat, MetricExporter};
363#[cfg(feature = "gateway")]
364pub use gateway::{GatewayBlockStore, GatewayConfig, HybridBlockStore};
365#[cfg(feature = "sled-backend")]
366pub use gc::SledSnapshotPinRegistry;
367pub use gc::{
368    snapshot_pin_id, GarbageCollector, GcConfig, GcPolicy, GcResult, GcScheduler, GcStats,
369    GcStatsSnapshot, OrphanGarbageCollector, OrphanGcConfig, OrphanGcResult, SnapshotPinRegistry,
370};
371pub use gc_planner::{GCCandidate, GCConfig, GCPlan, GCPlannerStats, StorageGCPlanner};
372pub use gradient::{
373    CompressionStats, DeltaEncoder, GradientData, GradientStore, ProvenanceMetadata,
374};
375#[cfg(feature = "graphql")]
376pub use graphql::{
377    create_schema, BlockConnection, BlockFilter, BlockMetadata, BlockQuerySchema, BlockStats,
378    QueryRoot, SortField, SortOrder,
379};
380pub use health::{
381    AggregateHealthResult, DetailedHealthStatus, HealthCheck, HealthCheckResult, HealthChecker,
382    HealthStatus, SimpleHealthCheck,
383};
384pub mod health_monitor;
385pub use health_monitor::{
386    HealthMonitorConfig, HealthMonitorStats, MonitorHealthCheck, MonitorHealthStatus,
387    StorageHealthMonitor,
388};
389
390pub mod storage_health_monitor;
391#[cfg(all(feature = "sled-backend", feature = "encryption"))]
392pub use helpers::encrypted_production_stack;
393#[cfg(feature = "sled-backend")]
394pub use helpers::{
395    blockchain_stack, cache_stack, cdn_edge_stack, coalescing_memory_stack,
396    deduplicated_production_stack, development_stack, embedded_stack, ingestion_stack, iot_stack,
397    media_streaming_stack, memory_stack, ml_model_stack, monitored_production_stack,
398    production_stack, read_optimized_stack, resilient_stack, testing_stack, ttl_production_stack,
399    write_optimized_stack, StorageStackBuilder,
400};
401#[cfg(all(feature = "sled-backend", feature = "compression"))]
402pub use helpers::{compressed_production_stack, ultimate_production_stack};
403#[cfg(all(feature = "sled-backend", feature = "compression"))]
404pub use helpers::{distributed_fs_stack, scientific_archive_stack};
405pub use storage_health_monitor::{
406    ShmAlert, ShmCategory, ShmHealthSnapshot, ShmMonitorConfig, ShmMonitorStats, ShmProbe,
407    ShmProbeId, ShmSeverity, ShmStatus, StorageHealthMonitor as ShmStorageHealthMonitor,
408};
409// pub use incremental_backup::{BackupStats, BackupType, IncrementalBackup, Snapshot};  // Module not found
410pub use lifecycle::{
411    BlockMetadata as LifecycleBlockMetadata, LifecycleAction, LifecycleActionResult,
412    LifecycleCondition, LifecyclePolicyConfig, LifecyclePolicyManager, LifecycleRule,
413    LifecycleStatsSnapshot, StorageTier,
414};
415pub use memory::MemoryBlockStore;
416pub use metrics::{MetricsBlockStore, StorageMetrics};
417pub use migration::{
418    estimate_migration, migrate_storage, migrate_storage_batched, migrate_storage_verified,
419    migrate_storage_with_progress, validate_migration, BlockMigrationStats, MigrationConfig,
420    MigrationEstimate, StorageMigrator,
421};
422pub use migration::{
423    MigrationError, MigrationPlan, MigrationRecord, MigrationRunner, MigrationStats,
424    MigrationStatsSnapshot, MigrationStatus, MigrationStep, SchemaVersion,
425};
426#[cfg(feature = "mmap")]
427pub use mmap::{MmapBlockStore, MmapConfig};
428pub use otel::OtelBlockStore;
429#[cfg(feature = "parity-db-backend")]
430pub use paritydb::{ParityDbBlockStore, ParityDbConfig, ParityDbPreset};
431pub use pinning::{PinInfo, PinManager, PinSet, PinStatsSnapshot, PinType};
432pub use pool::{BackendConfig, BackendId, PoolConfig, PoolStats, RoutingStrategy, StoragePool};
433pub use prefetch::{
434    AccessPattern as PrefetchAccessPattern, PredictivePrefetcher, PrefetchConfig,
435    PrefetchPrediction, PrefetchStatsSnapshot,
436};
437pub use profiler::{
438    ComparativeProfiler, ComparisonReport, ProfileConfig, ProfileReport, RegressionDetector,
439    RegressionResult, StorageProfiler,
440};
441pub use profiling::{BatchProfiler, LatencyHistogram, PerformanceProfiler, ThroughputTracker};
442pub use prometheus::{PrometheusExporter, PrometheusExporterBuilder};
443pub use query_optimizer::{
444    OptimizerConfig, QueryLogEntry, QueryOptimizer, QueryPlan, QueryStrategy, Recommendation,
445    RecommendationCategory, RecommendationPriority,
446};
447pub use quota::{
448    QuotaBlockStore, QuotaConfig, QuotaManager, QuotaManagerConfig, QuotaReport, QuotaStatus,
449    QuotaUsageSnapshot, TenantId, ViolationType,
450};
451pub use read_ahead::{PrefetchHint, ReadAheadPattern, ReadAheadScheduler, ReadAheadStats};
452pub mod quota_registry;
453pub use chunk_manager::{
454    fnv1a_u64 as chunk_fnv1a_u64, Chunk, ChunkManagerStats, ChunkState, ChunkedObject,
455    StorageChunkManager,
456};
457pub use fragmentation_analyzer::{
458    CompactionCandidate, FragmentationReport, StorageExtent, StorageFragmentationAnalyzer,
459};
460pub use heatmap_tracker::{HeatBucket, HeatEntry, HeatmapStats, StorageHeatmapTracker};
461pub use quota_registry::{
462    QuotaEntry, QuotaKind, QuotaViolation, RegistryStats, StorageQuotaRegistry,
463    ViolationType as RegistryViolationType,
464};
465pub use raft::{
466    AppendEntriesRequest, AppendEntriesResponse, Command, LogEntry, LogIndex, NodeId, NodeState,
467    RaftConfig, RaftNode, RaftStats, RequestVoteRequest, RequestVoteResponse, Term,
468};
469pub use rate_limit::{RateLimitAlgorithm, RateLimitConfig, RateLimitStats, RateLimiter};
470pub use replication::{
471    ConflictStrategy, ReplicationManager, ReplicationState, Replicator, SyncResult, SyncStrategy,
472};
473pub use replication_tracker::{
474    BlockReplicationEntry, ReplicaLocation, ReplicationStats as BlockReplicationStats,
475    ReplicationStatus, ReplicationTask, StorageReplicationTracker,
476};
477pub use retention_policy::{
478    BlockRecord as RetentionBlockRecord, PolicyDecision, RetentionAction, RetentionEntry,
479    RetentionPolicyStats, RetentionRule, RetentionStats, StorageRetentionPolicy,
480    StorageRetentionPolicyEngine, TickRetentionAction, TickRetentionRule,
481};
482pub use retry::{BackoffStrategy, JitterType, RetryPolicy, RetryStats, Retryable};
483#[cfg(feature = "s3")]
484pub use s3::{S3BlockStore, S3Config};
485pub use safetensors::{
486    ChunkConfig, ChunkedTensor, DType, ModelStats, SafetensorsHeader, SafetensorsManifest,
487    SafetensorsStore, TensorInfo,
488};
489pub use streaming::{
490    BlockReader, ByteRange, PartialBlock, StreamConfig, StreamingBlockStore, StreamingWriter,
491};
492pub use tier_balancer::{BalancerStats, MoveTask, StorageTierBalancer, TierKind, TierStatus};
493pub use tier_manager::{
494    BlockTierRecord, StorageTier as TierManagerStorageTier, StorageTierManager, TierPolicy,
495    TierStats, TierStatsSnapshot as TierManagerStatsSnapshot, TierTransition,
496};
497pub use tiering::{AccessStats, AccessTracker, Tier, TierConfig, TierStatsSnapshot, TieredStore};
498pub use traits::BlockStore as BlockStoreTrait;
499#[cfg(feature = "quic")]
500pub use transport::QuicTransport;
501pub use transport::{
502    InMemoryTransport, Message as TransportMessage, TcpTransport, Transport, TransportConfig,
503};
504pub use ttl::{TtlBlockStore, TtlCleanupResult, TtlConfig, TtlStats};
505pub use utils::{
506    compute_cid, compute_total_size, create_block, create_blocks_batch, deduplicate_blocks,
507    estimate_compression_ratio, extract_cids, filter_blocks_by_size, find_duplicates,
508    generate_compressible_blocks, generate_compressible_data, generate_dedup_dataset,
509    generate_incompressible_data, generate_mixed_size_blocks, generate_pattern_blocks,
510    generate_random_block, generate_random_blocks, group_blocks_by_size, sample_blocks,
511    sort_blocks_by_size_asc, sort_blocks_by_size_desc, validate_block_integrity,
512    validate_blocks_batch, BlockStatistics,
513};
514pub use vcs::{
515    Author, Commit, CommitBuilder, MergeResult, MergeStrategy, Ref, RefType, VersionControl,
516};
517pub use wal::{
518    fnv1a_32, StorageWalEntry, StorageWalStats, StorageWriteAheadLog, WalConfig, WalEntry,
519    WalEntryKind, WalError, WalOp, WalStats, WalStatsSnapshot, WriteAheadLog,
520};
521pub use workload::{
522    OperationMix, SizeDistribution as WorkloadSizeDistribution, WorkloadConfig, WorkloadPattern,
523    WorkloadPresets, WorkloadResult, WorkloadSimulator,
524};
525pub use write_buffer::{
526    BufferConfig, BufferedEntry, FlushResult, StorageWriteAheadBuffer, WriteOp,
527};
528pub use write_journal::{
529    fnv1a as journal_fnv1a, JournalCursor, JournalEntry, JournalEntryKind, JournalStats,
530    StorageWriteJournal,
531};
532pub mod object_store;
533pub use hotspot_detector::{
534    AccessEvent as HotspotAccessEvent, AccessType, BlockAccessRecord, DetectorConfig,
535    HotspotDetectorStats, HotspotScore, StorageHotspotDetector,
536};
537pub use object_store::{ObjectStoreStats, ObjectVersion, StorageObjectStore, StoredObject};
538
539pub mod blockstore_sharding;
540pub use blockstore_sharding::{
541    BlockRecord as BssBlockRecord, BlockStoreGlobalStats, BlockStoreSharding, ShardKey,
542    ShardMetrics, ShardingConfig, ShardingError,
543};
544
545pub mod migration_planner;
546pub use migration_planner::{
547    MigrationDirection, MigrationRecord as PlannerMigrationRecord,
548    MigrationStatus as PlannerMigrationStatus, MigrationTask, PlannerStats,
549    StorageMigrationPlanner, StorageTier as MigrationStorageTier,
550};
551
552pub mod transaction_log;
553pub use transaction_log::{
554    StorageTransactionLog, Transaction, TransactionId, TransactionStatus, TxError, TxOperation,
555    TxStats,
556};
557
558pub mod block_compactor;
559pub use block_compactor::{
560    BlockFragment, CompactionPlan, CompactionSegment, CompactorConfig, CompactorStats,
561    StorageBlockCompactor,
562};
563
564pub mod access_log;
565pub use access_log::{
566    AccessLogEntry, AccessLogStats, AccessPattern as LogAccessPattern, LogConfig, LogOperation,
567    StorageAccessLog,
568};
569
570pub mod access_tracker;
571pub use access_tracker::{
572    AccessRecord, AccessTracker as AtAccessTracker, TrackerConfig, TrackerStats,
573};
574
575pub mod metadata_index;
576pub use metadata_index::{
577    MetadataField, MetadataIndexEntry, MetadataIndexStats, MetadataQuery, MetadataQueryResult,
578    MetadataSortField, StorageMetadataIndex,
579};
580
581pub mod replication_manager;
582pub use replication_manager::{
583    BlockReplicas, ReplicaInfo, ReplicaNode, ReplicationConfig as ReplicationManagerConfig,
584    ReplicationError, ReplicationManagerStats, ReplicationState as ReplicaReplicationState,
585    RmReplicaLocation, RmReplicationPolicy, RmReplicationStats, RmReplicationStatus,
586    StorageReplicationManager,
587};
588
589pub mod io_scheduler;
590pub use io_scheduler::{
591    IODirection, IOPriority, IORequest, IOSchedulerStats, SchedulerConfig, StorageIOScheduler,
592};
593
594pub mod encryption_layer;
595pub use encryption_layer::{
596    CipherMode, EncryptedBlock, EncryptionLayerConfig, EncryptionLayerStats, StorageEncryptionLayer,
597};
598
599pub mod storage_encryption_layer;
600pub use storage_encryption_layer::{
601    SelCipher, SelEncryptedBlockRecord, SelEncryptionConfig, SelEncryptionStats,
602    StorageEncryptionLayer as SelStorageEncryptionLayer,
603};
604
605pub mod event_log;
606pub use event_log::{EventLogStats, EventSeverity, EventType, StorageEvent, StorageEventLog};
607
608pub mod storage_benchmark;
609pub use storage_benchmark::{
610    BenchmarkConfig, BenchmarkOp, BenchmarkResult, BenchmarkStats, LatencySample, StorageBenchmark,
611};
612
613pub mod block_cache_manager;
614pub use block_cache_manager::{
615    BcmCacheConfig, BcmCacheStats, BcmCachedBlock, BlockCacheManager, CacheTier, EvictionPolicy,
616};
617
618pub mod storage_quota_manager;
619pub use storage_quota_manager::{
620    ObjectRecord, QuotaError, QuotaNamespace, QuotaPolicy, QuotaStats, SqmEvictionStrategy,
621    SqmQuotaEntry, SqmQuotaViolation, StorageQuotaManager,
622};
623
624pub mod content_addressed_archive;
625pub use content_addressed_archive::{
626    compute_cid as caa_compute_cid, ArchiveBlock, ArchiveConfig, ArchiveEntry, ArchiveError,
627    ArchiveIndex, ArchiveStats, ContentAddressedArchive,
628};
629
630pub mod storage_event_log;
631pub use storage_event_log::{
632    event_checksum,
633    event_cid,
634    sel_fnv1a_64,
635    EventAggregation,
636    EventFilter,
637    // New production-grade API
638    EventId,
639    EventLogConfig,
640    EventLogError,
641    EventQuery,
642    RetentionPolicy,
643    SelEventLogStats,
644    SelEventType,
645    SelStorageEvent,
646    SelStorageEventLog,
647    // Legacy shim API (previous StorageEventKind-based interface)
648    StorageEventKind,
649};
650
651pub mod object_lifecycle;
652pub use object_lifecycle::{
653    LifecycleError, ManagedObject, ObjectLifecycleManager, OlmLifecycleAction, OlmLifecycleState,
654    OlmLifecycleStats, OlmRetentionRule,
655};
656
657pub mod prefetch_engine;
658pub use prefetch_engine::{
659    CoAccessPair, PeAccessEvent, PeAccessPattern, PeAccessType, PeConfig, PePrefetchHint,
660    PePrefetchStats, StoragePrefetchEngine,
661};
662
663pub mod block_fragment_store;
664pub use block_fragment_store::{
665    bfs_fnv1a_32, AssembledBlock, BfsFragment, BlockFragmentStore, FragmentError, FragmentId,
666    FragmentSet, FragmentSetState, FragmentStats,
667};
668
669pub mod mirror_sync;
670pub use mirror_sync::{
671    fnv1a_64 as mirror_sync_fnv1a_64, ConflictType, MirrorId, MirrorSyncStats,
672    MsConflictResolution, MsSyncResult, StorageMirrorSync, SyncConflict, SyncItem, SyncOperation,
673    SyncPlan,
674};
675
676pub mod checksum_engine;
677pub use checksum_engine::{
678    adler32 as ce_adler32, blake3_256_simple as ce_blake3_256_simple, crc32_iso as ce_crc32_iso,
679    djb2 as ce_djb2, fnv1a_64 as ce_fnv1a_64, murmur3_32 as ce_murmur3_32,
680    xxhash64_simple as ce_xxhash64_simple, CeVerificationResult, Checksum, ChecksumAlgorithm,
681    ChecksumRecord as CeChecksumRecord, ChecksumStats, StorageChecksumEngine,
682};
683
684pub mod wal_replay;
685pub use wal_replay::{
686    ReplayPolicy as WrReplayPolicy, ReplayState as WrReplayState, ReplayStats as WrReplayStats,
687    StorageWALReplay, WalEntry as WrWalEntry, WalEntryType as WrWalEntryType,
688    WalStats as WrWalStats,
689};
690
691pub mod block_access_optimizer;
692pub use block_access_optimizer::{
693    AccessEvent as BaoAccessEvent, AccessPattern as BaoAccessPattern, BlockAccessOptimizer,
694    CoAccessPair as BaoCoAccessPair, OptimizerConfig as BaoOptimizerConfig, OptimizerStats,
695    PrefetchRecommendation,
696};
697
698pub mod block_index_rebuild;
699pub use block_index_rebuild::{
700    BlockIndexRebuild, BlockScanEntry, IndexEntry as BirIndexEntry, RebuildConfig, RebuildPhase,
701    RebuildProgress, RebuildStats,
702};
703
704pub mod object_version_store;
705pub use object_version_store::{
706    ObjectVersionStore, OvsGcPolicy, OvsObjectVersion, VersionBranch, VersionQuery,
707    VersionStoreConfig, VsError, VsStats,
708};
709
710pub mod merkle_proof_verifier;
711pub use merkle_proof_verifier::{
712    MerkleHash, MerkleLeaf, MerkleProof, MerkleProofVerifier, ProofStep,
713    TreeStats as MerkleTreeStats, UpdateProof as MerkleUpdateProof,
714    VerifierError as MerkleVerifierError,
715};
716
717pub mod storage_shard_balancer;
718pub use storage_shard_balancer::{
719    fnv1a_64 as ssb_fnv1a_64, xorshift64 as ssb_xorshift64, BalancerConfig, BalancerError,
720    RebalanceOp, RebalancePolicy, ShardAssignment, ShardNode, SsbBalancerStats,
721    StorageShardBalancer,
722};
723
724pub mod storage_quota_enforcer;
725pub use storage_quota_enforcer::{
726    EnforcementPolicy, EnforcerConfig, GrowthForecast, NamespaceId, QuotaLimit, QuotaUsage,
727    QuotaViolation as SqeQuotaViolation, SqeStorageQuotaEnforcer, UsageSample, ViolationKind,
728};
729
730pub mod block_deduplicator;
731pub use block_deduplicator::{
732    fnv1a_64 as bdd_fnv1a_64, BlockDeduplicator, Chunk as BddChunk, ChunkHash, ChunkRef,
733    ChunkingConfig as BddChunkingConfig, DeduplicationStats as BddDeduplicationStats,
734    DeduplicatorError, ObjectManifest,
735};
736
737pub mod object_storage_tiering;
738pub use object_storage_tiering::{
739    ObjectStorageTiering, OstStorageTier, OstTierConfig, OstTierPolicy, OstTierTransition,
740    TieredObject, TieringError, TieringStats,
741};
742
743pub mod write_ahead_log;
744pub use write_ahead_log::{
745    fnv1a_64 as wal2_fnv1a_64, RecoveryResult, Transaction as WalTransaction, TxState,
746    WalConfig as WalWalConfig, WalEntry as WalWalEntry, WalError as WalWalError, WalOpType,
747    WalStats as WalWalStats, WalWriteAheadLog, WAL_MAGIC,
748};
749
750pub mod storage_compression_pipeline;
751pub use storage_compression_pipeline::{
752    delta_decode, delta_encode, fnv1a_64 as scp_fnv1a_64, lz77_decode, lz77_encode, rle_decode,
753    rle_encode, xor_transform, CompressedBlock, CompressionStage, ScpCompressionAlgorithm,
754    ScpPipelineConfig, ScpPipelineError, ScpPipelineStats, ScpStorageCompressionPipeline,
755};
756
757pub mod storage_access_controller;
758pub use storage_access_controller::{
759    AccessDecision, AclConfig, AclError, AclStats, Permission, PolicyEffect, ResourcePolicy,
760    SacAuditEntry, SacRole, StorageAccessController, SubjectAttributes,
761};
762
763pub mod object_integrity_checker;
764pub use object_integrity_checker::{
765    CheckerConfig, CheckerError, CheckerStats, IntegrityHash, IntegrityLevel,
766    ObjectIntegrityChecker, OicIntegrityStatus, OicObjectRecord, OicVerificationResult,
767};
768
769pub mod storage_replication_manager;
770pub use storage_replication_manager::{
771    ReplicaTarget as SrmReplicaTargetDirect, ReplicationPolicy as SrmReplicationPolicyDirect,
772    SrmError as SrmReplicationError, SrmReplicaTarget, SrmReplicationConfig, SrmReplicationOp,
773    SrmReplicationPolicy, SrmReplicationStats,
774    StorageReplicationManager as SrmStorageReplicationManager,
775};
776
777pub mod storage_query_planner;
778pub use storage_query_planner::{
779    SqpCostModel, SqpPlanStep, SqpPlannerConfig, SqpPlannerStats, SqpQuery, SqpQueryPlan,
780    StorageQueryPlanner,
781};
782
783pub mod storage_snapshot_manager;
784pub use storage_snapshot_manager::{
785    fnv1a_64 as ssm_fnv1a_64,
786    CoWMapping,
787    Page,
788    PageId,
789    SnapshotConfig as CowSnapshotConfig,
790    SnapshotDiff as CowSnapshotDiff,
791    SnapshotError as CowSnapshotError,
792    SnapshotId as CowSnapshotId,
793    SnapshotMetadata,
794    SnapshotStats as CowSnapshotStats,
795    // Collisions with snapshot_manager exports — use Cow* prefix:
796    StorageSnapshotManager as CowStorageSnapshotManager,
797};