@@ -262,10 +262,19 @@ func (s MigrationVolumesService) VolumesSynced(ctx context.Context, vmState stat
262262 return false , fmt .Errorf ("kvvm or kvvmi is nil" )
263263 }
264264
265- migratable , _ := conditions .GetKVVMICondition (virtv1 .VirtualMachineInstanceIsMigratable , kvvmiInCluster .Status .Conditions )
266- if migratable .Status != corev1 .ConditionTrue {
267- log .Info ("VirtualMachine is not migratable, volumes are not synced yet." )
268- return false , nil
265+ readWriteOnceDisks , storageClassChangedDisks , err := s .getDisks (ctx , vmState )
266+ if err != nil {
267+ return false , err
268+ }
269+
270+ // Only check KubeVirt's LiveMigratable condition if there are non-hotplugged RWO disks
271+ // that require VD migration. Hotplugged RWO disks are handled by KubeVirt's block migration.
272+ if len (readWriteOnceDisks ) > 0 || len (storageClassChangedDisks ) > 0 {
273+ migratable , _ := conditions .GetKVVMICondition (virtv1 .VirtualMachineInstanceIsMigratable , kvvmiInCluster .Status .Conditions )
274+ if migratable .Status != corev1 .ConditionTrue {
275+ log .Info ("VirtualMachine is not migratable, volumes are not synced yet." )
276+ return false , nil
277+ }
269278 }
270279
271280 kvvmSynced := equality .Semantic .DeepEqual (builtKVVMWithMigrationVolumes .Spec .Template .Spec .Volumes , kvvmInCluster .Spec .Template .Spec .Volumes )
@@ -287,11 +296,6 @@ func (s MigrationVolumesService) VolumesSynced(ctx context.Context, vmState stat
287296 return false , nil
288297 }
289298
290- readWriteOnceDisks , storageClassChangedDisks , err := s .getDisks (ctx , vmState )
291- if err != nil {
292- return false , err
293- }
294-
295299 readWriteOnceDisksSynced := s .areDisksSynced (builtKVVMWithMigrationVolumes , readWriteOnceDisks )
296300 if ! readWriteOnceDisksSynced {
297301 log .Info ("ReadWriteOnce disks are not synced yet" )
0 commit comments