qemu: use bdrv_flush_all for vm_stop et al
Reimplement bdrv_flush_all for vm_stop. In contrast to blk_flush_all, bdrv_flush_all does not have device model restrictions. This allows us to flush and halt unconditionally without error. This allows us to do things like migrate when we have a device with an open tray, but has a node that may need to be flushed, or nodes that aren't currently attached to any device and need to be flushed. Specifically, this allows us to migrate when we have a CDROM with an open tray. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Acked-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									4085f5c7a2
								
							
						
					
					
						commit
						22af08eacf
					
				
							
								
								
									
										4
									
								
								cpus.c
								
								
								
								
							
							
						
						
									
										4
									
								
								cpus.c
								
								
								
								
							| 
						 | 
					@ -751,7 +751,7 @@ static int do_vm_stop(RunState state)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bdrv_drain_all();
 | 
					    bdrv_drain_all();
 | 
				
			||||||
    replay_disable_events();
 | 
					    replay_disable_events();
 | 
				
			||||||
    ret = blk_flush_all();
 | 
					    ret = bdrv_flush_all();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1408,7 +1408,7 @@ int vm_stop_force_state(RunState state)
 | 
				
			||||||
        bdrv_drain_all();
 | 
					        bdrv_drain_all();
 | 
				
			||||||
        /* Make sure to return an error if the flush in a previous vm_stop()
 | 
					        /* Make sure to return an error if the flush in a previous vm_stop()
 | 
				
			||||||
         * failed. */
 | 
					         * failed. */
 | 
				
			||||||
        return blk_flush_all();
 | 
					        return bdrv_flush_all();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue