Skip to content
  • Alberto Garcia's avatar
    2f388b93
    throttle: Check current timers before updating any_timer_armed[] · 2f388b93
    Alberto Garcia authored
    
    
    Calling throttle_group_config() cancels all timers from a particular
    BlockDriverState, so any_timer_armed[] should be updated accordingly.
    
    However, with the current code it may happen that a timer is armed in
    a different BlockDriverState from the same group, so any_timer_armed[]
    would be set to false in a situation where there is still a timer
    armed.
    
    The consequence is that we might end up with two timers armed. This
    should not have any noticeable impact however, since all accesses to
    the ThrottleGroup are protected by a lock, and the situation would
    become normal again shortly thereafter as soon as all timers have been
    fired.
    
    The correct way to solve this is to check that we're actually
    cancelling a timer before updating any_timer_armed[].
    
    Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
    Message-id: 1434382875-3998-1-git-send-email-berto@igalia.com
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    2f388b93
    throttle: Check current timers before updating any_timer_armed[]
    Alberto Garcia authored
    
    
    Calling throttle_group_config() cancels all timers from a particular
    BlockDriverState, so any_timer_armed[] should be updated accordingly.
    
    However, with the current code it may happen that a timer is armed in
    a different BlockDriverState from the same group, so any_timer_armed[]
    would be set to false in a situation where there is still a timer
    armed.
    
    The consequence is that we might end up with two timers armed. This
    should not have any noticeable impact however, since all accesses to
    the ThrottleGroup are protected by a lock, and the situation would
    become normal again shortly thereafter as soon as all timers have been
    fired.
    
    The correct way to solve this is to check that we're actually
    cancelling a timer before updating any_timer_armed[].
    
    Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
    Message-id: 1434382875-3998-1-git-send-email-berto@igalia.com
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
Loading