• Jens Axboe's avatar
    cfq-iosched: cache prio_tree root in cfqq->p_root · f2d1f0ae
    Jens Axboe authored
    Currently we look it up from ->ioprio, but ->ioprio can change if
    either the process gets its IO priority changed explicitly, or if
    cfq decides to temporarily boost it. So if we are unlucky, we can
    end up attempting to remove a node from a different rbtree root than
    where it was added.
    
    Fix this by using ->org_ioprio as the prio_tree index, since that
    will only change for explicit IO priority settings (not for a boost).
    Additionally cache the rbtree root inside the cfqq, then we don't have
    to add code to reinsert the cfqq in the prio_tree if IO priority changes.
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    f2d1f0ae
cfq-iosched.c 63.6 KB