Warren
d4f60929fa
SMB performance optimization: pread/pwrite, tokio::sync::Mutex, direct response, fast-path
...
- VfsFile trait: add read_at()/write_at() with seek+read default impl
- LocalFs: override with real pread/pwrite (FileExt::read_at/write_at) — 1 syscall vs 2
- smb_server_backend: use read_at/write_at + tokio::sync::Mutex (non-blocking async)
- read handler: build response directly, avoid Bytes→Vec<u8> copy + intermediate struct
- oplock break: fast-path skip when ≤1 open entry (single-user scenario)
2026-06-23 09:58:19 +08:00
Warren
21a9c3c6c4
Implement SMB 3.x Lease support Phase 1-2
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Phase 1: Open struct lease fields
- lease_key: Option<[u8; 16]> - LeaseKey GUID
- lease_state: Option<u32> - READ/HANDLE/WRITE flags
- lease_flags: Option<u32> - BREAKING etc.
Phase 2: LeaseManager
- LeaseEntry with lease_key/state/flags
- register/unregister/can_grant methods
- break_lease returns LeaseBreakNotification
- LeaseBreakNotification struct (MS-SMB2 §2.2.26)
ServerState: lease_manager field added
All 229 tests pass.
2026-06-21 01:20:18 +08:00
Warren
3cf503d05f
Implement Oplock Break Acknowledgement handler (MS-SMB2 §2.2.24)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Parse client's OPLOCK_BREAK_ACK
- Update Open.oplock_level in Open struct
- Update OplockManager entry via update_oplock_level()
- Return confirmation response
All 229 tests pass.
2026-06-21 01:15:21 +08:00
Warren
276308af12
Implement SMB Byte-range Lock (Phase 7)
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
- Add LockManager to oplock.rs:
- LockRange struct for tracking byte-range locks
- acquire() - check conflicts before granting lock
- release() - remove specific lock by offset/length
- clear() - clear all locks when file closed
- ranges_overlap() - helper for conflict detection
- Add LockManager to ServerState
- Update handlers/lock.rs:
- Parse LockRequest and LockElement
- Process each lock element (acquire/release)
- Support FLAG_EXCLUSIVE_LOCK, FLAG_SHARED_LOCK, FLAG_UNLOCK
- Return STATUS_LOCK_NOT_GRANTED on conflict
- Update handlers/close.rs:
- Clear all locks when file closed
- Add STATUS_LOCK_NOT_GRANTED to ntstatus.rs
All 229 tests pass.
2026-06-21 00:25:55 +08:00
Warren
27707bbe0e
Implement SMB Oplocks Phase 1-2
...
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Phase 1: Data structures
- Add oplock_level and share_access fields to Open struct
- Update Open::new() signature with new parameters
- Update handlers/create.rs to pass oplock params
Phase 2: OplockManager
- Create oplock.rs with OplockManager struct
- OplockEntry for tracking per-client oplock state
- can_grant() - check ShareAccess compatibility
- register() / unregister() - lifecycle management
- break_oplock() - generate OPLOCK_BREAK_NOTIFICATION
- Add OplockManager to ServerState
- Add Hash trait to SmbPath for HashMap key
All 229 tests pass.
2026-06-21 00:17:24 +08:00