• Nils Goroll's avatar
    buddy: fix buddy_reqs_wait_prio_adjust() · 42481d56
    Nils Goroll authored
    This fixes two bugs:
    
    The most relavant was that we did not increase buddy->wait_pri if the
    new priority was higher, which could lead to all kinds of weird effects,
    for example:
    
    - starvation/lock up
    - LRU removing all of the cache
    
    because there were requests waiting, but buddy_wait_work() did not see
    them.
    
    The second bug is that we also called buddy_wait_work() if there
    actually was no change (the critical region could find state ==
    IW_SIGNALLED).
    
    Also, for the new assertions, we need to set the proper wait_pri for the
    case that the priority is lowered.
    42481d56
buddy.c 65.3 KB