From a56594324c1affc0b5c026bc7fe276e325a84d67 Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Tue, 12 May 2026 17:42:20 +0200 Subject: [PATCH] vmm: move migration modules into folder On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster --- vmm/src/api/mod.rs | 2 +- vmm/src/lib.rs | 37 +++++++------------ vmm/src/{migration.rs => migration/mod.rs} | 3 ++ .../transport.rs} | 0 .../worker.rs} | 0 5 files changed, 17 insertions(+), 25 deletions(-) rename vmm/src/{migration.rs => migration/mod.rs} (98%) rename vmm/src/{migration_transport.rs => migration/transport.rs} (100%) rename vmm/src/{migration_worker.rs => migration/worker.rs} (100%) diff --git a/vmm/src/api/mod.rs b/vmm/src/api/mod.rs index e7dddcd0e..814675bb9 100644 --- a/vmm/src/api/mod.rs +++ b/vmm/src/api/mod.rs @@ -55,7 +55,7 @@ pub use self::http::{start_http_fd_thread, start_http_path_thread}; use crate::Error as VmmError; use crate::config::RestoreConfig; use crate::device_tree::DeviceTree; -use crate::migration_transport::{ +use crate::migration::transport::{ MAX_MIGRATION_CONNECTIONS, TcpAddressParseError, tcp_address_to_server_name, }; use crate::vm::{Error as VmError, VmState}; diff --git a/vmm/src/lib.rs b/vmm/src/lib.rs index 7af4dea0a..d2d219e7e 100644 --- a/vmm/src/lib.rs +++ b/vmm/src/lib.rs @@ -59,11 +59,11 @@ use crate::landlock::Landlock; use crate::memory_manager::MemoryManager; #[cfg(all(feature = "kvm", target_arch = "x86_64"))] use crate::migration::get_vm_snapshot; -use crate::migration::{recv_vm_config, recv_vm_state}; -use crate::migration_transport::{ - ReceiveAdditionalConnections, ReceiveListener, SendAdditionalConnections, SocketStream, +use crate::migration::transport::{ + self, ReceiveAdditionalConnections, ReceiveListener, SendAdditionalConnections, SocketStream, }; -use crate::migration_worker::{MigrationWorker, MigrationWorkerHandle, MigrationWorkerResult}; +use crate::migration::worker::{MigrationWorker, MigrationWorkerHandle, MigrationWorkerResult}; +use crate::migration::{recv_vm_config, recv_vm_state}; use crate::seccomp_filters::{Thread, get_seccomp_filter}; use crate::vm::{Error as VmError, Vm, VmState}; use crate::vm_config::{ @@ -89,8 +89,6 @@ pub mod interrupt; pub mod landlock; pub mod memory_manager; pub mod migration; -pub mod migration_transport; -mod migration_worker; mod pci_segment; pub mod seccomp_filters; mod serial_manager; @@ -1011,11 +1009,7 @@ impl Vmm { // When multiple TCP connections are configured, the worker connections carry // all memory commands and the main connection is used only for control traffic. Command::Memory => { - migration_transport::receive_memory_ranges( - &config_data.guest_memory, - req, - socket, - ) + transport::receive_memory_ranges(&config_data.guest_memory, req, socket) .inspect_err(|_| { // connections.cleanup() already logs all errors that occurred in one of the // threads. Furthermore, this path is only taken in the single-connection case, @@ -1469,13 +1463,13 @@ impl Vmm { let mut ctx = OngoingMigrationContext::new(); // Set up the socket connection - let mut socket = migration_transport::send_migration_socket( + let mut socket = transport::send_migration_socket( &send_data_migration.destination_url, send_data_migration.tls_dir.as_deref(), )?; // Start the migration - migration_transport::send_request_expect_ok( + transport::send_request_expect_ok( &mut socket, Request::start(), MigratableError::MigrateSend(anyhow!("Error starting migration")), @@ -1541,7 +1535,7 @@ impl Vmm { common_cpuid, memory_manager_data: vm.memory_manager_data(), }; - migration_transport::send_config(&mut socket, &vm_migration_config)?; + transport::send_config(&mut socket, &vm_migration_config)?; // Let every Migratable object know about the migration being started. vm.start_migration()?; @@ -1559,7 +1553,7 @@ impl Vmm { ) .expect("migration context should transition to VmPaused for local migration"); } else { - let mut mem_send = migration_transport::SendAdditionalConnections::new( + let mut mem_send = transport::SendAdditionalConnections::new( &send_data_migration.destination_url, send_data_migration.connections, send_data_migration.tls_dir.as_deref(), @@ -1596,17 +1590,13 @@ impl Vmm { // One final memory iteration to handle side effects from snapshot. if !send_data_migration.local { let memory_ranges = vm.dirty_log()?; - migration_transport::send_memory_ranges( - &vm.guest_memory(), - &memory_ranges, - &mut socket, - )?; + transport::send_memory_ranges(&vm.guest_memory(), &memory_ranges, &mut socket)?; } Ok(snapshot) })?; let (_, send_snapshot_duration) = - measure_ok(|| migration_transport::send_state(&mut socket, &vm_snapshot))?; + measure_ok(|| transport::send_state(&mut socket, &vm_snapshot))?; // Complete the migration. // When this returns, we know the VM was resumed (if it was running @@ -1618,7 +1608,7 @@ impl Vmm { Request::complete_paused() }; let (_, complete_duration) = measure_ok(|| { - migration_transport::send_request_expect_ok( + transport::send_request_expect_ok( &mut socket, complete_req, MigratableError::MigrateSend(anyhow!("Error completing migration")), @@ -2788,7 +2778,7 @@ impl RequestHandler for Vmm { receive_data_migration.tls_dir.is_some() ); - let mut listener = migration_transport::receive_migration_listener( + let mut listener = transport::receive_migration_listener( &receive_data_migration.receiver_url, receive_data_migration.tls_dir.as_deref(), )?; @@ -2798,7 +2788,6 @@ impl RequestHandler for Vmm { } event!("vm", "migration-receive-ready"); - // Accept the connection and get the socket let mut socket = listener.accept()?; diff --git a/vmm/src/migration.rs b/vmm/src/migration/mod.rs similarity index 98% rename from vmm/src/migration.rs rename to vmm/src/migration/mod.rs index 7046d838e..05b64cead 100644 --- a/vmm/src/migration.rs +++ b/vmm/src/migration/mod.rs @@ -14,6 +14,9 @@ use crate::coredump::GuestDebuggableError; use crate::vm::VmSnapshot; use crate::vm_config::VmConfig; +pub(crate) mod transport; +pub(crate) mod worker; + pub const SNAPSHOT_STATE_FILE: &str = "state.json"; pub const SNAPSHOT_CONFIG_FILE: &str = "config.json"; diff --git a/vmm/src/migration_transport.rs b/vmm/src/migration/transport.rs similarity index 100% rename from vmm/src/migration_transport.rs rename to vmm/src/migration/transport.rs diff --git a/vmm/src/migration_worker.rs b/vmm/src/migration/worker.rs similarity index 100% rename from vmm/src/migration_worker.rs rename to vmm/src/migration/worker.rs