block: Don't call bdrv_eject() if the tray state didn't change
It's not needed. Besides we can then assume that bdrv_eject() is only called when there's a tray state change, which is useful to the DEVICE_TRAY_MOVED event (going to be added in a future commit). Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Acked-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									f36f394952
								
							
						
					
					
						commit
						d88b1819dd
					
				| 
						 | 
				
			
			@ -883,8 +883,11 @@ static void cmd_start_stop_unit(IDEState *s, uint8_t* buf)
 | 
			
		|||
            ide_atapi_cmd_error(s, sense, ASC_MEDIA_REMOVAL_PREVENTED);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        bdrv_eject(s->bs, !start);
 | 
			
		||||
        s->tray_open = !start;
 | 
			
		||||
 | 
			
		||||
        if (s->tray_open != !start) {
 | 
			
		||||
            bdrv_eject(s->bs, !start);
 | 
			
		||||
            s->tray_open = !start;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ide_atapi_cmd_ok(s);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1050,8 +1050,11 @@ static int scsi_disk_emulate_start_stop(SCSIDiskReq *r)
 | 
			
		|||
                                 : SENSE_CODE(NOT_READY_REMOVAL_PREVENTED));
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
        bdrv_eject(s->qdev.conf.bs, !start);
 | 
			
		||||
        s->tray_open = !start;
 | 
			
		||||
 | 
			
		||||
        if (s->tray_open != !start) {
 | 
			
		||||
            bdrv_eject(s->qdev.conf.bs, !start);
 | 
			
		||||
            s->tray_open = !start;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue