Skip to content
  • Warner Losh's avatar
    mpr: fix freeze / release mismatch in timeout code · a8837c77
    Warner Losh authored
    So, if we're processing a timeout, and we've sent an ABORT to the
    firmware for that timeout, but not yet received the response from the
    firmware, AND we get another timeout, we queue the timeout and freeze
    the queue. However, when we've finally processed them all, we only
    release the queue once. This causes all I/O to halt as the devq remains
    frozen forever.
    
    Instead, only freeze the queue when we start the process (eg set INRESET
    on the target). This will allow the release when all the timed out I/Os
    have finished ABORTing.
    
    Sponsored by:		Netflix
    Reviewed by:		mav
    Differential Revision:	https://reviews.freebsd.org/D33054
    a8837c77