• Tatyana Brokhman's avatar
    block: row: Re-design urgent request notification mechanism · fe6fd2f8
    Tatyana Brokhman authored
    
    
    When ROW scheduler reports to the block layer that there is an urgent
    request pending, the device driver may decide to stop the transmission
    of the current request in order to handle the urgent one. This is done
    in order to reduce the latency of an urgent request. For example:
    long WRITE may be stopped to handle an urgent READ.
    
    This patch updates the ROW URGENT notification policy to apply with the
    below:
    
    - Don't notify URGENT if there is an un-completed URGENT request in driver
    - After notifying that URGENT request is present, the next request
      dispatched is the URGENT one.
    - At every given moment only 1 request can be marked as URGENT.
      Independent of it's location (driver or scheduler)
    
    Other changes to URGENT policy:
    - Only READ queues are allowed to notify of an URGENT request pending.
    
    CR fix:
    If a pending urgent request (A) gets merged with another request (B)
    A is removed from scheduler queue but is not removed from
    rd->pending_urgent_rq.
    
    CRs-Fixed: 453712
    Change-Id: I321e8cf58e12a05b82edd2a03f52fcce7bc9a900
    Signed-off-by: default avatarTatyana Brokhman <tlinder@codeaurora.org>
    fe6fd2f8
row-iosched.c 27.8 KB