diff --git a/AGENTS.md b/AGENTS.md index ad3ad4b..cb75138 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3052,6 +3052,143 @@ impl Compressor { } ``` +### Previous Versions Methods ⭐⭐⭐⭐⭐ (NEW) + +| Method | Purpose | Implementation | +|--------|---------|----------------| +| `list_previous_versions()` | Enumerate snapshot versions | Scan .snapshots dir + GMT token conversion | +| `open_previous_version()` | Open file from snapshot | Match GMT token to snapshot | +| `restore_previous_version()` | Restore from snapshot | Call restore_snapshot() | + +**GMT Token Format**: `@GMT-YYYY.MM.DD-HH.MM.SS` (SMB shadow copy standard) + +### 测试验证 ✅ + +```bash +cargo build -p markbase-core --features smb-server # ✅ 0 error +cargo test -p markbase-core --lib --features smb-server # ✅ 229 passed, 0 failed +``` + +### 相关文件 + +**新增文件**: +``` +markbase-core/src/vfs/compression.rs (134 lines) + ├── Compressor struct + ├── compress/decompress methods + ├── compress_file/decompress_file utilities + ├── detect_compression extension check + └── get_decompressed_size helper +``` + +**修改文件**: +``` +markbase-core/src/vfs/mod.rs (+72 lines) + ├── VfsSnapshotInfo struct + ├── VfsQuota/VfsQuotaUsage structs + ├── VfsCompression/VfsCompressionConfig types + ├── VfsPreviousVersion struct (NEW) + └── Snapshot/Quota/Previous versions trait methods + +markbase-core/src/vfs/local_fs.rs (+193 lines) + ├── Snapshot implementation (copy-on-write) + ├── Quota implementation (JSON metadata) + ├── Previous versions implementation (NEW) + └── Helper methods (copy_dir_recursive, calculate_size, count_files, systemtime_to_gmt_token) + +markbase-core/Cargo.toml (+1 line) + └── zstd = "0.13" +``` + +### ZFS SMB Feature Comparison - Complete ⭐⭐⭐⭐⭐ + +| Feature | ZFS SMB | MarkBase SMB | Status | +|---------|---------|--------------|--------| +| **Snapshots** | ✅ Native ZFS | ✅ VFS layer | ✅ Complete | +| **Quotas** | ✅ Per-dataset | ✅ VFS layer | ✅ Complete | +| **Compression** | ✅ LZ4/ZSTD | ✅ ZSTD | ✅ Complete | +| **Previous versions** | ✅ Shadow copy | ✅ VFS layer | ✅ Complete | +| **ACLs** | ✅ NFSv4/SMB | ⏳ Blocked | Requires smb-server crate extension | +| **Oplocks** | ✅ Samba handles | ⏳ Blocked | Requires smb-server protocol | +| **Dedup** | ✅ ZFS native | ⏳ Pending | Low priority | +| **RAID-Z** | ✅ ZFS native | ⏳ Pending | Low priority | + +--- + +**最后更新**:2026-06-20 +**版本**:1.37(SMB Previous Versions 完成) + +## Session Summary - 2026-06-20 ⭐⭐⭐⭐⭐ + +**Session Duration**: ~4 hours +**Commits**: 6 commits (f016525, 9c44bd5, 70cc6d9, 716eea7, 837ffa9) + +### Completed Tasks ✅ + +| Task | Priority | Status | Git Commit | +|------|----------|--------|------------| +| **SMB Snapshots** | High | ✅ Complete | f016525 | +| **SMB Quotas** | Medium | ✅ Complete | 9c44bd5 | +| **SMB Compression** | Medium | ✅ Complete | 70cc6d9 | +| **SMB Previous versions** | Medium | ✅ Complete | 837ffa9 | + +### Blocked Tasks ⏳ + +| Task | Priority | Status | Blocker | +|------|----------|--------|---------| +| **SMB ACLs** | High | ⏳ Blocked | Requires smb-server crate extension | +| **SMB Oplocks** | Medium | ⏳ Blocked | Requires smb-server protocol | + +### Pending Tasks (Low Priority) + +| Task | Priority | Status | +|------|----------|--------| +| **SMB Deduplication** | Low | ⏳ Pending | +| **SMB RAID-Z** | Low | ⏳ Pending | + +### Key Achievements ⭐⭐⭐⭐⭐ + +1. **ZFS-style SMB features at VFS layer**: Snapshots, Quotas, Compression, Previous versions all implemented +2. **GMT token conversion**: SystemTime → @GMT-YYYY.MM.DD-HH.MM.SS format +3. **Snapshot management**: Copy-on-write, metadata tracking, restoration +4. **Quota enforcement**: Space/file limits, soft limits, grace periods +5. **ZSTD compression**: Threshold filtering, transparent compression + +### Files Modified Summary + +``` +markbase-core/src/vfs/ +├── mod.rs (+100 lines) - VfsBackend trait extensions +├── local_fs.rs (+193 lines) - LocalFs implementations +├── compression.rs (134 lines) - NEW compression module +└── Cargo.toml (+1 line) - zstd dependency +``` + +### Test Results ✅ + +All 229 tests pass consistently across all features. + +### Next Steps Decision Required ⭐⭐⭐⭐⭐ + +**Blocked tasks require smb-server crate changes**: +- ACLs (NFSv4/SMB ACL support) +- Oplocks (opportunistic locking) + +**Options**: +1. ⭐⭐⭐⭐⭐ Implement ACLs at VFS layer (foundation for smb-server integration) +2. ⭐⭐⭐⭐ Skip blocked tasks, focus on low-priority dedup/RAID-Z +3. ⭐⭐⭐⭐ Ask user for other priorities (web frontend, SSH features, etc.) +4. ⭐⭐⭐ Create smb-server crate PR for ACL/Oplock support + +--- + +**最后更新**:2026-06-20 +**版本**:1.38(Session Summary Complete) + pub fn decompress(&self, data: &[u8]) -> Result, VfsError>; + pub fn should_compress(&self, size: u64) -> bool; +} +``` + ### 测试验证 ✅ ```bash