• Tejun Heo's avatar
    block, cfq: replace current_io_context() with create_io_context() · f2dbd76a
    Tejun Heo authored
    When called under queue_lock, current_io_context() triggers lockdep
    warning if it hits allocation path.  This is because io_context
    installation is protected by task_lock which is not IRQ safe, so it
    triggers irq-unsafe-lock -> irq -> irq-safe-lock -> irq-unsafe-lock
    deadlock warning.
    
    Given the restriction, accessor + creator rolled into one doesn't work
    too well.  Drop current_io_context() and let the users access
    task->io_context directly inside queue_lock combined with explicit
    creation using create_io_context().
    
    Future ioc updates will further consolidate ioc access and the create
    interface will be unexported.
    
    While at it, relocate ioc internal interface declarations in blk.h and
    add section comments before and after.
    
    This patch does not introduce functional change.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    f2dbd76a
cfq-iosched.c 104 KB