mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-14 21:39:26 +00:00
runtime-rs: Enhance Copyfile to ensure existing contents synchronized
This commit is designed to perform a full sync before starting monitoring to ensure that files which exist before monitoring starts are also synced. Signed-off-by: Alex Lyn <alex.lyn@antgroup.com>
This commit is contained in:
@@ -160,10 +160,29 @@ impl FsWatcher {
|
||||
let inotify = self.inotify.clone();
|
||||
let monitor_config = self.config.clone();
|
||||
|
||||
// Perform a full sync before starting monitoring to ensure that files which exist before monitoring starts are also synced.
|
||||
let agent_sync = agent.clone();
|
||||
let src_sync = src.clone();
|
||||
let dst_sync = dst.clone();
|
||||
|
||||
tokio::spawn(async move {
|
||||
let mut buffer = [0u8; 4096];
|
||||
let mut last_event_time = None;
|
||||
|
||||
// Initial sync: ensure existing contents in the directory are synchronized
|
||||
{
|
||||
info!(
|
||||
sl!(),
|
||||
"Initial sync from {:?} to {:?}", &src_sync, &dst_sync
|
||||
);
|
||||
if let Err(e) =
|
||||
copy_dir_recursively(&src_sync, &dst_sync.display().to_string(), &agent_sync)
|
||||
.await
|
||||
{
|
||||
error!(sl!(), "Initial sync failed: {:?}", e);
|
||||
}
|
||||
}
|
||||
|
||||
loop {
|
||||
// use cloned inotify instance
|
||||
match inotify.lock().await.read_events(&mut buffer) {
|
||||
@@ -174,7 +193,8 @@ impl FsWatcher {
|
||||
| EventMask::MODIFY
|
||||
| EventMask::DELETE
|
||||
| EventMask::MOVED_FROM
|
||||
| EventMask::MOVED_TO,
|
||||
| EventMask::MOVED_TO
|
||||
| EventMask::CLOSE_WRITE,
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
Reference in New Issue
Block a user