• M
    block: Revert entanglement of bdrv_is_inserted() with tray status · a1aff5bf
    Markus Armbruster 提交于
    Commit 4be9762a changed bdrv_is_inserted() to fail when the tray is
    open.  Unfortunately, there are two different kinds of users, with
    conflicting needs.
    
    1. Device models using bdrv_eject(), currently ide-cd and scsi-cd.
    They expect bdrv_is_inserted() to reflect the tray status.  Commit
    4be9762a makes them happy.
    
    2. Code that wants to know whether a BlockDriverState has media, such
    as find_image_format(), bdrv_flush_all().  Commit 4be9762a makes them
    unhappy.  In particular, it breaks flush on VM stop for media ejected
    by the guest.
    
    Revert the change to bdrv_is_inserted().  Check the tray status in the
    device models instead.
    
    Note on IDE: Since only ATAPI devices have a tray, and they don't
    accept ATA commands since the recent commit "ide: Reject ATA commands
    specific to drive kinds", checking in atapi.c suffices.
    Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    a1aff5bf
block.c 90.5 KB