• J
    io-wq: check max_worker limits if a worker transitions bound state · ecc53c48
    Jens Axboe 提交于
    For the two places where new workers are created, we diligently check if
    we are allowed to create a new worker. If we're currently at the limit
    of how many workers of a given type we can have, then we don't create
    any new ones.
    
    If you have a mixed workload with various types of bound and unbounded
    work, then it can happen that a worker finishes one type of work and
    is then transitioned to the other type. For this case, we don't check
    if we are actually allowed to do so. This can cause io-wq to temporarily
    exceed the allowed number of workers for a given type.
    
    When retrieving work, check that the types match. If they don't, check
    if we are allowed to transition to the other type. If not, then don't
    handle the new work.
    
    Cc: stable@vger.kernel.org
    Reported-by: NJohannes Lundberg <johalun0@gmail.com>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    ecc53c48
io-wq.c 28.9 KB