macOS Time Machine AFP monitoring: backup_time update on file modification

- Added afp_monitor.rs module to track AFP_AfpInfo backup_time
- Open struct now has 'modified' flag to track file modifications
- write.rs sets modified=true on successful write
- close.rs calls AfpMonitor::update_backup_time() on modified files
- create.rs calls AfpMonitor::init_afp_info() on new file creation
- AFP_AfpInfo stored as xattr com.apple.aapl.AfpInfo
- backup_time updated to current epoch time on modification

Also includes:
- LZ4 compression using lz4_flex crate
- Case sensitivity conditional on backend capabilities
- LDAP cfg feature gate fix
- RAID rebuild reconstruction implementation
- DOS attributes xattr persistence
- Snapshot disk persistence

Tests: 201 smb-server, 452 markbase-core (653 total)
This commit is contained in:
Warren
2026-06-24 00:46:33 +08:00
parent 5300b672cb
commit 57fd6a475f
33 changed files with 1211 additions and 253 deletions

View File

@@ -38,7 +38,7 @@ async fn register_session(
));
state.active_connections.register(&conn).await;
let session = Session::new(1, identity, [0; 16], [0; 16], None, false, false, None);
let session = Session::new(1, identity, [0; 16], [0; 16], None, false, false, None, None);
let session = Arc::new(tokio::sync::RwLock::new(session));
let share = state.find_share(share_name).await.expect("share");
let tree = Arc::new(tokio::sync::RwLock::new(TreeConnect::new(

View File

@@ -224,6 +224,7 @@ impl Handle for MemHandle {
change_time: 0x01D9_0000_0000_0000,
is_directory: self.is_dir,
file_index: 0,
dos_attributes: 0,
})
}
@@ -267,6 +268,7 @@ impl Handle for MemHandle {
change_time: 0x01D9_0000_0000_0000,
is_directory: false,
file_index: 0,
dos_attributes: 0,
},
});
}
@@ -287,6 +289,7 @@ impl Handle for MemHandle {
change_time: 0x01D9_0000_0000_0000,
is_directory: true,
file_index: 0,
dos_attributes: 0,
},
});
}